Re: [PATCH 08/10] x86: Change NR_CPUS arrays in numa_64

From: Ingo Molnar
Date: Mon Jan 14 2008 - 06:14:52 EST



* travis@xxxxxxx <travis@xxxxxxx> wrote:

> Change the following static arrays sized by NR_CPUS to
> per_cpu data variables:
>
> char cpu_to_node_map[NR_CPUS];

x86.git randconfig testing found the !NUMA build bugs below.

Ingo

--------------->
---
arch/x86/kernel/setup_64.c | 2 ++
arch/x86/kernel/smpboot_64.c | 4 ++++
2 files changed, 6 insertions(+)

Index: linux/arch/x86/kernel/setup_64.c
===================================================================
--- linux.orig/arch/x86/kernel/setup_64.c
+++ linux/arch/x86/kernel/setup_64.c
@@ -379,7 +379,9 @@ 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;
+#ifdef CONFIG_NUMA
x86_cpu_to_node_map_early_ptr = (void *)&x86_cpu_to_node_map_init;
+#endif
x86_bios_cpu_apicid_early_ptr = (void *)&x86_bios_cpu_apicid_init;
#endif

Index: linux/arch/x86/kernel/smpboot_64.c
===================================================================
--- linux.orig/arch/x86/kernel/smpboot_64.c
+++ linux/arch/x86/kernel/smpboot_64.c
@@ -864,8 +864,10 @@ void __init smp_set_apicids(void)
if (per_cpu_offset(cpu)) {
per_cpu(x86_cpu_to_apicid, cpu) =
x86_cpu_to_apicid_init[cpu];
+#ifdef CONFIG_NUMA
per_cpu(x86_cpu_to_node_map, cpu) =
x86_cpu_to_node_map_init[cpu];
+#endif
per_cpu(x86_bios_cpu_apicid, cpu) =
x86_bios_cpu_apicid_init[cpu];
}
@@ -876,7 +878,9 @@ void __init smp_set_apicids(void)

/* indicate the early static arrays are gone */
x86_cpu_to_apicid_early_ptr = NULL;
+#ifdef CONFIG_NUMA
x86_cpu_to_node_map_early_ptr = NULL;
+#endif
x86_bios_cpu_apicid_early_ptr = NULL;
}

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