Skip to content

Commit

Permalink
x86, ioapic: Remove duplicate code for saving/restoring RTEs
Browse files Browse the repository at this point in the history
Code flow for enabling interrupt-remapping has its own routines
for saving and restoring io-apic RTE's. ioapic suspend/resume
code flow also has similar routines. Remove the duplicate code.

Tested-by: Daniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Link: http://lkml.kernel.org/r/20110518233157.673130611@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Suresh Siddha authored and Ingo Molnar committed May 20, 2011
1 parent 31dce14 commit 15bac20
Showing 1 changed file with 5 additions and 31 deletions.
36 changes: 5 additions & 31 deletions arch/x86/kernel/apic/io_apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -2887,37 +2887,11 @@ static int __init io_apic_bug_finalize(void)

late_initcall(io_apic_bug_finalize);

static void suspend_ioapic(int ioapic_id)
static void resume_ioapic_id(int ioapic_id)
{
struct IO_APIC_route_entry *saved_data = ioapic_saved_data[ioapic_id];
int i;

if (!saved_data)
return;

for (i = 0; i < nr_ioapic_registers[ioapic_id]; i++)
saved_data[i] = ioapic_read_entry(ioapic_id, i);
}

static int ioapic_suspend(void)
{
int ioapic_id;

for (ioapic_id = 0; ioapic_id < nr_ioapics; ioapic_id++)
suspend_ioapic(ioapic_id);

return 0;
}

static void resume_ioapic(int ioapic_id)
{
struct IO_APIC_route_entry *saved_data = ioapic_saved_data[ioapic_id];
unsigned long flags;
union IO_APIC_reg_00 reg_00;
int i;

if (!saved_data)
return;

raw_spin_lock_irqsave(&ioapic_lock, flags);
reg_00.raw = io_apic_read(ioapic_id, 0);
Expand All @@ -2926,20 +2900,20 @@ static void resume_ioapic(int ioapic_id)
io_apic_write(ioapic_id, 0, reg_00.raw);
}
raw_spin_unlock_irqrestore(&ioapic_lock, flags);
for (i = 0; i < nr_ioapic_registers[ioapic_id]; i++)
ioapic_write_entry(ioapic_id, i, saved_data[i]);
}

static void ioapic_resume(void)
{
int ioapic_id;

for (ioapic_id = nr_ioapics - 1; ioapic_id >= 0; ioapic_id--)
resume_ioapic(ioapic_id);
resume_ioapic_id(ioapic_id);

restore_ioapic_entries();
}

static struct syscore_ops ioapic_syscore_ops = {
.suspend = ioapic_suspend,
.suspend = save_ioapic_entries,
.resume = ioapic_resume,
};

Expand Down

0 comments on commit 15bac20

Please sign in to comment.