Hi, Peter Waltenberg told me that for his system the attached patch should work. The main thing is that the printk's are removed from the "critical path" in the apic_error_interrupt. Peter just removed them alltogether, I just moved them to below the actual "workings" of the routine, so that we continue to have feedback on the APIC errors. Oh, I just created this patch. It's quite possible that it doesn't even compile: My bp6 runs stable now, so I'm not motivated to reboot into 2.4.0-test. Roger. diff -ur linux-2.4.0-test2.clean/arch/i386/kernel/apic.c linux-2.4.0-test2.bp6/arch/i386/kernel/apic.c --- linux-2.4.0-test2.clean/arch/i386/kernel/apic.c Sun Jul 2 11:25:53 2000 +++ linux-2.4.0-test2.bp6/arch/i386/kernel/apic.c Tue Jul 4 08:42:09 2000 @@ -709,46 +709,26 @@ * This interrupt should never happen with our APIC/SMP architecture */ -static spinlock_t err_lock = SPIN_LOCK_UNLOCKED; - asmlinkage void smp_error_interrupt(void) { - unsigned long v; - - spin_lock(&err_lock); + unsigned long v, v1; v = apic_read(APIC_ESR); - printk(KERN_INFO "APIC error interrupt on CPU#%d, should never happen.\n", - smp_processor_id()); - printk(KERN_INFO "... APIC ESR0: %08lx\n", v); - apic_write(APIC_ESR, 0); - v |= apic_read(APIC_ESR); - printk(KERN_INFO "... APIC ESR1: %08lx\n", v); - /* - * Be a bit more verbose. (multiple bits can be set) - */ - if (v & 0x01) - printk(KERN_INFO "... bit 0: APIC Send CS Error (hw problem).\n"); - if (v & 0x02) - printk(KERN_INFO "... bit 1: APIC Receive CS Error (hw problem).\n"); - if (v & 0x04) - printk(KERN_INFO "... bit 2: APIC Send Accept Error.\n"); - if (v & 0x08) - printk(KERN_INFO "... bit 3: APIC Receive Accept Error.\n"); - if (v & 0x10) - printk(KERN_INFO "... bit 4: Reserved!.\n"); - if (v & 0x20) - printk(KERN_INFO "... bit 5: Send Illegal Vector (kernel bug).\n"); - if (v & 0x40) - printk(KERN_INFO "... bit 6: Received Illegal Vector.\n"); - if (v & 0x80) - printk(KERN_INFO "... bit 7: Illegal Register Address.\n"); - + v1 = apic_read(APIC_ESR); ack_APIC_irq(); - irq_err_count++; - spin_unlock(&err_lock); + printk (KERN_INFO, "APIC error: %02x(%02x): ", v, v1); + v |= v1; + if (v & 0x01) printk ("SEND CS, "); + if (v & 0x02) printk ("REC CS, "); + if (v & 0x04) printk ("SEND AC, "); + if (v & 0x08) printk ("REC AC, "); + if (v & 0x10) printk ("reserved, "); + if (v & 0x20) printk ("send illegal vec, "); + if (v & 0x40) printk ("rec illegal vec, "); + if (v & 0x80) printk ("illegal reg, "); + printk ("\n"); } -- ** [EMAIL PROTECTED] ** http://www.BitWizard.nl/ ** +31-15-2137555 ** *-- BitWizard writes Linux device drivers for any device you may have! --* * Common sense is the collection of * ****** prejudices acquired by age eighteen. -- Albert Einstein ******** -- =- To unsubscribe, email [EMAIL PROTECTED] with the -= =- body of "unsubscribe linux-abit". -=