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: Yinghai Lu
Date: Tue Dec 18 2012 - 12:49:21 EST


On Tue, Dec 18, 2012 at 1:50 AM, Zhang, Lin-Bao (Linux Kernel R&D)
<linbao.zhang@xxxxxx> wrote:
> Hi Suresh and other guys ,
>
> In 3.4.4/3.6.6 ,I found a x2apic issue . if I am wrong , sorry first , and welcome your correction . thanks for your forwarding other maintainers.
> I am testing a server , its BIOS is like this:
> a) If BIOS think the system is of x2apic , it will set x2apic enablement bit in MSR and create x2apic ACPI tables and pass control to OS with x2apic mode

kernel will check if DMAR table is right or not, if intr-remapping
could be enabled, kernel will stay with x2apic.
if intr-remapping can not be enabled (bad dmar table), kernel will
switch back to xapic mode, but if BSP's X2APIC is
bigger than 255, then you will get kernel panic.

> 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.
or you can pass "nox2apic" in boot command line.

Yinghai
--
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/