forked from Minki/linux
x86: I/O APIC: Add a 64-bit variation of replace_pin_at_irq()
When an interrupt is rerouted to a different I/O APIC pin the relevant entry of the irq_2_pin list should get updated accordingly so that operations are performed on the correct redirection entry. This is already done by the 32-bit variation of the code and here is a complementing 64-bit implementation. Should make someone's decision less tough when merging the two. ;) Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
c9076b6319
commit
0b9f4f49e2
@ -373,6 +373,26 @@ static void add_pin_to_irq(unsigned int irq, int apic, int pin)
|
|||||||
entry->pin = pin;
|
entry->pin = pin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reroute an IRQ to a different pin.
|
||||||
|
*/
|
||||||
|
static void __init replace_pin_at_irq(unsigned int irq,
|
||||||
|
int oldapic, int oldpin,
|
||||||
|
int newapic, int newpin)
|
||||||
|
{
|
||||||
|
struct irq_pin_list *entry = irq_2_pin + irq;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (entry->apic == oldapic && entry->pin == oldpin) {
|
||||||
|
entry->apic = newapic;
|
||||||
|
entry->pin = newpin;
|
||||||
|
}
|
||||||
|
if (!entry->next)
|
||||||
|
break;
|
||||||
|
entry = irq_2_pin + entry->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define DO_ACTION(name,R,ACTION, FINAL) \
|
#define DO_ACTION(name,R,ACTION, FINAL) \
|
||||||
\
|
\
|
||||||
@ -1735,7 +1755,7 @@ static inline void __init check_timer(void)
|
|||||||
/*
|
/*
|
||||||
* legacy devices should be connected to IO APIC #0
|
* legacy devices should be connected to IO APIC #0
|
||||||
*/
|
*/
|
||||||
/* replace_pin_at_irq(0, apic1, pin1, apic2, pin2); */
|
replace_pin_at_irq(0, apic1, pin1, apic2, pin2);
|
||||||
setup_timer_IRQ0_pin(apic2, pin2, cfg->vector);
|
setup_timer_IRQ0_pin(apic2, pin2, cfg->vector);
|
||||||
unmask_IO_APIC_irq(0);
|
unmask_IO_APIC_irq(0);
|
||||||
enable_8259A_irq(0);
|
enable_8259A_irq(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user