45 lines
1.7 KiB
Diff
45 lines
1.7 KiB
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir.fraser@citrix.com>
|
|
# Date 1231930578 0
|
|
# Node ID 3fb43f23f64ccc1687d1dc348a9eb454397d4887
|
|
# Parent 59274c49a0298fd73f60759c0842a293b5816057
|
|
x86: propagate disabled APIC state to Dom0
|
|
|
|
This in particular eliminates the need to specify "noapic" to Dom0
|
|
when "noapic" is passed to Xen, provided the kernel side gets slightly
|
|
modified to make use of this information (Linux side patch cannot
|
|
easily be provided for the 2.6.18 tree, but this is being used by our
|
|
2.6.27-based one).
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
|
|
|
--- a/xen/arch/x86/traps.c
|
|
+++ b/xen/arch/x86/traps.c
|
|
@@ -711,6 +711,8 @@ static void pv_cpuid(struct cpu_user_reg
|
|
{
|
|
/* Modify Feature Information. */
|
|
__clear_bit(X86_FEATURE_VME, &d);
|
|
+ if ( !cpu_has_apic )
|
|
+ __clear_bit(X86_FEATURE_APIC % 32, &d);
|
|
__clear_bit(X86_FEATURE_PSE, &d);
|
|
__clear_bit(X86_FEATURE_PGE, &d);
|
|
__clear_bit(X86_FEATURE_MCE, &d);
|
|
@@ -742,6 +744,8 @@ static void pv_cpuid(struct cpu_user_reg
|
|
__clear_bit(X86_FEATURE_XTPR % 32, &c);
|
|
__clear_bit(X86_FEATURE_PDCM % 32, &c);
|
|
__clear_bit(X86_FEATURE_DCA % 32, &c);
|
|
+ if ( !cpu_has_apic )
|
|
+ __clear_bit(X86_FEATURE_X2APIC % 32, &c);
|
|
__set_bit(X86_FEATURE_HYPERVISOR % 32, &c);
|
|
break;
|
|
case 0x80000001:
|
|
@@ -760,6 +764,8 @@ static void pv_cpuid(struct cpu_user_reg
|
|
__clear_bit(X86_FEATURE_RDTSCP % 32, &d);
|
|
|
|
__clear_bit(X86_FEATURE_SVME % 32, &c);
|
|
+ if ( !cpu_has_apic )
|
|
+ __clear_bit(X86_FEATURE_EXTAPICSPACE % 32, &c);
|
|
__clear_bit(X86_FEATURE_OSVW % 32, &c);
|
|
__clear_bit(X86_FEATURE_IBS % 32, &c);
|
|
__clear_bit(X86_FEATURE_SKINIT % 32, &c);
|