提交 57a6f740 编写于 作者: S Suresh Siddha 提交者: Ingo Molnar

x86, ioapic: Consolidate ioapic_saved_data[] into 'struct ioapic'

Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
Cc: daniel.blueman@gmail.com
Link: http://lkml.kernel.org/r/20110518233157.830697056@sbsiddha-MOBL3.sc.intel.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
上级 b69c6c3b
...@@ -81,6 +81,10 @@ static struct ioapic { ...@@ -81,6 +81,10 @@ static struct ioapic {
* # of IRQ routing registers * # of IRQ routing registers
*/ */
int nr_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]; } ioapics[MAX_IO_APICS];
/* I/O APIC entries */ /* I/O APIC entries */
...@@ -102,11 +106,6 @@ int mp_irq_entries; ...@@ -102,11 +106,6 @@ int mp_irq_entries;
/* GSI interrupts */ /* GSI interrupts */
static int nr_irqs_gsi = NR_IRQS_LEGACY; 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) #if defined (CONFIG_MCA) || defined (CONFIG_EISA)
int mp_bus_id_to_type[MAX_MP_BUSSES]; int mp_bus_id_to_type[MAX_MP_BUSSES];
#endif #endif
...@@ -187,10 +186,10 @@ int __init arch_early_irq_init(void) ...@@ -187,10 +186,10 @@ int __init arch_early_irq_init(void)
} }
for (i = 0; i < nr_ioapics; i++) { for (i = 0; i < nr_ioapics; i++) {
ioapic_saved_data[i] = ioapics[i].saved_registers =
kzalloc(sizeof(struct IO_APIC_route_entry) * kzalloc(sizeof(struct IO_APIC_route_entry) *
ioapics[i].nr_registers, GFP_KERNEL); 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); pr_err("IOAPIC %d: suspend/resume impossible!\n", i);
} }
...@@ -639,13 +638,13 @@ int save_ioapic_entries(void) ...@@ -639,13 +638,13 @@ int save_ioapic_entries(void)
int err = 0; int err = 0;
for (apic = 0; apic < nr_ioapics; apic++) { for (apic = 0; apic < nr_ioapics; apic++) {
if (!ioapic_saved_data[apic]) { if (!ioapics[apic].saved_registers) {
err = -ENOMEM; err = -ENOMEM;
continue; continue;
} }
for (pin = 0; pin < ioapics[apic].nr_registers; pin++) for (pin = 0; pin < ioapics[apic].nr_registers; pin++)
ioapic_saved_data[apic][pin] = ioapics[apic].saved_registers[pin] =
ioapic_read_entry(apic, pin); ioapic_read_entry(apic, pin);
} }
...@@ -660,13 +659,13 @@ void mask_ioapic_entries(void) ...@@ -660,13 +659,13 @@ void mask_ioapic_entries(void)
int apic, pin; int apic, pin;
for (apic = 0; apic < nr_ioapics; apic++) { for (apic = 0; apic < nr_ioapics; apic++) {
if (!ioapic_saved_data[apic]) if (ioapics[apic].saved_registers)
continue; continue;
for (pin = 0; pin < ioapics[apic].nr_registers; pin++) { for (pin = 0; pin < ioapics[apic].nr_registers; pin++) {
struct IO_APIC_route_entry entry; struct IO_APIC_route_entry entry;
entry = ioapic_saved_data[apic][pin]; entry = ioapics[apic].saved_registers[pin];
if (!entry.mask) { if (!entry.mask) {
entry.mask = 1; entry.mask = 1;
ioapic_write_entry(apic, pin, entry); ioapic_write_entry(apic, pin, entry);
...@@ -676,19 +675,19 @@ void mask_ioapic_entries(void) ...@@ -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 restore_ioapic_entries(void)
{ {
int apic, pin; int apic, pin;
for (apic = 0; apic < nr_ioapics; apic++) { for (apic = 0; apic < nr_ioapics; apic++) {
if (!ioapic_saved_data[apic]) if (ioapics[apic].saved_registers)
continue; continue;
for (pin = 0; pin < ioapics[apic].nr_registers; pin++) for (pin = 0; pin < ioapics[apic].nr_registers; pin++)
ioapic_write_entry(apic, pin, ioapic_write_entry(apic, pin,
ioapic_saved_data[apic][pin]); ioapics[apic].saved_registers[pin]);
} }
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册