Subject: kern/22329: page fault on ohci_softintr
To: None <gnats-bugs@gnats.netbsd.org>
From: Yasuoka Masahiko <yasuoka@yasuoka.net>
List: netbsd-bugs
Date: 08/01/2003 17:11:30
>Number:         22329
>Category:       kern
>Synopsis:       panic on ohci_softintr
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 01 08:12:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Yasuoka Masahiko
>Release:        NetBSD 1.6.1
>Organization:
Second Software Inc.
>Environment:
	
	
System: NetBSD dev3.stm.second-software.com 1.6.1 NetBSD 1.6.1 (GENERIC) #0: Tue Apr  8 12:05:52 UTC 2003     autobuild@tgm.daemon.org:/autobuild/netbsd-1-6/i386/OBJ/autobuild/netbsd-1-6/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386

ohci0 at pci0 dev 15 function 2: ServerWorks product 0x0221 (rev. 0x05)
ohci0: interrupting at irq 5
ohci0: OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
uhub0 at usb0
uhub0: ServerWorks OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
pcib0 at pci0 dev 15 function 3
pcib0: ServerWorks product 0x0227 (rev. 0x00)
        :
ugen0 at uhub0 port 2
ugen0: OmniVision OV511+ Camera, rev 1.00/1.00, addr 2

(DELL PowerEdge 600SC with Creative WebCam Pro)

>Description:
I'm going to take a picture by a USB camera(Creative WebCam Pro) with
'vid'(/usr/pkgsrc/graphics/vid).  But the kernel cause panic like
bellow.

# ./vid -d ugen0
kernel: page fault trap, code=0
Stopped at      ohci_softintr+0x258:    movl          0x20(%ebx),%ecx
db> t
ohci_softintr(c0c02000,d3dbe7b4,c01d7140,c0c02000) at ohci_softintr+0x258
softintr_dispatch(1) at softintr_dispatch+0x99
Xsoftnet() at Xsoftnet+0x74
--- interrupt ---
idle(d3ab9acc,c0cb1657,d3dbeed8,c0286268) at idle+0x1b
bpendtsleep(c0c2928c,116,c0633925,0,0) at bpendtsleep
ugen_do_read(c0c29000,1,d3dbeee0,0,d3dbee3c) at ugen_do_read+0x2f7
ugenread(4001,d3dbeee0,0,c02b6173,d3d77940) at ugenread+0x47
spec_read(d3dbee3c,d3ab9acc,d3dbee30,c02b1a4a,d3dbee24) at spec_read+0x76
ufsspec_read(d3dbee3c,6,d3dbee60,c04f66e0,0) at ufsspec_read+0x33
VOP_READ(d3d77940,d3dbeee0,0,c0b6cf00,d3d77940) at VOP_READ+0x3b
vn_read(d3abb4ac,d3abb4d4,d3dbeee0,c0b6cf00,1) at vn_read+0x7b
dofileread(d3ab9acc,4,d3abb4ac,bfbfd320,3c1) at dofileread+0x9a
sys_read(d3ab9acc,d3dbef80,d3dbef78,c0377f48) at sys_read+0x46
syscall_plain(1f,1f,1f,1f,bfbfc72e) at syscall_plain+0xa7
db>
>How-To-Repeat:
See above section.  It repeats 100% on my machine.
>Fix:
I found a workaround.

Index: ohci.c
===================================================================
RCS file: /vol/cvs/NetBSD/src/sys/dev/usb/ohci.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 ohci.c
--- ohci.c	2003/06/12 11:37:41	1.1.1.1
+++ ohci.c	2003/08/01 07:05:09
@@ -3375,7 +3375,7 @@ ohci_device_isoc_done(usbd_xfer_handle x
 
 	DPRINTFN(1,("ohci_device_isoc_done: xfer=%p\n", xfer));
 
-	xfer->hcpriv = NULL;
+	/* xfer->hcpriv = NULL; */
 }
 
 usbd_status
>Release-Note:
>Audit-Trail:
>Unformatted: