x86, ioapic: Consolidate ioapic_saved_data[] into 'struct ioapic'
authorSuresh Siddha <suresh.b.siddha@intel.com>
Wed, 18 May 2011 23:31:36 +0000 (16:31 -0700)
committerIngo Molnar <mingo@elte.hu>
Fri, 20 May 2011 11:40:57 +0000 (13:40 +0200)
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: daniel.blueman@gmail.com
Link: http://lkml.kernel.org/r/20110518233157.830697056@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic/io_apic.c

index 2a18a98..ceff2d2 100644 (file)
@@ -81,6 +81,10 @@ static struct ioapic {
         * # of IRQ routing registers
         */
        int nr_registers;
+       /*
+        * Saved state during suspend/resume, or while enabling intr-remap.
+        */
+       struct IO_APIC_route_entry *saved_registers;
 } ioapics[MAX_IO_APICS];
 
 /* I/O APIC entries */
@@ -102,11 +106,6 @@ int mp_irq_entries;
 /* GSI interrupts */
 static int nr_irqs_gsi = NR_IRQS_LEGACY;
 
-/*
- * Saved I/O APIC state during suspend/resume, or while enabling intr-remap.
-*/
-static struct IO_APIC_route_entry *ioapic_saved_data[MAX_IO_APICS];
-
 #if defined (CONFIG_MCA) || defined (CONFIG_EISA)
 int mp_bus_id_to_type[MAX_MP_BUSSES];
 #endif
@@ -187,10 +186,10 @@ int __init arch_early_irq_init(void)
        }
 
        for (i = 0; i < nr_ioapics; i++) {
-               ioapic_saved_data[i] =
+               ioapics[i].saved_registers =
                        kzalloc(sizeof(struct IO_APIC_route_entry) *
                                ioapics[i].nr_registers, GFP_KERNEL);
-               if (!ioapic_saved_data[i])
+               if (!ioapics[i].saved_registers)
                        pr_err("IOAPIC %d: suspend/resume impossible!\n", i);
        }
 
@@ -639,13 +638,13 @@ int save_ioapic_entries(void)
        int err = 0;
 
        for (apic = 0; apic < nr_ioapics; apic++) {
-               if (!ioapic_saved_data[apic]) {
+               if (!ioapics[apic].saved_registers) {
                        err = -ENOMEM;
                        continue;
                }
 
                for (pin = 0; pin < ioapics[apic].nr_registers; pin++)
-                       ioapic_saved_data[apic][pin] =
+                       ioapics[apic].saved_registers[pin] =
                                ioapic_read_entry(apic, pin);
        }
 
@@ -660,13 +659,13 @@ void mask_ioapic_entries(void)
        int apic, pin;
 
        for (apic = 0; apic < nr_ioapics; apic++) {
-               if (!ioapic_saved_data[apic])
+               if (ioapics[apic].saved_registers)
                        continue;
 
                for (pin = 0; pin < ioapics[apic].nr_registers; pin++) {
                        struct IO_APIC_route_entry entry;
 
-                       entry = ioapic_saved_data[apic][pin];
+                       entry = ioapics[apic].saved_registers[pin];
                        if (!entry.mask) {
                                entry.mask = 1;
                                ioapic_write_entry(apic, pin, entry);
@@ -676,19 +675,19 @@ void mask_ioapic_entries(void)
 }
 
 /*
- * Restore IO APIC entries which was saved in ioapic_saved_data
+ * Restore IO APIC entries which was saved in the ioapic structure.
  */
 int restore_ioapic_entries(void)
 {
        int apic, pin;
 
        for (apic = 0; apic < nr_ioapics; apic++) {
-               if (!ioapic_saved_data[apic])
+               if (ioapics[apic].saved_registers)
                        continue;
 
                for (pin = 0; pin < ioapics[apic].nr_registers; pin++)
                        ioapic_write_entry(apic, pin,
-                                          ioapic_saved_data[apic][pin]);
+                                          ioapics[apic].saved_registers[pin]);
        }
        return 0;
 }