aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk>2004-11-04 11:14:46 +0000
committercl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk>2004-11-04 11:14:46 +0000
commit6f0e7f057aa8ce5ad940a759f7be814b20bb7779 (patch)
treeda3d5479d9b4392b06dcd1c01e0c8f82be76b4e8
parentac7140a6997c507c2c8a4d807e9f9f42f0a22c49 (diff)
parent0ee10c9e4de13a021012f59cf4071878f4e9e2d2 (diff)
downloadxen-6f0e7f057aa8ce5ad940a759f7be814b20bb7779.tar.gz
xen-6f0e7f057aa8ce5ad940a759f7be814b20bb7779.tar.bz2
xen-6f0e7f057aa8ce5ad940a759f7be814b20bb7779.zip
bitkeeper revision 1.1159.1.367 (418a0f26eRgg15zg-e85Dwr0QF4BIw)
Merge freefall.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk into freefall.cl.cam.ac.uk:/auto/groups/xeno/users/cl349/BK/xeno.bk-nbsd
-rw-r--r--buildconfigs/mk.netbsd-2.0-xenU2
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/conf/XEN2
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/include/if_xennetvar.h4
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/include/xbdvar.h3
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/xen/clock.c2
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/xen/if_xennet.c11
-rw-r--r--netbsd-2.0-xen-sparse/sys/arch/xen/xen/xbd.c24
7 files changed, 42 insertions, 6 deletions
diff --git a/buildconfigs/mk.netbsd-2.0-xenU b/buildconfigs/mk.netbsd-2.0-xenU
index 53e02b739f..a34edb2c88 100644
--- a/buildconfigs/mk.netbsd-2.0-xenU
+++ b/buildconfigs/mk.netbsd-2.0-xenU
@@ -1,6 +1,6 @@
NETBSD_RELEASE ?= 2.0
-NETBSD_CVSSNAP ?= 20040906
+NETBSD_CVSSNAP ?= 20041103
EXTRAVERSION = xenU
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/conf/XEN b/netbsd-2.0-xen-sparse/sys/arch/xen/conf/XEN
index eece41d429..e9b2cd83a3 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/conf/XEN
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/conf/XEN
@@ -28,7 +28,7 @@ options I686_CPU
options INSECURE # disable kernel security levels - X needs this
options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
-#options NTP # NTP phase/frequency locked loop
+options NTP # NTP phase/frequency locked loop
options KTRACE # system call tracing via ktrace(1)
#options SYSTRACE # system call vetting via systrace(1)
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/include/if_xennetvar.h b/netbsd-2.0-xen-sparse/sys/arch/xen/include/if_xennetvar.h
index 5e84f5af86..da95163afd 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/include/if_xennetvar.h
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/include/if_xennetvar.h
@@ -94,6 +94,10 @@ struct xennet_softc {
union xennet_bufarray sc_rx_bufa[NETIF_TX_RING_SIZE];
SLIST_HEAD(, xennet_txbuf) sc_tx_bufs;
+
+#if NRND > 0
+ rndsource_element_t sc_rnd_source;
+#endif
};
struct xennet_attach_args {
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/include/xbdvar.h b/netbsd-2.0-xen-sparse/sys/arch/xen/include/xbdvar.h
index 089d365a0d..4a53ae71e2 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/include/xbdvar.h
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/include/xbdvar.h
@@ -42,6 +42,9 @@ struct xbd_softc {
struct dk_intf *sc_di; /* pseudo-disk interface */
struct simplelock sc_slock; /* our lock */
int sc_shutdown; /* about to be removed */
+#if NRND > 0
+ rndsource_element_t sc_rnd_source;
+#endif
};
struct xbd_attach_args {
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/clock.c b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/clock.c
index 2db3332d21..ef461d280a 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/clock.c
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/clock.c
@@ -184,7 +184,7 @@ startrtclock()
void
xen_delay(int n)
{
- u_int64_t when;
+ uint64_t when;
get_time_values_from_xen();
when = shadow_system_time + n * 1000;
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/if_xennet.c b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/if_xennet.c
index 1670da4ea3..9d8618923c 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/if_xennet.c
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/if_xennet.c
@@ -36,6 +36,7 @@
__KERNEL_RCSID(0, "$NetBSD: if_xennet.c,v 1.1.2.1 2004/05/22 15:58:29 he Exp $");
#include "opt_inet.h"
+#include "rnd.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -525,7 +526,7 @@ xennet_interface_status_change(netif_fe_interface_status_t *status)
ether_sprintf(sc->sc_enaddr));
#if NRND > 0
- rnd_attach_source(&sc->rnd_source, sc->sc_dev.dv_xname,
+ rnd_attach_source(&sc->sc_rnd_source, sc->sc_dev.dv_xname,
RND_TYPE_NET, 0);
#endif
break;
@@ -647,6 +648,10 @@ xen_network_handler(void *arg)
network_tx_buf_gc(sc);
+#if NRND > 0
+ rnd_add_uint32(&sc->sc_rnd_source, sc->sc_rx_resp_cons);
+#endif
+
again:
for (ringidx = sc->sc_rx_resp_cons;
ringidx != sc->sc_rx->resp_prod;
@@ -970,6 +975,10 @@ xennet_start(struct ifnet *ifp)
panic("%s: No packet to start", sc->sc_dev.dv_xname);
#endif
+#if NRND > 0
+ rnd_add_uint32(&sc->sc_rnd_source, sc->sc_tx->req_prod);
+#endif
+
if ((ifp->if_flags & (IFF_RUNNING | IFF_OACTIVE)) != IFF_RUNNING)
return;
diff --git a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/xbd.c b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/xbd.c
index a8034a2116..23a96241d3 100644
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/xen/xbd.c
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/xen/xbd.c
@@ -36,6 +36,7 @@
__KERNEL_RCSID(0, "$NetBSD: xbd.c,v 1.9.2.1 2004/05/22 15:59:11 he Exp $");
#include "xbd.h"
+#include "rnd.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -61,6 +62,10 @@ __KERNEL_RCSID(0, "$NetBSD: xbd.c,v 1.9.2.1 2004/05/22 15:59:11 he Exp $");
#include <uvm/uvm.h>
+#if NRND > 0
+#include <sys/rnd.h>
+#endif
+
#include <dev/dkvar.h>
#include <machine/xbdvar.h>
@@ -1002,6 +1007,11 @@ xbd_attach(struct device *parent, struct device *self, void *aux)
NULL, 0, &xs->sc_xd_device, 0,
CTL_CREATE, CTL_EOL);
}
+
+#if NRND > 0
+ rnd_attach_source(&xs->sc_rnd_source, xs->sc_dev.dv_xname,
+ RND_TYPE_DISK, 0);
+#endif
}
static int
@@ -1231,10 +1241,15 @@ xbdresume(void)
if (pxr->xr_aligned)
unmap_align(pxr);
PUT_XBDREQ(pxr);
- if (xs)
+ if (xs) {
disk_unbusy(&xs->sc_dksc.sc_dkdev,
(bp->b_bcount - bp->b_resid),
(bp->b_flags & B_READ));
+#if NRND > 0
+ rnd_add_uint32(&xs->sc_rnd_source,
+ bp->b_blkno);
+#endif
+ }
biodone(bp);
}
continue;
@@ -1405,10 +1420,15 @@ xbd_response_handler(void *arg)
unmap_align(pxr);
PUT_XBDREQ(pxr);
- if (xs)
+ if (xs) {
disk_unbusy(&xs->sc_dksc.sc_dkdev,
(bp->b_bcount - bp->b_resid),
(bp->b_flags & B_READ));
+#if NRND > 0
+ rnd_add_uint32(&xs->sc_rnd_source,
+ bp->b_blkno);
+#endif
+ }
biodone(bp);
if (!SIMPLEQ_EMPTY(&xbdr_suspended))
xbdresume();