Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15bac20b authored by Suresh Siddha's avatar Suresh Siddha Committed by Ingo Molnar
Browse files

x86, ioapic: Remove duplicate code for saving/restoring RTEs



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: default avatarDaniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
Link: http://lkml.kernel.org/r/20110518233157.673130611@sbsiddha-MOBL3.sc.intel.com


Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 31dce14a
Loading
Loading
Loading
Loading
+5 −31
Original line number Diff line number Diff line
@@ -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);
@@ -2926,8 +2900,6 @@ 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)
@@ -2935,11 +2907,13 @@ 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,
};