Re: [PATCH 4/9] x86: Initialize 32bit logical apicid mapping earlyduring boot

From: Brian Gerst
Date: Thu Nov 11 2010 - 20:55:24 EST


On Thu, Nov 11, 2010 at 6:02 AM, Tejun Heo <tj@xxxxxxxxxx> wrote:
> On x86_32, non-standard logical apicid mapping can be used by
> different NUMA setups and the mapping is queried while bringing up
> each CPU using apic->cpu_to_logical_apicid() to build
> cpu_2_logical_apicid[] array. ÂThe logical apicid is then used to
> deliver IPIs and determine NUMA configuration.
>
> Unfortunately, initializing at SMP bring up is too late for percpu
> setup making static percpu variables setup w/o considering NUMA. ÂThis
> also is different from how x86_64 is configured making the code
> difficult to follow and maintain.
>
> This patch updates logical apicid mapping handling such that,
>
> * early_percpu variable x86_cpu_to_logical_apicid replaces
> Âcpu_2_logical_apicid[].

You are missing code in setup_percpu.c to copy the values from the
early array to the percpu variable. This isn't handled automatically.

Also make sure that any direct use of the percpu variable (ie. not via
early_per_cpu()) can happen only after percpu setup.

--
Brian Gerst
--
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/