Messages in this thread Patch in this message | | | Date | Fri, 10 Aug 2007 11:38:39 +0200 | From | Ingo Molnar <> | Subject | Re: [patch (testing)] Re: 2.6.20->2.6.21 - networking dies after random time |
| |
* Jarek Poplawski <jarkao2@o2.pl> wrote:
> All correct! There was also checked a possibility it can be not hw > itself, but wrong way of handling after hw (acking too late). This was > false idea (or bad implementation), so it looks like hw vs lapic > problem.
i think the problem is that local APIC 'self vectors' might be edge-triggered by default. I'm not exactly sure whether passing in APIC_INT_LEVELTRIG to send_IPI_self() will truly be interpreted by the local APIC into any external IO-APIC ACK sequence (the local APIC might just treat self-vectors as always-edge) - and it might also be that the pure act of mixing self-triggered vectors with level-triggered external irqs sometimes confuses the IO-APIC <-> local-APIC messaging. One more test of the patch below will tell us a bit more about this part of the story.
Ingo
Index: linux/arch/i386/kernel/io_apic.c =================================================================== --- linux.orig/arch/i386/kernel/io_apic.c +++ linux/arch/i386/kernel/io_apic.c @@ -735,7 +735,8 @@ void fastcall send_IPI_self(int vector) * Wait for idle. */ apic_wait_icr_idle(); - cfg = APIC_DM_FIXED | APIC_DEST_SELF | vector | APIC_DEST_LOGICAL; + cfg = APIC_DM_FIXED | APIC_DEST_SELF | vector | APIC_DEST_LOGICAL | + APIC_INT_LEVELTRIG; /* * Send the IPI. The write to APIC_ICR fires this off. */ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |