Hi Giammarco,

Giammarco Zacheo wrote:
> Ok, I hope this is what you asked for...
> 
> I added printk in mask_ack_irq. Look at mask_ack_irq--> in the text
> below, those are the addresses of the function pointers.
> the printk related to mask_ack is printed once at the first pass in
> the function, otherwise the kernel would be choked by the output.

Yep, this pointed to the right spot. I still don't get why we didn't
stumble over this earlier (obviously, most x86_64 boxes take a different
code path here), but it is at least clear now what went wrong:

I-pipe ran into one of the remaining non-genirq code paths on x86_64.
More precisely, the IRQ chip of timer interrupt was changed from 8259 to
APIC without going through the generic API so that I-pipe was still
using the old ack handler, stepping later on the missing mask and
mack_ack handler.

This patch now updates irq_chip.ipipe_ack when it changes for IRQ0. This
is a temporary fix, I guess kernel people will refactor io_apic_*.c into
a shared variant soon, overcoming this "minor" variation between i386
and x86_64...

Please let us know if this helps!

Jan
---
 arch/x86_64/kernel/io_apic.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: linux-2.6.23.1-xeno_64/arch/x86_64/kernel/io_apic.c
===================================================================
--- linux-2.6.23.1-xeno_64.orig/arch/x86_64/kernel/io_apic.c
+++ linux-2.6.23.1-xeno_64/arch/x86_64/kernel/io_apic.c
@@ -1659,6 +1659,8 @@ static inline void unlock_ExtINT_logic(v
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
+void __ipipe_ack_edge_irq(unsigned irq, struct irq_desc *desc);
+
 /*
  * This code may look a bit paranoid, but it's supposed to cooperate with
  * a wide range of boards and BIOS bugs.  Fortunately only the timer IRQ
@@ -1752,6 +1754,9 @@ static inline void check_timer(void)
 
 	disable_8259A_irq(0);
 	irq_desc[0].chip = &lapic_irq_type;
+#ifdef CONFIG_IPIPE
+	irq_desc[0].ipipe_ack = &__ipipe_ack_edge_irq;
+#endif
 	apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector);	/* Fixed mode */
 	enable_8259A_irq(0);
 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to