Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 99348
b: refs/heads/master
c: 7f0dbbc
h: refs/heads/master
v: v3
  • Loading branch information
Maciej W. Rozycki authored and Ingo Molnar committed Jul 8, 2008
1 parent 2abf249 commit cf7f968
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cd08d0754ecb0cb9293c8476cb33ded1d23d0d8f
refs/heads/master: 7f0dbbc08d80df7ea15d8da4f0d78255891c8812
28 changes: 26 additions & 2 deletions trunk/arch/x86/kernel/io_apic_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,26 @@ static void add_pin_to_irq(unsigned int irq, int apic, int 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) \
\
Expand Down Expand Up @@ -1680,6 +1700,11 @@ static inline void __init check_timer(void)
apic2 = apic1;
}

replace_pin_at_irq(0, 0, 0, apic1, pin1);
apic1 = 0;
pin1 = 0;
setup_timer_IRQ0_pin(apic1, pin1, cfg->vector);

if (pin1 != -1) {
/*
* Ok, does IRQ0 through the IOAPIC work?
Expand Down Expand Up @@ -1712,10 +1737,9 @@ static inline void __init check_timer(void)
/*
* 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);
unmask_IO_APIC_irq(0);
clear_IO_APIC_pin(apic2, pin2);
enable_8259A_irq(0);
if (timer_irq_works()) {
apic_printk(APIC_VERBOSE," works.\n");
Expand Down

0 comments on commit cf7f968

Please sign in to comment.