Subject: crash from ohci detach
To: None <current-users@netbsd.org>
From: Steven M. Bellovin <smb@cs.columbia.edu>
List: current-users
Date: 01/02/2008 18:09:15
I'm experiencing a repeatable crash the *second* time I remove a
Cardbus EVDO card.  Here's what the attach looks like:

	ohci0 at cardbus0 function 0: NEC USB Host Controller (rev. 0x43)
	ohci0: interrupting at 11
	ohci0: OHCI version 1.0
	usb3 at ohci0: USB revision 1.0
	uhub3 at usb3
	uhub3: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
	uhub3: 1 port with 1 removable, self powered
	ohci1 at cardbus0 function 1: NEC USB Host Controller (rev. 0x43)
	ohci1: interrupting at 11
	ohci1: OHCI version 1.0
	usb4 at ohci1: USB revision 1.0
	uhub4 at usb4
	uhub4: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
	uhub4: 1 port with 1 removable, self powered
	umodem0 at uhub3 port 1 configuration 1 interface 0
	Jan  2 17:30:24 berkshire /netbsd:
	umodem0: Curitel Communications, Inc. Curitel Communications, Inc., rev 1.10/0.00, addr 2, iclass 2/2
	umodem0: data interface 1, has CM over data, has break
	umodem0: status change notification available
	ucom0 at umodem0

I run ppp; on exit; I run

	drvctl -d ohci0; drvctl -d ohci1

The first time, everything is fine.  The second time, though, the system
crashes.  Worse yet, I don't get a crash dump; savecore says that there's
an invalid PTE and refuses to proceed, even with -f.  

Eyeballing the panic, it says "ohci_intr:... bad address" followed by
a uvm_fault.  These are both consistent with a bad PTE...

The problem started some time after the PM merge.  A locking problem?
A register/deregister problem?  (It happened even before my addition
of pmf_register/pmf_deregister to ucom.c.  There are not yet any calls
to pmf_register/pmf_deregister in umodem.c; this needs to be fixed as well,
but I suspect it's a separate issue.)

Suggestions on how to approach debugging this?  The machine is a laptop
with no serial port, so I can't set up a serial console.

		--Steve Bellovin, http://www.cs.columbia.edu/~smb