Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=602a54a8cab2759fceb20b3e0c2a27c4eac005df Commit: 602a54a8cab2759fceb20b3e0c2a27c4eac005df Parent: 0164fe16247ac2e1b697a9bf0e71df81497c4709 Author: [EMAIL PROTECTED] <[EMAIL PROTECTED]> AuthorDate: Wed Jan 30 13:33:21 2008 +0100 Committer: Ingo Molnar <[EMAIL PROTECTED]> CommitDate: Wed Jan 30 13:33:21 2008 +0100
x86: change bios_cpu_apicid to percpu data variable fixup Change static bios_cpu_apicid array to a per_cpu data variable. This includes using a static array used during initialization similar to the way x86_cpu_to_apicid[] is handled. There is one early use of bios_cpu_apicid in apic_is_clustered_box(). The other reference in cpu_present_to_apicid() is called after smp_set_apicids() has setup the percpu version of bios_cpu_apicid. Signed-off-by: Mike Travis <[EMAIL PROTECTED]> Reviewed-by: Christoph Lameter <[EMAIL PROTECTED]> Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]> Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]> --- arch/x86/kernel/apic_64.c | 6 +++--- arch/x86/kernel/setup64.c | 13 ++++++++----- arch/x86/kernel/setup_64.c | 1 + arch/x86/kernel/smpboot_32.c | 2 +- arch/x86/mm/srat_64.c | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index a7a38c9..d8d03e0 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c @@ -1205,9 +1205,9 @@ __cpuinit int apic_is_clustered_box(void) /* Problem: Partially populated chassis may not have CPUs in some of * the APIC clusters they have been allocated. Only present CPUs have - * x86_bios_cpu_apicid entries, thus causing zeroes in the bitmap. Since - * clusters are allocated sequentially, count zeros only if they are - * bounded by ones. + * x86_bios_cpu_apicid entries, thus causing zeroes in the bitmap. + * Since clusters are allocated sequentially, count zeros only if + * they are bounded by ones. */ clusters = 0; zeros = 0; diff --git a/arch/x86/kernel/setup64.c b/arch/x86/kernel/setup64.c index 855ec82..0389331 100644 --- a/arch/x86/kernel/setup64.c +++ b/arch/x86/kernel/setup64.c @@ -85,10 +85,10 @@ __setup("noexec32=", nonx32_setup); /* * Copy data used in early init routines from the initial arrays to the - * per cpu data areas. These arrays then become expendable and the *_ptrs - * are zeroed indicating that the static arrays are gone. + * per cpu data areas. These arrays then become expendable and the + * *_early_ptr's are zeroed indicating that the static arrays are gone. */ -void __init setup_percpu_maps(void) +static void __init setup_per_cpu_maps(void) { int cpu; @@ -98,6 +98,8 @@ void __init setup_percpu_maps(void) #endif per_cpu(x86_cpu_to_apicid, cpu) = x86_cpu_to_apicid_init[cpu]; + per_cpu(x86_bios_cpu_apicid, cpu) = + x86_bios_cpu_apicid_init[cpu]; #ifdef CONFIG_NUMA per_cpu(x86_cpu_to_node_map, cpu) = x86_cpu_to_node_map_init[cpu]; @@ -110,8 +112,9 @@ void __init setup_percpu_maps(void) #endif } - /* indicate the early static arrays are gone */ + /* indicate the early static arrays will soon be gone */ x86_cpu_to_apicid_early_ptr = NULL; + x86_bios_cpu_apicid_early_ptr = NULL; #ifdef CONFIG_NUMA x86_cpu_to_node_map_early_ptr = NULL; #endif @@ -152,7 +155,7 @@ void __init setup_per_cpu_areas(void) } /* setup percpu data maps early */ - setup_percpu_maps(); + setup_per_cpu_maps(); } void pda_init(int cpu) diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 79635b7..f84e266 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c @@ -334,6 +334,7 @@ void __init setup_arch(char **cmdline_p) #ifdef CONFIG_SMP /* setup to use the early static init tables during kernel startup */ x86_cpu_to_apicid_early_ptr = (void *)&x86_cpu_to_apicid_init; + x86_bios_cpu_apicid_early_ptr = (void *)&x86_bios_cpu_apicid_init; #ifdef CONFIG_NUMA x86_cpu_to_node_map_early_ptr = (void *)&x86_cpu_to_node_map_init; #endif diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 50232d4..915ec62 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c @@ -465,7 +465,7 @@ cpumask_t node_to_cpumask_map[MAX_NUMNODES] __read_mostly = { [0 ... MAX_NUMNODES-1] = CPU_MASK_NONE }; EXPORT_SYMBOL(node_to_cpumask_map); /* which node each logical CPU is on */ -u8 cpu_to_node_map[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = 0 }; +int cpu_to_node_map[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = 0 }; EXPORT_SYMBOL(cpu_to_node_map); /* set up a mapping between cpu and node. */ diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c index f828e6a..4aed38f 100644 --- a/arch/x86/mm/srat_64.c +++ b/arch/x86/mm/srat_64.c @@ -397,7 +397,7 @@ int __init acpi_scan_nodes(unsigned long start, unsigned long end) static int fake_node_to_pxm_map[MAX_NUMNODES] __initdata = { [0 ... MAX_NUMNODES-1] = PXM_INVAL }; -static u16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = { +static s16 fake_apicid_to_node[MAX_LOCAL_APIC] __initdata = { [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE }; static int __init find_node_by_addr(unsigned long addr) - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html