aboutsummaryrefslogtreecommitdiffstats
path: root/unmodified_drivers
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-10-21 10:04:40 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-10-21 10:04:40 +0100
commitd24bdba9b96d862afc0a5c26d8e46a13c37bf4b7 (patch)
tree42fe8f98aa423685184eaf5d99bb618b6b10acc4 /unmodified_drivers
parent519c6bedbf32f92042df4e445ebb2b3a6be91d0f (diff)
downloadxen-d24bdba9b96d862afc0a5c26d8e46a13c37bf4b7.tar.gz
xen-d24bdba9b96d862afc0a5c26d8e46a13c37bf4b7.tar.bz2
xen-d24bdba9b96d862afc0a5c26d8e46a13c37bf4b7.zip
pv-on-hvm: Avoid rwlock livelock on save/restore.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'unmodified_drivers')
-rw-r--r--unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
index 92b64e2589..08bf645ef7 100644
--- a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
+++ b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
@@ -11,12 +11,6 @@ struct ap_suspend_info {
atomic_t nr_spinning;
};
-/*
- * Use a rwlock to protect the hypercall page from being executed in AP context
- * while the BSP is re-initializing it after restore.
- */
-static DEFINE_RWLOCK(suspend_lock);
-
#ifdef CONFIG_SMP
/*
@@ -33,12 +27,8 @@ static void ap_suspend(void *_info)
atomic_inc(&info->nr_spinning);
mb();
- while (info->do_spin) {
+ while (info->do_spin)
cpu_relax();
- read_lock(&suspend_lock);
- HYPERVISOR_yield();
- read_unlock(&suspend_lock);
- }
mb();
atomic_dec(&info->nr_spinning);
@@ -61,9 +51,7 @@ static int bp_suspend(void)
suspend_cancelled = HYPERVISOR_suspend(0);
if (!suspend_cancelled) {
- write_lock(&suspend_lock);
platform_pci_resume();
- write_unlock(&suspend_lock);
gnttab_resume();
irq_resume();
}