[PATCH] Refactor some duplicated code in mpparse.c
authorAndi Kleen <ak@suse.de>
Fri, 29 Sep 2006 23:47:55 +0000 (01:47 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Fri, 29 Sep 2006 23:47:55 +0000 (01:47 +0200)
No logic changes

Signed-off-by: Andi Kleen <ak@suse.de>
arch/x86_64/kernel/mpparse.c

index 20e88f4b564b6d8c31604c8c5c50f71da6a7ac0e..b8d53dfa9931730a39409e2bb7c8048d6c6070cd 100644 (file)
@@ -152,6 +152,21 @@ static void __init MP_bus_info (struct mpc_config_bus *m)
        }
 }
 
+static int bad_ioapic(unsigned long address)
+{
+       if (nr_ioapics >= MAX_IO_APICS) {
+               printk(KERN_ERR "ERROR: Max # of I/O APICs (%d) exceeded "
+                       "(found %d)\n", MAX_IO_APICS, nr_ioapics);
+               panic("Recompile kernel with bigger MAX_IO_APICS!\n");
+       }
+       if (!address) {
+               printk(KERN_ERR "WARNING: Bogus (zero) I/O APIC address"
+                       " found in table, skipping!\n");
+               return 1;
+       }
+       return 0;
+}
+
 static void __init MP_ioapic_info (struct mpc_config_ioapic *m)
 {
        if (!(m->mpc_flags & MPC_APIC_USABLE))
@@ -159,16 +174,10 @@ static void __init MP_ioapic_info (struct mpc_config_ioapic *m)
 
        printk("I/O APIC #%d at 0x%X.\n",
                m->mpc_apicid, m->mpc_apicaddr);
-       if (nr_ioapics >= MAX_IO_APICS) {
-               printk(KERN_ERR "Max # of I/O APICs (%d) exceeded (found %d).\n",
-                       MAX_IO_APICS, nr_ioapics);
-               panic("Recompile kernel with bigger MAX_IO_APICS!.\n");
-       }
-       if (!m->mpc_apicaddr) {
-               printk(KERN_ERR "WARNING: bogus zero I/O APIC address"
-                       " found in MP table, skipping!\n");
+
+       if (bad_ioapic(m->mpc_apicaddr))
                return;
-       }
+
        mp_ioapics[nr_ioapics] = *m;
        nr_ioapics++;
 }
@@ -647,16 +656,8 @@ void __init mp_register_ioapic(u8 id, u32 address, u32 gsi_base)
 {
        int idx = 0;
 
-       if (nr_ioapics >= MAX_IO_APICS) {
-               printk(KERN_ERR "ERROR: Max # of I/O APICs (%d) exceeded "
-                       "(found %d)\n", MAX_IO_APICS, nr_ioapics);
-               panic("Recompile kernel with bigger MAX_IO_APICS!\n");
-       }
-       if (!address) {
-               printk(KERN_ERR "WARNING: Bogus (zero) I/O APIC address"
-                       " found in MADT table, skipping!\n");
+       if (bad_ioapic(address))
                return;
-       }
 
        idx = nr_ioapics++;