Frank de Lange wrote: > > On Fri, Jan 12, 2001 at 06:16:36PM +0100, Manfred Spraul wrote: > > I would first concentrate on the differences between 2.2 and 2.4: > > > > Frank, could you try what happens with the NMI oopser disabled? > > Here's the results with nmi_watchdog=0 > > > After network hang (nmi_watchdog=0) > =================================== > It still hangs. Frank, I've attached a proposed kick_IOAPIC pin. Could you try it? I'm rebooting with that patch right now. -- Manfred
1) add to the end of io_apic.c: static void print_line(struct IO_APIC_route_entry* entry) { printk(KERN_EMERG " %02x %03X %02X ", 0, entry->dest.logical.logical_dest, entry->dest.physical.physical_dest ); printk("%1d %1d %1d %1d %1d %1d %1d %02X\n", entry->mask, entry->trigger, entry->irr, entry->polarity, entry->delivery_status, entry->dest_mode, entry->delivery_mode, entry->vector ); } void kick_IOAPIC_pin(int pin) { unsigned long flags; struct IO_APIC_route_entry entry; local_irq_save(flags); *(((int *)&entry) + 1) = io_apic_read(0, 0x11 + 2 * pin); *(((int *)&entry) + 0) = io_apic_read(0, 0x10 + 2 * pin); printk(KERN_EMERG " NR Log Phy Mask Trig IRR Pol" " Stat Dest Deli Vect: \n"); printk(KERN_EMERG "Before:\n"); print_line(&entry); entry.trigger = 0; io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry) + 1)); io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry) + 0)); udelay(10); printk(KERN_EMERG "After switching to edge:\n"); print_line(&entry); entry.trigger = 1; io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry) + 1)); io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry) + 0)); udelay(10); printk(KERN_EMERG "After switch back:\n"); print_line(&entry); local_irq_restore(flags); } 2) add to sysrq.c: --- 2.4/drivers/char/sysrq.c Mon Dec 4 02:48:19 2000 +++ build-2.4/drivers/char/sysrq.c Fri Jan 12 18:37:57 2001 @@ -137,6 +137,9 @@ send_sig_all(SIGKILL, 1); orig_log_level = 8; break; + case 'q': + kick_IOAPIC_pin(19); + default: /* Unknown: help */ if (kbd) printk("unRaw ");