summaryrefslogtreecommitdiffstats
path: root/sys/xen
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2009-04-01 17:06:28 +0000
committerdfr <dfr@FreeBSD.org>2009-04-01 17:06:28 +0000
commitdf0ed71781b42b3334d3cf4200cf60ae4eb0ec19 (patch)
tree5494350917ada193418eaf287c32a9c53171fa67 /sys/xen
parentce3adf17d25ae823e1c74998576355f7da16fe40 (diff)
downloadFreeBSD-src-df0ed71781b42b3334d3cf4200cf60ae4eb0ec19.zip
FreeBSD-src-df0ed71781b42b3334d3cf4200cf60ae4eb0ec19.tar.gz
Fix the Xen build for i386 PV mode.
Diffstat (limited to 'sys/xen')
-rw-r--r--sys/xen/evtchn/evtchn.c2
-rw-r--r--sys/xen/reboot.c8
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/xen/evtchn/evtchn.c b/sys/xen/evtchn/evtchn.c
index 61b738b..59d24b2 100644
--- a/sys/xen/evtchn/evtchn.c
+++ b/sys/xen/evtchn/evtchn.c
@@ -512,7 +512,7 @@ bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain,
int
bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
const char *devname, driver_filter_t filter, driver_intr_t handler,
- unsigned long irqflags, unsigned int *irqp)
+ void *arg, unsigned long irqflags, unsigned int *irqp)
{
unsigned int irq;
int error;
diff --git a/sys/xen/reboot.c b/sys/xen/reboot.c
index 892dfbf..04ba132 100644
--- a/sys/xen/reboot.c
+++ b/sys/xen/reboot.c
@@ -176,9 +176,9 @@ xen_suspend()
/*
* Bind us to CPU 0 and stop any other VCPUs.
*/
- mtx_lock_spin(&sched_lock);
+ thread_lock(curthread);
sched_bind(curthread, 0);
- mtx_unlock_spin(&sched_lock);
+ thread_unlock(curthread);
KASSERT(PCPU_GET(cpuid) == 0, ("xen_suspend: not running on cpu 0"));
map = PCPU_GET(other_cpus) & ~stopped_cpus;
@@ -188,8 +188,10 @@ xen_suspend()
if (DEVICE_SUSPEND(root_bus) != 0) {
printf("xen_suspend: device_suspend failed\n");
+#ifdef SMP
if (map)
restart_cpus(map);
+#endif
return;
}
@@ -253,7 +255,9 @@ xen_suspend()
DEVICE_RESUME(root_bus);
#ifdef SMP
+ thread_lock(curthread);
sched_unbind(curthread);
+ thread_unlock(curthread);
if (map)
restart_cpus(map);
#endif
OpenPOWER on IntegriCloud