Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Dec 2011 19:33:29 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Hans Petter Selasky <hselasky@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r228711 - head/sys/dev/usb/controller
Message-ID:  <4EEF7569.4010401@FreeBSD.org>
In-Reply-To: <201112191535.pBJFZ6hY063597@svn.freebsd.org>
References:  <201112191535.pBJFZ6hY063597@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 19/12/2011 17:35 Hans Petter Selasky said the following:
> Author: hselasky
> Date: Mon Dec 19 15:35:05 2011
> New Revision: 228711
> URL: http://svn.freebsd.org/changeset/base/228711
> 
> Log:
>   Add code to wait for USB shutdown to be executed at system shutdown.
>   Add sysctl which can be used to skip this waiting.
>   
>   MFC after:	3 days

Thank you!
One comment below.

> Modified:
>   head/sys/dev/usb/controller/usb_controller.c
> 
> Modified: head/sys/dev/usb/controller/usb_controller.c
> ==============================================================================
> --- head/sys/dev/usb/controller/usb_controller.c	Mon Dec 19 14:55:14 2011	(r228710)
> +++ head/sys/dev/usb/controller/usb_controller.c	Mon Dec 19 15:35:05 2011	(r228711)
> @@ -87,7 +87,12 @@ SYSCTL_INT(_hw_usb_ctrl, OID_AUTO, debug
>  static int usb_no_boot_wait = 0;
>  TUNABLE_INT("hw.usb.no_boot_wait", &usb_no_boot_wait);
>  SYSCTL_INT(_hw_usb, OID_AUTO, no_boot_wait, CTLFLAG_RDTUN, &usb_no_boot_wait, 0,
> -    "No device enumerate waiting at boot.");
> +    "No USB device enumerate waiting at boot.");
> +
> +static int usb_no_shutdown_wait = 0;
> +TUNABLE_INT("hw.usb.no_shutdown_wait", &usb_no_shutdown_wait);
> +SYSCTL_INT(_hw_usb, OID_AUTO, no_shutdown_wait, CTLFLAG_RDTUN, &usb_no_shutdown_wait, 0,

Does this knob (as well as the one before it) have to be CTLFLAG_RDTUN?
I think that it should pretty safe to make it CTLFLAG_RW | CTLFLAG_TUN.

> +    "No USB device waiting at system shutdown.");
>  
>  static devclass_t usb_devclass;
>  
> @@ -277,11 +282,20 @@ usb_shutdown(device_t dev)
>  		return (0);
>  	}
>  
> +	device_printf(bus->bdev, "Controller shutdown\n");
> +
>  	USB_BUS_LOCK(bus);
>  	usb_proc_msignal(&bus->explore_proc,
>  	    &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
> +	if (usb_no_shutdown_wait == 0) {
> +		/* wait for shutdown callback to be executed */
> +		usb_proc_mwait(&bus->explore_proc,
> +		    &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
> +	}
>  	USB_BUS_UNLOCK(bus);
>  
> +	device_printf(bus->bdev, "Controller shutdown complete\n");
> +
>  	return (0);
>  }
>  


-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EEF7569.4010401>