|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-4.1-testing] x86/apic: fix potential Protection Fau
# HG changeset patch
# User Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
# Date 1308167084 -3600
# Node ID d105e0a98b586583b17648026037a016bcf70912
# Parent 3d1a9facbc2806aaf2bb66d34ae9a03dcb665dd3
x86/apic: fix potential Protection Fault during shutdown
This is a rare case, but if the BIOS is set to uniprocessor, and Xen
is booted with 'lapic x2apic', Xen will switch into x2apic mode, which
will cause a protection fault when disabling the local APIC. This
leads to a general protection fault as this code is also in the fault
handler.
When x2apic mode is enabled, the only tranlsation which does
not result in a protection fault is to clear both the EN and EXTD
bits, which is safe to do in all cases, even if you are in xapic
mode rather than x2apic mode.
The linux code from which this is derrived is protected by an
if ( ! x2apic_mode ...) clause which is how they get away with it.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Acked-by: Jan Beulich <jbeulich@xxxxxxxxxx>
xen-unstable changeset: 23512:0feb98534a87
xen-unstable date: Tue Jun 14 12:47:45 2011 +0100
---
diff -r 3d1a9facbc28 -r d105e0a98b58 xen/arch/x86/apic.c
--- a/xen/arch/x86/apic.c Wed Jun 15 20:44:09 2011 +0100
+++ b/xen/arch/x86/apic.c Wed Jun 15 20:44:44 2011 +0100
@@ -351,7 +351,8 @@
if (enabled_via_apicbase) {
uint64_t msr_content;
rdmsrl(MSR_IA32_APICBASE, msr_content);
- wrmsrl(MSR_IA32_APICBASE, msr_content & ~MSR_IA32_APICBASE_ENABLE);
+ wrmsrl(MSR_IA32_APICBASE, msr_content &
+ ~(MSR_IA32_APICBASE_ENABLE|MSR_IA32_APICBASE_EXTD));
}
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-4.1-testing] x86/apic: fix potential Protection Fault during shutdown,
Xen patchbot-4 . 1-testing <=
|
|
|
|
|