Re: apic lockups

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Fri, 21 May 2004 10:26:56 -0400
On Thursday 20 May 2004 04:58 pm, Nik Azim Azam wrote:
> hello,
>
> here's the output of 'show intrcnt'.
>
> Stopped at      siointr1+0xdb:  jmp     siointr1+0x210
> db> show intrcnt
> irq1: atkbd0            3
> irq4: sio0              2
> irq5: bge0 atapci1      201267
> irq8: rtc               2512
> irq10: xl0              201832
> irq11: ahc0 ahc1        3
> irq13: npx0             1
> irq14: ata0             1
> irq0: clk               19610
> db>

Ok, it looks like you have an interrupt storm on IRQ's 5 and 10.  Ah, and it 
seems possibly that a change I made recently to the mptable code is incorrect 
even though it's what the MP and ACPI specs say to do.  Can you try this 
patch:

Index: mptable.c
===================================================================
RCS file: /usr/cvs/src/sys/i386/i386/mptable.c,v
retrieving revision 1.232
diff -u -r1.232 mptable.c
--- mptable.c	10 May 2004 18:49:58 -0000	1.232
+++ mptable.c	21 May 2004 14:24:31 -0000
_at__at_ -549,17 +549,10 _at__at_
 	KASSERT(src_bus <= mptable_maxbusid, ("bus id %d too large", src_bus));
 	switch (busses[src_bus].bus_type) {
 	case ISA:
+	case EISA:
 		return (INTR_POLARITY_HIGH);
 	case PCI:
 		return (INTR_POLARITY_LOW);
-#ifndef PC98
-	case EISA:
-		KASSERT(src_bus_irq < 16, ("Invalid EISA IRQ %d", src_bus_irq));
-		if (elcr_read_trigger(src_bus_irq) == INTR_TRIGGER_LEVEL)
-			return (INTR_POLARITY_LOW);
-		else
-			return (INTR_POLARITY_HIGH);
-#endif
 	default:
 		panic("%s: unknown bus type %d", __func__,
 		    busses[src_bus].bus_type);


-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Fri May 21 2004 - 05:26:34 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:54 UTC