Messages in this thread Patch in this message | | | Date | Mon, 16 Feb 1998 21:34:16 +0100 (CET) | From | MOLNAR Ingo <> | Subject | [miniPatch] 2.1.8[67] lockups |
| |
thanks to the detective work of Pablo Bianucci, a very subtle lockup has been traced back. It looks like [i'm not 100% sure] that certain boards do not like if the local APIC and the IO-APIC is accessed at once. Since the IO-APIC code already serializes local APIC and IO-APCI access via irq_controller_lock, this was not a problem. The only remaining window was the local APC timer interrupt, which acks the local APIC without aquiring the irq controller spinlock first. The attached patch fixes this problem, i'm curious wether this makes some other 2.1.8[67] lockups go away?
-- mingo
--- linux/arch/i386/kernel/.smp.c.orig Fri Feb 20 11:18:06 1998 +++ linux/arch/i386/kernel/smp.c Fri Feb 20 11:19:28 1998 @@ -1420,7 +1420,9 @@ * want to be able to accept NMI tlb invalidates * during this time. */ + spin_lock(&irq_controller_lock); ack_APIC_irq (); + spin_unlock(&irq_controller_lock); smp_local_timer_interrupt(regs); } --- linux/arch/i386/kernel/.irq.c.orig Fri Feb 20 11:16:17 1998 +++ linux/arch/i386/kernel/irq.c Fri Feb 20 11:17:29 1998 @@ -716,10 +716,8 @@ irq_exit(cpu, irq); __restore_flags(flags); - } else { - enable_IO_APIC_irq(irq); + } else spin_unlock_irqrestore(&irq_controller_lock, flags); - } } #endif
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |