[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] kexec: switch to a known good/static GDT before kexec
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1246547832 -3600 # Node ID ddf8e5917a12027af82adc599469ac59da1635e2 # Parent 82b0f51763777b4039b2c0889f1b139059dcdb39 kexec: switch to a known good/static GDT before kexec kexec has been failing (at least on 32on64, didn't try others) since 18771:8e18dd41c6c7 "x86: reduce GDT switching". Ensure that we are using a known good GDT before attempting to switch to compatability mode. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> xen-unstable changeset: 19885:863ae334467c xen-unstable date: Thu Jul 02 16:16:15 2009 +0100 --- xen/arch/x86/machine_kexec.c | 12 ++++++++++++ 1 files changed, 12 insertions(+) diff -r 82b0f5176377 -r ddf8e5917a12 xen/arch/x86/machine_kexec.c --- a/xen/arch/x86/machine_kexec.c Thu Jul 02 11:38:18 2009 +0100 +++ b/xen/arch/x86/machine_kexec.c Thu Jul 02 16:17:12 2009 +0100 @@ -115,6 +115,18 @@ void machine_reboot_kexec(xen_kexec_imag void machine_kexec(xen_kexec_image_t *image) { + struct desc_ptr gdt_desc = { + .base = (unsigned long)(boot_cpu_gdt_table - FIRST_RESERVED_GDT_ENTRY), + .limit = LAST_RESERVED_GDT_BYTE + }; + + /* + * compat_machine_kexec() returns to idle pagetables, which requires us + * to be running on a static GDT mapping (idle pagetables have no GDT + * mappings in their per-domain mapping area). + */ + asm volatile ( "lgdt %0" : : "m" (gdt_desc) ); + #ifdef CONFIG_COMPAT if ( is_pv_32on64_domain(dom0) ) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |