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

[Xen-changelog] [xen-unstable] x86: fix dom0 S3 when x2apic is used.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1268910145 0
# Node ID 7751288b1386e530f65c5a2ea3e1616bb50e34ef
# Parent  84c563da39c81ba0fe32aab37835c2ba54811319
x86: fix dom0 S3 when x2apic is used.

1) Some variables and functions in xen/arch/x86/genapic/x2apic.c
should not be marked with __init* as they will be used during s3
resume;
2) In do_suspend_lowlevel -> restore_rest_processor_state ->
mcheck_init, lapic is accessed, but x2apic hasn't been re-enabled yet
(x2apic is re-enabled() in device_power_up -> lapic_resume). The patch
moves mcheck_init to a later place.

Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>
---
 xen/arch/x86/acpi/power.c     |    2 ++
 xen/arch/x86/acpi/suspend.c   |    1 -
 xen/arch/x86/genapic/x2apic.c |    8 ++++----
 3 files changed, 6 insertions(+), 5 deletions(-)

diff -r 84c563da39c8 -r 7751288b1386 xen/arch/x86/acpi/power.c
--- a/xen/arch/x86/acpi/power.c Thu Mar 18 07:44:21 2010 +0000
+++ b/xen/arch/x86/acpi/power.c Thu Mar 18 11:02:25 2010 +0000
@@ -207,6 +207,8 @@ static int enter_state(u32 state)
 
     device_power_up();
 
+    mcheck_init(&boot_cpu_data);
+
     printk(XENLOG_INFO "Finishing wakeup from ACPI S%d state.\n", state);
 
     if ( (state == ACPI_STATE_S3) && error )
diff -r 84c563da39c8 -r 7751288b1386 xen/arch/x86/acpi/suspend.c
--- a/xen/arch/x86/acpi/suspend.c       Thu Mar 18 07:44:21 2010 +0000
+++ b/xen/arch/x86/acpi/suspend.c       Thu Mar 18 11:02:25 2010 +0000
@@ -82,5 +82,4 @@ void restore_rest_processor_state(void)
         wrmsrl(MSR_IA32_CR_PAT, host_pat);
 
     mtrr_bp_restore();
-    mcheck_init(&boot_cpu_data);
 }
diff -r 84c563da39c8 -r 7751288b1386 xen/arch/x86/genapic/x2apic.c
--- a/xen/arch/x86/genapic/x2apic.c     Thu Mar 18 07:44:21 2010 +0000
+++ b/xen/arch/x86/genapic/x2apic.c     Thu Mar 18 11:02:25 2010 +0000
@@ -23,19 +23,19 @@
 #include <xen/smp.h>
 #include <asm/mach-default/mach_mpparse.h>
 
-static int __initdata x2apic = 1;
+static int x2apic = 1;
 boolean_param("x2apic", x2apic);
 
-static int __initdata x2apic_phys; /* By default we use logical cluster mode. 
*/
+static int  x2apic_phys; /* By default we use logical cluster mode. */
 boolean_param("x2apic_phys", x2apic_phys);
 
-static int __init probe_x2apic_phys(void)
+static int probe_x2apic_phys(void)
 {
     return x2apic && x2apic_phys && x2apic_is_available() &&
         iommu_supports_eim();
 }
 
-static int __init probe_x2apic_cluster(void)
+static int probe_x2apic_cluster(void)
 {
     return x2apic && !x2apic_phys && x2apic_is_available() &&
         iommu_supports_eim();

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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