|
@@ -1019,7 +1019,7 @@ static inline int irq_trigger(int idx)
|
|
|
int (*ioapic_renumber_irq)(int ioapic, int irq);
|
|
|
static int pin_2_irq(int idx, int apic, int pin)
|
|
|
{
|
|
|
- int irq, i;
|
|
|
+ int irq;
|
|
|
int bus = mp_irqs[idx].srcbus;
|
|
|
|
|
|
/*
|
|
@@ -1031,18 +1031,13 @@ static int pin_2_irq(int idx, int apic, int pin)
|
|
|
if (test_bit(bus, mp_bus_not_pci)) {
|
|
|
irq = mp_irqs[idx].srcbusirq;
|
|
|
} else {
|
|
|
- /*
|
|
|
- * PCI IRQs are mapped in order
|
|
|
- */
|
|
|
- i = irq = 0;
|
|
|
- while (i < apic)
|
|
|
- irq += nr_ioapic_registers[i++];
|
|
|
- irq += pin;
|
|
|
+ u32 gsi = mp_gsi_routing[apic].gsi_base + pin;
|
|
|
/*
|
|
|
* For MPS mode, so far only needed by ES7000 platform
|
|
|
*/
|
|
|
if (ioapic_renumber_irq)
|
|
|
- irq = ioapic_renumber_irq(apic, irq);
|
|
|
+ gsi = ioapic_renumber_irq(apic, gsi);
|
|
|
+ irq = gsi;
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_X86_32
|