New interrupt stuff breaks ASUS 2 CPU system

Harti Brandt brandt at fokus.fraunhofer.de
Fri Nov 7 02:30:12 PST 2003


On Thu, 6 Nov 2003, John Baldwin wrote:

JB>
JB>On 06-Nov-2003 Harti Brandt wrote:
JB>> JB>I figured out what is happenning I think.  You are getting a spurious
JB>> JB>interrupt from the 8259A PIC (which comes in on IRQ 7).  The IRR register
JB>> JB>lists pending interrupts still waiting to be serviced.  Try using
JB>> JB>'options NO_MIXED_MODE' to stop using the 8259A's for the clock and see if
JB>> JB>the spurious IRQ 7 interrupts go away.
JB>>
JB>> Ok, that seems to help. Interesting although why do these interrupts
JB>> happen only with a larger HZ and when the kernel is doing printfs (this
JB>> machine has a serial console). I have also not tried to disable SIO2 and
JB>> the parallel port.
JB>
JB>Can you also try turning mixed mode back on and using
JB>http://www.FreeBSD.org/~jhb/patches/spurious.patch
JB>
JB>You should get some stray IRQ 7's in the vmstat -i output as well as a few
JB>printf's to the kernel console.

Now I'm getting the same 'Couldn't get vector from ISR!' as before on
Xapic_isr1. Again ISR1 is 0 and IRR1 is 0x100.

Here is some data:

db> trace
Debugger(c05ea5f4,0,c05fa63b,c0821b5c,100) at Debugger+0x55
panic(c05fa63b,c0821b6c,c062ab80,c0821bb4,c05ab57d) at panic+0x156
lapic_handle_intr(ffffffff) at lapic_handle_intr+0x1b
Xapic_isr1() at Xapic_isr1+0x3d
--- interrupt, eip = 0xc04bbbfd, esp = 0xc0821bb0, ebp = 0xc0821bb4 ---
critical_exit(c0821bf4,c059af49,c0638100,0,c05f7a08) at critical_exit+0x2d
_mtx_unlock_spin_flags(c0638100,0,c05f7a08,c88,c0821bec) at _mtx_unlock_spin_flags+0x23
siocnputc(c061e8e0,a,5,c0821d10,a) at siocnputc+0xe9
cnputc(a,2060d900,1,0,c05eec77) at cnputc+0x7a
putchar(a,c0821d10,1,0,0) at putchar+0x6c
kvprintf(c05eec76,c04d46b0,c0821d10,a,c0821d30) at kvprintf+0x8d
printf(c05eec76,0,ffffffff,0,c05c6e20) at printf+0x57
tc_init(c0622c60,c0821d78,c05c7b8f,8,8) at tc_init+0xc4
init_TSC_tc(8,8,c05c6e20,0,a0) at init_TSC_tc+0x91
cpu_initclocks(c0821d98,c0490ac5,0,81e000,81ec00) at cpu_initclocks+0x11f
initclocks(0,81e000,81ec00,81e000,0) at initclocks+0x8
mi_startup() at mi_startup+0xb5
begin() at begin+0x2c
db> x *lapic+0x110
0xd78f8110:     0
db> x *lapic+0x210
0xd78f8210:     100

IRQ7 is the parallel port according to dmesg.

harti
-- 
harti brandt,
http://www.fokus.fraunhofer.de/research/cc/cats/employees/hartmut.brandt/private
brandt at fokus.fraunhofer.de, harti at freebsd.org


More information about the freebsd-current mailing list