NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-evbppc/40288: ci_idepth{++,--} is needed in ext_intr() for ibm4xx
>Number: 40288
>Category: port-evbppc
>Synopsis: ci_idepth{++,--} seems to be needed in ext_intr() for ibm4xx
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: port-evbppc-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Dec 29 13:25:00 +0000 2008
>Originator: FUKAUMI Naoki
>Release: NetBSD 5.0_BETA
>Organization:
FUKAUMI Naoki
>Environment:
NetBSD 5.0_BETA (OPENBLOCKS266) #0: Sun Dec 28 20:35:53 JST 2008
>Description:
OPENBLOCKS266 kernel panics while using wd(4) attached at
hptide(4).
:
hptide0 at pci0 dev 3 function 0
hptide0: Triones/Highpoint HPT371 IDE Controller
hptide0: using irq 30 for native-PCI interrupt
atabus0 at hptide0 channel 0
atabus1 at hptide0 channel 1
wd0 at atabus1 drive 0: <TRANSCEND>
wd0: 1911 MB, 3884 cyl, 16 head, 63 sec, 512 bytes/sect x 3915072 sectors
root device: wd0c
dump device (default wd0b):
file system (default generic):
root on wd0c dumps on wd0b
:
init path (default /sbin/init):
init: copying out path `/sbin/init' 11
Mutex error: mutex_vector_enter: locking against myself
lock address : 0x0000000007de3200
current cpu : 0
current lwp : 0x0000000007f2d900
owner field : 0x0000000007f2d900 wait/spin: 0/0
panic: lock error
Stopped in pid 2.1 (init) at netbsd:cpu_Debugger+0x10: lwz r0, r1, 0
x14
db> bt
0x003f3d30: at panic+0x21c
0x003f3d80: at lockdebug_abort+0x48
0x003f3da0: at mutex_abort+0x54
0x003f3db0: at mutex_vector_enter+0x1b0
0x003f3de0: at biodone2+0x3c
0x003f3e00: at wddone+0x84
0x003f3e20: at wdc_ata_bio_done+0xa8
0x003f3e40: at wdc_ata_bio_intr+0x33c
0x003f3e70: at wdcintr+0xb4
0x003f3e90: at hpt_pci_intr+0x84
0x003f3ec0: at ext_intr+0xfc
0x003f3f00: at emptyidlespin+0x4d8
0x003f3f60: at ext_intr+0xfc
0x003f3fa0: at emptyidlespin+0x4d8
0x89653d60: at 0xfffffffc
0x89653d70: at pmap_enter+0x3d4
0x89653db0: at uvm_fault_internal+0xc1c
0x89653ee0: at trap+0xfc
0x89653f40: user trap 0x1200 by 0x4191a880: srr1=0xc030
r1=0xfffeab60 cr=0x44000042 xer=0 ctr=0x4191a878 esr=0 pid=0x4
>How-To-Repeat:
access wd(4) on OPENBLOCKS266 kernel.
>Fix:
I'm not sure this is correct.
Index: sys/arch/powerpc/ibm4xx/intr.c
===================================================================
RCS file: /home/fun/cvsroot/NetBSD/src/sys/arch/powerpc/ibm4xx/intr.c,v
retrieving revision 1.20
diff -u -p -r1.20 intr.c
--- sys/arch/powerpc/ibm4xx/intr.c 2 Jan 2008 11:48:27 -0000 1.20
+++ sys/arch/powerpc/ibm4xx/intr.c 26 Dec 2008 07:36:33 -0000
@@ -234,6 +234,11 @@ ext_intr(void)
int pcpl;
u_long int_state;
+#ifdef __HAVE_FAST_SOFTINTS
+#error don't count soft interrupts
+#else
+ ci->ci_idepth++;
+#endif
pcpl = ci->ci_cpl;
msr = mfmsr();
@@ -279,6 +284,7 @@ ext_intr(void)
wrteei(1);
splx(pcpl);
mtmsr(msr);
+ ci->ci_idepth--;
}
static inline void
Home |
Main Index |
Thread Index |
Old Index