hvm: Fix PV-on-HVM drivers to not execuite hypercall page while it is

being re-initialised.
Signed-off-by: Edwin Zhai <edwin.zhai@intel.com>
This commit is contained in:
kfraser@localhost.localdomain committed 2007-08-06 11:16:14 +01:00
1 parent b12c493fd8
commit 647f41c70d
1 file changed
+10
@@ -11,6 +11,12 @@ 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);
/*
* Spinning prevents, for example, APs touching grant table entries while
* the shared grant table is not mapped into the address space imemdiately
@@ -27,7 +33,9 @@ static void ap_suspend(void *_info)
while (info->do_spin) {
cpu_relax();
read_lock(&suspend_lock);
HYPERVISOR_yield();
read_unlock(&suspend_lock);
}
mb();
@@ -43,7 +51,9 @@ static int bp_suspend(void)
suspend_cancelled = HYPERVISOR_shutdown(SHUTDOWN_suspend);
if (!suspend_cancelled) {
write_lock(&suspend_lock);
platform_pci_resume();
write_unlock(&suspend_lock);
gnttab_resume();
irq_resume();
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.