[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Make sure SYNC per-processor structures are zeroed after resume



Since the per-processor data in the SYNC code was split out from the
main context structure, the code that zeroes that structure on resume
no longer clears the per-processor Exit flag. This means that a multi-
vcpu VM can only be suspended once; subsequent attempts will fail.
This patch fixes the problem by zeroing the full page containing the SYNC
context structure and any per-processor data.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 src/xenbus/sync.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/xenbus/sync.c b/src/xenbus/sync.c
index 835b46b..661aabe 100644
--- a/src/xenbus/sync.c
+++ b/src/xenbus/sync.c
@@ -255,7 +255,7 @@ SyncCapture(
 
     Trace("====> (%u:%u)\n", Group, Number);
 
-    ASSERT(IsZeroMemory(Context, sizeof (SYNC_CONTEXT)));
+    ASSERT(IsZeroMemory(Context, PAGE_SIZE));
 
     Context->Sequence++;
     Context->CompletionCount = 0;
@@ -427,7 +427,7 @@ SyncRelease(
         KeMemoryBarrier();
     }
 
-    RtlZeroMemory(Context, sizeof (SYNC_CONTEXT));
+    RtlZeroMemory(Context, PAGE_SIZE);
 
     Index = KeGetCurrentProcessorNumberEx(NULL);
     __SyncRelease(Index);
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.