Messages in this thread | | | Date | Wed, 12 Jan 2011 18:40:09 -0800 (PST) | From | David Rientjes <> | Subject | Re: [PATCH 05/16] x86: Always use x86_cpu_to_logical_apicid for cpu -> logical apic id |
| |
On Thu, 30 Dec 2010, Tejun Heo wrote:
> diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > index ba78b1e..8ad231c 100644 > --- a/arch/x86/kernel/apic/apic.c > +++ b/arch/x86/kernel/apic/apic.c > @@ -1252,6 +1252,14 @@ void __cpuinit setup_local_APIC(void) > */ > apic->init_apic_ldr(); > > +#ifdef CONFIG_X86_32 > + /* > + * APIC LDR is initialized. Fetch and store logical_apic_id. > + */ > + early_per_cpu(x86_cpu_to_logical_apicid, cpu) = > + logical_smp_processor_id(); > +#endif > + > /* > * Set Task Priority to 'accept all'. We never change this > * later on.
You can remove the initialization of x86_cpu_to_logical_apicid in the ->init_apic_ldr() callback in x2apic_cluster.c now too?
[snip]
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c > index eb04f30..0768761 100644 > --- a/arch/x86/kernel/smpboot.c > +++ b/arch/x86/kernel/smpboot.c > @@ -168,19 +168,18 @@ static void unmap_cpu_to_node(int cpu) > static void map_cpu_to_logical_apicid(void) > { > int cpu = smp_processor_id(); > - int apicid = logical_smp_processor_id(); > - int node = apic->apicid_to_node(apicid); > + int logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu); > + int node; > > + node = apic->apicid_to_node(logical_apicid); > if (!node_online(node)) > node = first_online_node; > > - early_per_cpu(x86_cpu_to_logical_apicid, cpu) = apicid; > map_cpu_to_node(cpu, node); > } > > void numa_remove_cpu(int cpu) > { > - early_per_cpu(x86_cpu_to_logical_apicid, cpu) = BAD_APICID; > unmap_cpu_to_node(cpu); > } > #else
I don't see where this is reset to BAD_APICID when numa_remove_cpu() is called when disabling a cpu after the patch.
| |