NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: port-i386/57197: GENERIC kernel crash on pentium-III and earlier CPUs
> [ 1.0000030] cpu0: Intel 686-class, 936MHz, id 0x68a
> [ 1.0000030] cpu0: node 0, package 0, core 0, smt 0
> [...]
> [ 30.4197804] fatal page fault in supervisor mode
> [ 30.4197804] trap type 6 code 0 eip 0xc0617718 cs 0x8 eflags 0x10246 cr2
can you provide a little more of the dmesg above the 'fatal page fault'
for all instances? ie, what was the previous message / what was going
on the system right now.
some of the fault in the interrupt handler, but some are faulting when
an interrupt is being established.
> intr_biglock_wrapper(c186be80,d7c92f10,0,0,0,0,0,0,0,0) at netbsd:intr_biglock_wrapper+0x68
> --- switch to interrupt stack ---
> Xintr_legacy5() at netbsd:Xintr_legacy5+0xda
> --- interrupt ---
> x86_stihlt(c16ac040,0,c0637e70,0,0,c168f100,c0a10100,c168f100,d7c90000,c168f100) at netbsd:x86_stihlt+0x5
> idle_loop(c16ac040,cbb000,cc4000,0,c01005a8,0,0,0,0,0) at netbsd:idle_loop+0x153
panicked after taking an interrupt.
> hardclock(0,0,c57bff6c,c04ac8f1,0,0,0,0,0,0) at netbsd:hardclock+0x23
> clockintr(0,0,0,0,0,0,0,0,c1c72000,c010322a) at netbsd:clockintr+0x2a
> intr_kdtrace_wrapper(c1c33b80,c19f5d9c,0,0,0,0,0,0,0,0) at netbsd:intr_kdtrace_wrapper+0x21
> --- switch to interrupt stack ---
> Xintr_legacy0() at netbsd:Xintr_legacy0+0xda
> --- interrupt ---
> outb(c16260c0,c1623f80,0,20,1,0,0,c16c5a80,c19f5e94,0) at netbsd:outb+0x9
> intr_establish_xname(0,c16260c0,0,1,7,c04c96b5,0,0,c134f916,0) at netbsd:intr_establish_xname+0x2ba
this time, taking an interrupt while setting one up.
> Xintr_legacy0() at netbsd:Xintr_legacy0+0xda
> --- interrupt ---
> outb(c0955480,c0953540,0,20,1,0,0,c099ffc0,c0bfbe94,0) at netbsd:outb+0x9
> intr_establish_xname(0,c0955480,0,1,7,c0248305,0,0,c0813d2b,0) at netbsd:intr_establish_xname+0x2ba
as above.
i can't tell where the "outb" call in intr_establish_xname() comes
from. in my GENERIC, this ends being:
0xc04b0acd <+693>: call 0xc0f86a47 <__x86_indirect_thunk_eax>
>> 0xc04b0ad2 <+698>: mov %fs:0x304,%edx
0xc04b0ad9 <+705>: mov -0x5c(%ebp),%eax
0xc04b0adc <+708>: cmp %edx,%eax
0xc04b0ade <+710>: je 0xc04b0aed <intr_establish_xname+725>
is intr_establish_xname+0x2ba(). this is x86_curcpu() it seems:
(gdb) l *(intr_establish_xname+0x2ba)
0xc04b0ad2 is in intr_establish_xname (./machine/cpu.h:53).
48 __inline __always_inline static struct cpu_info * __unused
...
53 __asm volatile("movl %%fs:%1, %0" :
54 "=r" (ci) :
55 "m"
56 (*(struct cpu_info * const *)offsetof(struct cpu_info, ci_self)));
this turns to for me to be here:
(gdb) l *(intr_establish_xname+708)
...
969 /* All set up, so add a route for the interrupt and unmask it. */
970 (*pic->pic_addroute)(pic, ci, pin, idt_vec, type);
971 if (ci == curcpu() || !mp_online) {
972 intr_hwunmask_xcall(ih, NULL);
John, can you check your netbsd.gdb and see if you can confirm the
same addresses, or point out where yours are?
Home |
Main Index |
Thread Index |
Old Index