x86: Unify 3 similar ways of saving mp_irqs info
There are 3 places defining similar functions of saving IRQ vector info into mp_irqs[] array: mmparse/acpi/mrst. Replace the redundant code by a common function in io_apic.c as it's only called when CONFIG_X86_IO_APIC=y Signed-off-by: Feng Tang <feng.tang@intel.com> Cc: Alan Cox <alan@linux.intel.com> Cc: Len Brown <len.brown@intel.com> Cc: Yinghai Lu <yinghai@kernel.org> LKML-Reference: <20101207133204.4d913c5a@feng-i7> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:

committed by
Thomas Gleixner

parent
60d79fd99f
commit
2d8009ba67
@@ -937,32 +937,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
|
||||
extern int es7000_plat;
|
||||
#endif
|
||||
|
||||
static void assign_to_mp_irq(struct mpc_intsrc *m,
|
||||
struct mpc_intsrc *mp_irq)
|
||||
{
|
||||
memcpy(mp_irq, m, sizeof(struct mpc_intsrc));
|
||||
}
|
||||
|
||||
static int mp_irq_cmp(struct mpc_intsrc *mp_irq,
|
||||
struct mpc_intsrc *m)
|
||||
{
|
||||
return memcmp(mp_irq, m, sizeof(struct mpc_intsrc));
|
||||
}
|
||||
|
||||
static void save_mp_irq(struct mpc_intsrc *m)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < mp_irq_entries; i++) {
|
||||
if (!mp_irq_cmp(&mp_irqs[i], m))
|
||||
return;
|
||||
}
|
||||
|
||||
assign_to_mp_irq(m, &mp_irqs[mp_irq_entries]);
|
||||
if (++mp_irq_entries == MAX_IRQ_SOURCES)
|
||||
panic("Max # of irq sources exceeded!!\n");
|
||||
}
|
||||
|
||||
void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi)
|
||||
{
|
||||
int ioapic;
|
||||
@@ -993,7 +967,7 @@ void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi)
|
||||
mp_irq.dstapic = mp_ioapics[ioapic].apicid; /* APIC ID */
|
||||
mp_irq.dstirq = pin; /* INTIN# */
|
||||
|
||||
save_mp_irq(&mp_irq);
|
||||
mp_save_irq(&mp_irq);
|
||||
|
||||
isa_irq_to_gsi[bus_irq] = gsi;
|
||||
}
|
||||
@@ -1068,7 +1042,7 @@ void __init mp_config_acpi_legacy_irqs(void)
|
||||
mp_irq.srcbusirq = i; /* Identity mapped */
|
||||
mp_irq.dstirq = pin;
|
||||
|
||||
save_mp_irq(&mp_irq);
|
||||
mp_save_irq(&mp_irq);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1105,7 +1079,7 @@ static int mp_config_acpi_gsi(struct device *dev, u32 gsi, int trigger,
|
||||
mp_irq.dstapic = mp_ioapics[ioapic].apicid;
|
||||
mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
|
||||
|
||||
save_mp_irq(&mp_irq);
|
||||
mp_save_irq(&mp_irq);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user