lkml.org 
[lkml]   [2011]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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.


\
 
 \ /
  Last update: 2011-01-13 03:43    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site