From nobody@FreeBSD.org  Tue Dec  6 08:15:17 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 04B42106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Tue,  6 Dec 2011 08:15:17 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id DE0068FC13
	for <freebsd-gnats-submit@FreeBSD.org>; Tue,  6 Dec 2011 08:15:16 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id pB68FGmB073163
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 6 Dec 2011 08:15:16 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id pB68FG3k073162;
	Tue, 6 Dec 2011 08:15:16 GMT
	(envelope-from nobody)
Message-Id: <201112060815.pB68FG3k073162@red.freebsd.org>
Date: Tue, 6 Dec 2011 08:15:16 GMT
From: Alec <alec.ext@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Fatal trap 12: page fault while in kernel mode
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         163091
>Category:       kern
>Synopsis:       [panic] Fatal trap 12: page fault while in kernel mode
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Dec 06 08:20:09 UTC 2011
>Closed-Date:    
>Last-Modified:  Tue Jan  3 09:20:08 UTC 2012
>Originator:     Alec
>Release:        8.2-RELEASE FreeBSD
>Organization:
HOLDER
>Environment:
FreeBSD gw1 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
>Description:
Dec  6 10:46:49 gw1 kernel: Fatal trap 12: page fault while in kernel mode
Dec  6 10:46:49 gw1 kernel: cpuid = 0; apic id = 00
Dec  6 10:46:49 gw1 kernel: fault virtual address       = 0x400
Dec  6 10:46:49 gw1 kernel: fault code          = supervisor read, page not present
Dec  6 10:46:49 gw1 kernel: instruction pointer = 0x20:0xc08e1324
Dec  6 10:46:49 gw1 kernel: stack pointer               = 0x28:0xe7ac6914
Dec  6 10:46:49 gw1 kernel: frame pointer               = 0x28:0xe7ac6934
Dec  6 10:46:49 gw1 kernel: code segment                = base 0x0, limit 0xfffff, type 0x1b
Dec  6 10:46:49 gw1 kernel: = DPL 0, pres 1, def32 1, gran 1
Dec  6 10:46:49 gw1 kernel: processor eflags    = interrupt enabled, resume, IOPL = 0
Dec  6 10:46:49 gw1 kernel: current process             = 3698 (usbconfig)
Dec  6 10:46:49 gw1 kernel: trap number         = 12
Dec  6 10:46:49 gw1 kernel: panic: page fault
Dec  6 10:46:49 gw1 kernel: cpuid = 0
Dec  6 10:46:49 gw1 kernel: KDB: stack backtrace:
Dec  6 10:46:49 gw1 kernel: #0 0xc08e0d07 at kdb_backtrace+0x47
Dec  6 10:46:49 gw1 kernel: #1 0xc08b1dc7 at panic+0x117
Dec  6 10:46:49 gw1 kernel: #2 0xc0be4b43 at trap_fatal+0x323
Dec  6 10:46:49 gw1 kernel: #3 0xc0be4dc0 at trap_pfault+0x270
Dec  6 10:46:49 gw1 kernel: #4 0xc0be5305 at trap+0x465
Dec  6 10:46:49 gw1 kernel: #5 0xc0bcbebc at calltrap+0x6
Dec  6 10:46:49 gw1 kernel: #6 0xc08da8c4 at device_delete_child+0x94
Dec  6 10:46:49 gw1 kernel: #7 0xc07f0585 at uether_ifdetach+0x125
Dec  6 10:46:49 gw1 kernel: #8 0xc07e80e2 at axe_detach+0x32
Dec  6 10:46:49 gw1 kernel: #9 0xc08da658 at device_detach+0x68
Dec  6 10:46:49 gw1 kernel: #10 0xc08da861 at device_delete_child+0x31
Dec  6 10:46:49 gw1 kernel: #11 0xc08da84c at device_delete_child+0x1c
Dec  6 10:46:49 gw1 kernel: #12 0xc07d3851 at usb_detach_device+0x151
Dec  6 10:46:49 gw1 kernel: #13 0xc07d38c2 at usb_unconfigure+0x42
Dec  6 10:46:49 gw1 kernel: #14 0xc07d3dac at usbd_set_config_index+0x6c
Dec  6 10:46:49 gw1 kernel: #15 0xc07d5f93 at ugen_set_config+0x83
Dec  6 10:46:49 gw1 kernel: #16 0xc07d6824 at ugen_ioctl_post+0x2a4

>How-To-Repeat:
Part Of My Script:
####
WHILE="1"
while [ "$WHILE" -eq 1 ]
do
    /usr/sbin/usbconfig -u 4 -a 2 power_off
    /usr/sbin/usbconfig -d ugen4.1 set_config 255
    /usr/sbin/usbconfig -d ugen4.1 set_config 0
done

####
gw1# usbconfig
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen3.1: <UHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen4.1: <EHCI root HUB Intel> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen4.2: <product 0x3c05 vendor 0x2001> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

After several restarts usb devices the system reboots
>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-i386->freebsd-usb 
Responsible-Changed-By: remko 
Responsible-Changed-When: Wed Dec 21 06:53:06 UTC 2011 
Responsible-Changed-Why:  
Reassign to USB team, the error might be in there. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=163091 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/163091: commit references a PR
Date: Wed, 21 Dec 2011 08:46:17 +0000 (UTC)

 Author: hselasky
 Date: Wed Dec 21 08:46:08 2011
 New Revision: 228758
 URL: http://svn.freebsd.org/changeset/base/228758
 
 Log:
   Fix for race against user-space applications trying to change the
   configuration on USB HUBs.
   
   PR:		kern/163091
   MFC after:	1 week
 
 Modified:
   head/sys/dev/usb/usb_hub.c
 
 Modified: head/sys/dev/usb/usb_hub.c
 ==============================================================================
 --- head/sys/dev/usb/usb_hub.c	Wed Dec 21 02:45:51 2011	(r228757)
 +++ head/sys/dev/usb/usb_hub.c	Wed Dec 21 08:46:08 2011	(r228758)
 @@ -707,6 +707,13 @@ uhub_explore(struct usb_device *udev)
  		DPRINTF("Device is suspended!\n");
  		return (0);
  	}
 +
 +	/*
 +	 * Make sure we don't race against user-space applications
 +	 * like LibUSB:
 +	 */
 +	usbd_enum_lock(udev);
 +
  	for (x = 0; x != hub->nports; x++) {
  		up = hub->ports + x;
  		portno = x + 1;
 @@ -784,6 +791,8 @@ uhub_explore(struct usb_device *udev)
  		up->restartcnt = 0;
  	}
  
 +	usbd_enum_unlock(udev);
 +
  	/* initial status checked */
  	sc->sc_flags |= UHUB_FLAG_DID_EXPLORE;
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/163091: commit references a PR
Date: Sat, 31 Dec 2011 14:24:41 +0000 (UTC)

 Author: hselasky
 Date: Sat Dec 31 14:24:22 2011
 New Revision: 229097
 URL: http://svn.freebsd.org/changeset/base/229097
 
 Log:
   MFC r228758:
   Fix for race against user-space applications trying to change the
   configuration on USB HUBs.
   
   PR:		kern/163091
 
 Modified:
   stable/9/sys/dev/usb/usb_hub.c
 Directory Properties:
   stable/9/sys/   (props changed)
   stable/9/sys/amd64/include/xen/   (props changed)
   stable/9/sys/boot/   (props changed)
   stable/9/sys/boot/i386/efi/   (props changed)
   stable/9/sys/boot/ia64/efi/   (props changed)
   stable/9/sys/boot/ia64/ski/   (props changed)
   stable/9/sys/boot/powerpc/boot1.chrp/   (props changed)
   stable/9/sys/boot/powerpc/ofw/   (props changed)
   stable/9/sys/cddl/contrib/opensolaris/   (props changed)
   stable/9/sys/conf/   (props changed)
   stable/9/sys/contrib/dev/acpica/   (props changed)
   stable/9/sys/contrib/octeon-sdk/   (props changed)
   stable/9/sys/contrib/pf/   (props changed)
   stable/9/sys/contrib/x86emu/   (props changed)
 
 Modified: stable/9/sys/dev/usb/usb_hub.c
 ==============================================================================
 --- stable/9/sys/dev/usb/usb_hub.c	Sat Dec 31 14:22:02 2011	(r229096)
 +++ stable/9/sys/dev/usb/usb_hub.c	Sat Dec 31 14:24:22 2011	(r229097)
 @@ -707,6 +707,13 @@ uhub_explore(struct usb_device *udev)
  		DPRINTF("Device is suspended!\n");
  		return (0);
  	}
 +
 +	/*
 +	 * Make sure we don't race against user-space applications
 +	 * like LibUSB:
 +	 */
 +	usbd_enum_lock(udev);
 +
  	for (x = 0; x != hub->nports; x++) {
  		up = hub->ports + x;
  		portno = x + 1;
 @@ -784,6 +791,8 @@ uhub_explore(struct usb_device *udev)
  		up->restartcnt = 0;
  	}
  
 +	usbd_enum_unlock(udev);
 +
  	/* initial status checked */
  	sc->sc_flags |= UHUB_FLAG_DID_EXPLORE;
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/163091: commit references a PR
Date: Tue,  3 Jan 2012 09:18:00 +0000 (UTC)

 Author: hselasky
 Date: Tue Jan  3 09:17:50 2012
 New Revision: 229371
 URL: http://svn.freebsd.org/changeset/base/229371
 
 Log:
   MFC r228758:
    - Fix for race against user-space applications trying to change the
    configuration on USB HUBs.
   
   PR:     kern/163091
 
 Modified:
   stable/8/sys/dev/usb/usb_hub.c
 Directory Properties:
   stable/8/sys/   (props changed)
   stable/8/sys/amd64/include/xen/   (props changed)
   stable/8/sys/cddl/contrib/opensolaris/   (props changed)
   stable/8/sys/conf/ldscript.mips.octeon1.32   (props changed)
   stable/8/sys/conf/ldscript.mips.octeon1.64   (props changed)
   stable/8/sys/contrib/dev/acpica/   (props changed)
   stable/8/sys/contrib/pf/   (props changed)
 
 Modified: stable/8/sys/dev/usb/usb_hub.c
 ==============================================================================
 --- stable/8/sys/dev/usb/usb_hub.c	Tue Jan  3 09:15:54 2012	(r229370)
 +++ stable/8/sys/dev/usb/usb_hub.c	Tue Jan  3 09:17:50 2012	(r229371)
 @@ -707,6 +707,13 @@ uhub_explore(struct usb_device *udev)
  		DPRINTF("Device is suspended!\n");
  		return (0);
  	}
 +
 +	/*
 +	 * Make sure we don't race against user-space applications
 +	 * like LibUSB:
 +	 */
 +	usbd_enum_lock(udev);
 +
  	for (x = 0; x != hub->nports; x++) {
  		up = hub->ports + x;
  		portno = x + 1;
 @@ -784,6 +791,8 @@ uhub_explore(struct usb_device *udev)
  		up->restartcnt = 0;
  	}
  
 +	usbd_enum_unlock(udev);
 +
  	/* initial status checked */
  	sc->sc_flags |= UHUB_FLAG_DID_EXPLORE;
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
