]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fix ACPI patch clobber
authorAndy Grover <agrover@groveronline.com>
Mon, 15 Apr 2002 07:00:04 +0000 (00:00 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Mon, 15 Apr 2002 07:00:04 +0000 (00:00 -0700)
This fixes the mpparse.c clobbering the last ACPI patch did. Martin, look
OK? Again, my apologies.

arch/i386/kernel/mpparse.c

index 12b0f33d4d8f966f5d87290c4a1d877bb18c1397..5ad6cca0e23b89004ad460f1a94bb539236b5d12 100644 (file)
@@ -38,6 +38,8 @@ int smp_found_config;
 int apic_version [MAX_APICS];
 int mp_bus_id_to_type [MAX_MP_BUSSES];
 int mp_bus_id_to_node [MAX_MP_BUSSES];
+int mp_bus_id_to_local [MAX_MP_BUSSES];
+int quad_local_to_mp_bus_id [NR_CPUS/4][4];
 int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };
 int mp_current_pci_id;
 
@@ -237,13 +239,17 @@ void __init MP_processor_info (struct mpc_config_processor *m)
 static void __init MP_bus_info (struct mpc_config_bus *m)
 {
        char str[7];
+       int quad;
 
        memcpy(str, m->mpc_bustype, 6);
        str[6] = 0;
        
        if (clustered_apic_mode) {
-               mp_bus_id_to_node[m->mpc_busid] = translation_table[mpc_record]->trans_quad;
-               printk("Bus #%d is %s (node %d)\n", m->mpc_busid, str, mp_bus_id_to_node[m->mpc_busid]);
+               quad = translation_table[mpc_record]->trans_quad;
+               mp_bus_id_to_node[m->mpc_busid] = quad;
+               mp_bus_id_to_local[m->mpc_busid] = translation_table[mpc_record]->trans_local;
+               quad_local_to_mp_bus_id[quad][translation_table[mpc_record]->trans_local] = m->mpc_busid;
+               printk("Bus #%d is %s (node %d)\n", m->mpc_busid, str, quad);
        } else {
                Dprintk("Bus #%d is %s\n", m->mpc_busid, str);
        }
@@ -320,13 +326,14 @@ static void __init MP_lintsrc_info (struct mpc_config_lintsrc *m)
 
 static void __init MP_translation_info (struct mpc_config_translation *m)
 {
-       printk("Translation: record %d, type %d, quad %d, global %d, local %d\n", mpc_record, m->trans_type, 
-               m->trans_quad, m->trans_global, m->trans_local);
+       printk("Translation: record %d, type %d, quad %d, global %d, local %d\n", mpc_record, m->trans_type, m->trans_quad, m->trans_global, m->trans_local);
 
        if (mpc_record >= MAX_MPC_ENTRY) 
                printk("MAX_MPC_ENTRY exceeded!\n");
        else
                translation_table[mpc_record] = m; /* stash this for later */
+       if (m->trans_quad+1 > numnodes)
+               numnodes = m->trans_quad+1;
 }
 
 /*
@@ -492,10 +499,6 @@ static int __init smp_read_mpc(struct mp_config_table *mpc)
                }
                ++mpc_record;
        }
-       if (clustered_apic_mode && nr_ioapics > 2) {
-               /* don't initialise IO apics on secondary quads */
-               nr_ioapics = 2;
-       }
        if (!num_processors)
                printk(KERN_ERR "SMP mptable: no processors registered!\n");
        return num_processors;