|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] hvmloader: Do not zero the wallclock fields in shared-info.
# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1347648477 -3600
# Node ID 12fa949b90603f057d458e370284471412afb0ba
# Parent a177725aa49228be5c9dcb9b5a99b890d979334f
hvmloader: Do not zero the wallclock fields in shared-info.
These fields need to be valid at all times. Hypervisor ensures this
even across 32/64-bit guest transitions.
This fixes a bug where wallclock time is incorrect for booting 32-bit
HVM guests.
This should be backported to Xen 4.1 and 4.2.
Signed-off-by: Keir Fraser <keir@xxxxxxx>
Tested-and-Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
diff -r a177725aa492 -r 12fa949b9060 tools/firmware/hvmloader/xenbus.c
--- a/tools/firmware/hvmloader/xenbus.c Fri Sep 14 14:30:23 2012 +0200
+++ b/tools/firmware/hvmloader/xenbus.c Fri Sep 14 19:47:57 2012 +0100
@@ -64,6 +64,8 @@ void xenbus_setup(void)
/* Reset the xenbus connection so the next kernel can start again. */
void xenbus_shutdown(void)
{
+ struct shared_info *shinfo = get_shared_info();
+
ASSERT(rings != NULL);
/* We zero out the whole ring -- the backend can handle this, and it's
@@ -72,7 +74,9 @@ void xenbus_shutdown(void)
memset(rings, 0, sizeof *rings);
/* Clear the event-channel state too. */
- memset(get_shared_info(), 0, PAGE_SIZE);
+ memset(shinfo->vcpu_info, 0, sizeof(shinfo->vcpu_info));
+ memset(shinfo->evtchn_pending, 0, sizeof(shinfo->evtchn_pending));
+ memset(shinfo->evtchn_mask, 0, sizeof(shinfo->evtchn_mask));
rings = NULL;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |