3.0-stable review patch.  If anyone has any objections, please let me know.

------------------

This reverts commit c2ec63edaf48c90c3495eeb0b75bb05102fbf71a
[73d63d038ee9f769f5e5b46792d227fe20e442c5 upstream]

It causes problems, so needs to be reverted from 3.2-stable for now.

Reported-by: Konrad Rzeszutek Wilk <[email protected]>
Cc: Jon Dufresne <[email protected]>
Cc: Suresh Siddha <[email protected]>
Cc: <[email protected]>
Cc: Josh Boyer <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Teck Choon Giam <[email protected]>
Cc: Ben Guthro <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 arch/x86/kernel/apic/io_apic.c |   40 ++++++++--------------------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -3927,36 +3927,18 @@ int mp_find_ioapic_pin(int ioapic, u32 g
 static __init int bad_ioapic(unsigned long address)
 {
        if (nr_ioapics >= MAX_IO_APICS) {
-               pr_warn("WARNING: Max # of I/O APICs (%d) exceeded (found %d), 
skipping\n",
-                       MAX_IO_APICS, nr_ioapics);
+               printk(KERN_WARNING "WARNING: Max # of I/O APICs (%d) exceeded "
+                      "(found %d), skipping\n", MAX_IO_APICS, nr_ioapics);
                return 1;
        }
        if (!address) {
-               pr_warn("WARNING: Bogus (zero) I/O APIC address found in table, 
skipping!\n");
+               printk(KERN_WARNING "WARNING: Bogus (zero) I/O APIC address"
+                      " found in table, skipping!\n");
                return 1;
        }
        return 0;
 }
 
-static __init int bad_ioapic_register(int idx)
-{
-       union IO_APIC_reg_00 reg_00;
-       union IO_APIC_reg_01 reg_01;
-       union IO_APIC_reg_02 reg_02;
-
-       reg_00.raw = io_apic_read(idx, 0);
-       reg_01.raw = io_apic_read(idx, 1);
-       reg_02.raw = io_apic_read(idx, 2);
-
-       if (reg_00.raw == -1 && reg_01.raw == -1 && reg_02.raw == -1) {
-               pr_warn("I/O APIC 0x%x registers return all ones, skipping!\n",
-                       mpc_ioapic_addr(idx));
-               return 1;
-       }
-
-       return 0;
-}
-
 void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
 {
        int idx = 0;
@@ -3973,12 +3955,6 @@ void __init mp_register_ioapic(int id, u
        ioapics[idx].mp_config.apicaddr = address;
 
        set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
-
-       if (bad_ioapic_register(idx)) {
-               clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
-               return;
-       }
-
        ioapics[idx].mp_config.apicid = io_apic_unique_id(id);
        ioapics[idx].mp_config.apicver = io_apic_get_version(idx);
 
@@ -3999,10 +3975,10 @@ void __init mp_register_ioapic(int id, u
        if (gsi_cfg->gsi_end >= gsi_top)
                gsi_top = gsi_cfg->gsi_end + 1;
 
-       pr_info("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, GSI %d-%d\n",
-               idx, mpc_ioapic_id(idx),
-               mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
-               gsi_cfg->gsi_base, gsi_cfg->gsi_end);
+       printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
+              "GSI %d-%d\n", idx, mpc_ioapic_id(idx),
+              mpc_ioapic_ver(idx), mpc_ioapic_addr(idx),
+              gsi_cfg->gsi_base, gsi_cfg->gsi_end);
 
        nr_ioapics++;
 }


--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to