RE: Why Linux kernel forced to enter X2APIC mode( just because ofbooting cpu has supported x2apic) without depending on BIOS' setting inMSR->x2apic enablement bit ?

From: Zhang, Lin-Bao (Linux Kernel R&D)
Date: Wed Dec 19 2012 - 05:14:44 EST


Hi Yinghai ,
Thanks very much for your reply. I also checked some other previous emails about x2apic patches.

> From: yhlu.kernel@xxxxxxxxx [mailto:yhlu.kernel@xxxxxxxxx] On Behalf Of
> Yinghai Lu

I just worry about this case,
> > b) If BIOS feel the system doesn't meet x2apic conditions , it will not set
> x2apic enablement bit in MSR ,and pass control to OS with xapic mode.
>
> kernel will check if cpuid support x2apic, if it supports x2apic, it will check if
> DMAR/intr-remapping could be enabled, if so kernel will switch to x2apic.
> otherwise it will stay with xapic.
>
> So you need to make cpuid show does not support x2apic --- check with intel
> they have way to do that.
My concerns is BIOS creates different ACPI tables in xAPIC mode and X2APIC mode.
BIOS will auto detect if the system meets x2APIC condition , if no , it will not create right ACPI tables for this mode and don't set MSR bit.
For this case (BIOS didn't set MSR , but BSP supports x2apic ) , I want to know
1, For Linux kernel, which ACPI tables will be used for x2apic and XAPIC ?
2, why Linux kernel will set x2apic enablement bit in CPU msr ? generally speaking , BIOS set it and OS get it.
If OS get it , who will read it ? BIOS ? I consult BIOS designer , he said , their BIOS calling service(just like UEFI run time service)
will also judge MSR again , so I don't know why Linux kernel will set MSR bit , unless OS has special target .

> or you can pass "nox2apic" in boot command line.
Yeah, I think this would be fine if we really want to use xAPIC mode instead of x2apic mode.
But I am puzzled why Linux kernel will force to enter x2apic just depends on BSP has supported x2apic ?
"BSP supports x2apic" condition is enough for judging if OS can enable x2apic ?


Thanks very much !

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/