"Maciej W. Rozycki" wrote:
>
> On Fri, 13 Oct 2000, Andrew Morton wrote:
>
> > > Oct 9 17:29:02 fwintern kernel: eth0: Interrupt posted but not
> > > delivered -- IRQ blocked by another device?
> >
> > This is the infamous APIC bug. I have about ten reports of this over a
> > four-month period. Mark Hemment mentioned it just yesterday.
> >
> > This is not a 3c59x problem. It is due to the APIC forgetting how to
> > generate interrupts for a particular IRQ. It happens mostly for NICs
> > because they generate a lot of interrupts. I've had it happen just
> > once. In that case, _nothing_ would make the interrupt come back
> > (including a driver unload/reload).
> >
> > This gets reported a lot by 3c59x users because this driver specifically
> > detects and reports on the problem.
>
> Hmm, that's interesting. It would be worthwhile to see a dump of APICs'
> state when this happens -- maybe an EOI message gets lost for some reason
> or an erratum is biting us. There are functions for such kind of
> diagnostics already available; they are print_IO_APIC() and
> print_all_local_APICs() and may be called on demand by a tiny module, for
> example.
Thanks!
Michael, would you be able to:
- go back to 2.4.0
- make sure you have 'Magic SYSRQ' enabled
- apply the below patch
- type ALT-SYSRQ-A when the machine is behaving
- make the machine misbehave
- type ALT-SYSRQ-A and
- send the resulting log output?
--- linux-2.4.0-test9/arch/i386/kernel/io_apic.c Wed Oct 4 21:27:20 2000
+++ linux-akpm/arch/i386/kernel/io_apic.c Fri Oct 13 02:08:28 2000
@@ -692,7 +692,7 @@
printk(KERN_WARNING " to [EMAIL PROTECTED]\n");
}
-void __init print_IO_APIC(void)
+void print_IO_APIC(void)
{
int apic, i;
struct IO_APIC_reg_00 reg_00;
--- linux-2.4.0-test9/drivers/char/sysrq.c Fri Aug 11 19:06:11 2000
+++ linux-akpm/drivers/char/sysrq.c Fri Oct 13 02:09:19 2000
@@ -72,6 +72,12 @@
console_loglevel = 7;
printk(KERN_INFO "SysRq: ");
switch (key) {
+ case 'a':
+ printk("print_IO_APIC()\n");
+ print_IO_APIC();
+ printk("print_all_local_APICs()\n");
+ print_all_local_APICs();
+ break;
case 'r': /* R -- Reset raw mode */
if (kbd) {
kbd->kbdmode = VC_XLATE;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/