[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |