x86, smp: clean up mps_oem_check()
authorIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 12:47:42 +0000 (13:47 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 22:20:27 +0000 (23:20 +0100)
Impact: cleanup

 - allow NULL ->mps_oem_check() entries

 - clean up the code flow

Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/genapic.h
arch/x86/mach-generic/probe.c

index 14b19de..8bb1c73 100644 (file)
@@ -55,8 +55,7 @@ struct genapic {
         * is switched to this. Essentially they are additional
         * probe functions:
         */
-       int (*mps_oem_check)(struct mpc_table *mpc, char *oem,
-                            char *productid);
+       int (*mps_oem_check)(struct mpc_table *mpc, char *oem, char *productid);
 
        unsigned int (*get_apic_id)(unsigned long x);
        unsigned long (*set_apic_id)(unsigned int id);
index a21e2b1..799a70f 100644 (file)
@@ -113,17 +113,21 @@ void __init generic_apic_probe(void)
 int __init mps_oem_check(struct mpc_table *mpc, char *oem, char *productid)
 {
        int i;
+
        for (i = 0; apic_probe[i]; ++i) {
-               if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) {
-                       if (!cmdline_apic) {
-                               apic = apic_probe[i];
-                               if (x86_quirks->update_genapic)
-                                       x86_quirks->update_genapic();
-                               printk(KERN_INFO "Switched to APIC driver `%s'.\n",
-                                      apic->name);
-                       }
-                       return 1;
+               if (!apic_probe[i]->mps_oem_check)
+                       continue;
+               if (!apic_probe[i]->mps_oem_check(mpc, oem, productid))
+                       continue;
+
+               if (!cmdline_apic) {
+                       apic = apic_probe[i];
+                       if (x86_quirks->update_genapic)
+                               x86_quirks->update_genapic();
+                       printk(KERN_INFO "Switched to APIC driver `%s'.\n",
+                              apic->name);
                }
+               return 1;
        }
        return 0;
 }