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

Reply via email to