x86: unify mp_bus_info
authorAlexey Starikovskiy <astarikovskiy@suse.de>
Fri, 4 Apr 2008 19:42:21 +0000 (23:42 +0400)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:35 +0000 (17:41 +0200)
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/mpparse_32.c
arch/x86/kernel/mpparse_64.c

index 9a9819b2c5f59357207e734a04c5432207424982..9120573e2616bde2468804ff1d1aa42bd9743003 100644 (file)
@@ -124,8 +124,12 @@ static void __init MP_bus_info(struct mpc_config_bus *m)
        }
 #endif
 
-       set_bit(m->mpc_busid, mp_bus_not_pci);
-       if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI) - 1) == 0) {
+       if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA) - 1) == 0) {
+                set_bit(m->mpc_busid, mp_bus_not_pci);
+#if defined(CONFIG_EISA) || defined (CONFIG_MCA)
+               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA;
+#endif
+       } else if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI) - 1) == 0) {
 #ifdef CONFIG_X86_NUMAQ
                mpc_oem_pci_bus(m, translation_table[mpc_record]);
 #endif
@@ -134,16 +138,13 @@ static void __init MP_bus_info(struct mpc_config_bus *m)
                mp_current_pci_id++;
 #if defined(CONFIG_EISA) || defined (CONFIG_MCA)
                mp_bus_id_to_type[m->mpc_busid] = MP_BUS_PCI;
-       } else if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA) - 1) == 0) {
-               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA;
        } else if (strncmp(str, BUSTYPE_EISA, sizeof(BUSTYPE_EISA) - 1) == 0) {
                mp_bus_id_to_type[m->mpc_busid] = MP_BUS_EISA;
        } else if (strncmp(str, BUSTYPE_MCA, sizeof(BUSTYPE_MCA) - 1) == 0) {
                mp_bus_id_to_type[m->mpc_busid] = MP_BUS_MCA;
-       } else {
-               printk(KERN_WARNING "Unknown bustype %s - ignoring\n", str);
 #endif
-       }
+       } else
+               printk(KERN_WARNING "Unknown bustype %s - ignoring\n", str);
 }
 
 #ifdef CONFIG_X86_IO_APIC
index 5c916383bb71a2030ce20efd9ddf8fec44d86a6c..831097f2022a29ad610e42f5e468f299952cf37d 100644 (file)
@@ -92,17 +92,43 @@ static void __init MP_bus_info(struct mpc_config_bus *m)
 
        memcpy(str, m->mpc_bustype, 6);
        str[6] = 0;
+
+#ifdef CONFIG_X86_NUMAQ
+       mpc_oem_bus_info(m, str, translation_table[mpc_record]);
+#else
        Dprintk("Bus #%d is %s\n", m->mpc_busid, str);
+#endif
+
+#if MAX_MP_BUSSES < 256
+       if (m->mpc_busid >= MAX_MP_BUSSES) {
+               printk(KERN_WARNING "MP table busid value (%d) for bustype %s "
+                      " is too large, max. supported is %d\n",
+                      m->mpc_busid, str, MAX_MP_BUSSES - 1);
+               return;
+       }
+#endif
 
-       if (strncmp(str, "ISA", 3) == 0) {
-               set_bit(m->mpc_busid, mp_bus_not_pci);
-       } else if (strncmp(str, "PCI", 3) == 0) {
+       if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA) - 1) == 0) {
+                set_bit(m->mpc_busid, mp_bus_not_pci);
+#if defined(CONFIG_EISA) || defined (CONFIG_MCA)
+               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA;
+#endif
+       } else if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI) - 1) == 0) {
+#ifdef CONFIG_X86_NUMAQ
+               mpc_oem_pci_bus(m, translation_table[mpc_record]);
+#endif
                clear_bit(m->mpc_busid, mp_bus_not_pci);
                mp_bus_id_to_pci_bus[m->mpc_busid] = mp_current_pci_id;
                mp_current_pci_id++;
-       } else {
-               printk(KERN_ERR "Unknown bustype %s\n", str);
-       }
+#if defined(CONFIG_EISA) || defined (CONFIG_MCA)
+               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_PCI;
+       } else if (strncmp(str, BUSTYPE_EISA, sizeof(BUSTYPE_EISA) - 1) == 0) {
+               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_EISA;
+       } else if (strncmp(str, BUSTYPE_MCA, sizeof(BUSTYPE_MCA) - 1) == 0) {
+               mp_bus_id_to_type[m->mpc_busid] = MP_BUS_MCA;
+#endif
+       } else
+               printk(KERN_WARNING "Unknown bustype %s - ignoring\n", str);
 }
 
 static int bad_ioapic(unsigned long address)