Re: [PATCH] Use x2apic_supported() in the default_apic_id_valid() function.

From: Yinghai Lu
Date: Thu Mar 15 2012 - 22:09:01 EST


On Thu, Mar 15, 2012 at 2:21 PM, Suresh Siddha
<suresh.b.siddha@xxxxxxxxx> wrote:
> On Thu, 2012-03-15 at 13:23 -0700, Yinghai Lu wrote:
>> On Thu, Mar 15, 2012 at 11:03 AM, Steffen Persvold <sp@xxxxxxxxxxxxx> wrote:
>> > Use x2apic_supported() in the default_apic_id_valid() function. If x2apic mode is disabled (via nox2apic for example), x2apic_supported() will return false.
>> >
>> > This allows us to substitute the check in arch/x86/kernel/acpi/boot.c::acpi_parse_x2apic and avoid feigning the x2apic cpu feature in the NumaChip apic code.
>> >
>> > Signed-off-by: Steffen Persvold <sp@xxxxxxxxxxxxx>
>> > Reviewed-by: Daniel J Blueman <daniel@xxxxxxxxxxxxxxxxxx>
>>
>> I double checked on system with x2apic preenabled,
>> nox2apic in boot command line still works well and it
>> skips starting APs with apic id > 255.
>>
>> Acked-by: Yinghai Lu <yinghai@xxxxxxxxxx>
>
> This breaks the smpboot check if enabling interrupt-remapping/x2apic
> fails on a platform. We will be in xapic mode and we don't clear the
> x2apic cpufeature bit in this case and as such smpboot check will fail.

two cases:
A: x2apic is pre-enabled, and some apic id > 255
B: x2apic is not pre-enabled, but x2apic capable, suppose all apic id < 255.

in case A: if nox2apic is passed, or dmar table is not there or
intr-remap can not be enabled.
that feature bit will be cleared. So check cpu_has_x2apic is enough there.

in case B: if can not enable x2apic, the feature is not cleared, but
apic id already < 255.
so that check will pass too.

So it should not break the smpboot check.

>
> So this change breaks the commit
> c284b42abadbb22083bfde24d308899c08d44ffa.
>
> I think the right thing is to have two different apid_id_valid checks
> one for xapic driver (apic_flat_64.c) and another for x2apic driver
> (x2apic_phys/cluster.c) and that way, x2apic MADT entries will be parsed
> only if bios has handed over the OS in x2apic mode or if we have
> selected the numachip model.

that looks like more clear.

Thanks

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/