freebsd-skq/sys/dev/usb
Attilio Rao 444b91868b Make the newbus subsystem Giant free by adding the new newbus sxlock.
The newbus lock is responsible for protecting newbus internIal structures,
device states and devclass flags. It is necessary to hold it when all
such datas are accessed. For the other operations, softc locking should
ensure enough protection to avoid races.

Newbus lock is automatically held when virtual operations on the device
and bus are invoked when loading the driver or when the suspend/resume
take place. For other 'spourious' operations trying to access/modify
the newbus topology, newbus lock needs to be automatically acquired and
dropped.

For the moment Giant is also acquired in some key point (modules subsystem)
in order to avoid problems before the 8.0 release as module handlers could
make assumptions about it. This Giant locking should go just after
the release happens.

Please keep in mind that the public interface can be expanded in order
to provide more support, if there are really necessities at some point
and also some bugs could arise as long as the patch needs a bit of
further testing.

Bump __FreeBSD_version in order to reflect the newbus lock introduction.

Reviewed by:    ed, hps, jhb, imp, mav, scottl
No answer by:   ariff, thompsa, yongari
Tested by:      pho,
                G. Trematerra <giovanni dot trematerra at gmail dot com>,
                Brandon Gooch <jamesbrandongooch at gmail dot com>
Sponsored by:   Yahoo! Incorporated
Approved by:	re (ksmith)
2009-08-02 14:28:40 +00:00
..
controller Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
input Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
misc - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
net Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
quirk - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
serial ULPT: 2009-07-30 00:16:06 +00:00
storage Sync to p4 2009-06-27 21:23:30 +00:00
template - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
wlan Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
ufm_ioctl.h Move the new USB stack into its new home. 2009-02-23 18:31:00 +00:00
usb_bus.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_busdma.c MFp4: 2009-07-12 16:46:43 +00:00
usb_busdma.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_cdc.h s/usb2_/usb_/ on all C structs for the USB stack. 2009-05-28 17:36:36 +00:00
usb_compat_linux.c Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
usb_compat_linux.h USB CORE - compat Linux: 2009-07-30 00:16:50 +00:00
usb_controller.h USB CORE: 2009-07-30 00:14:34 +00:00
usb_core.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_core.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_debug.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_debug.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_dev.c Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
usb_dev.h USB core: 2009-07-30 00:15:50 +00:00
usb_device.c USB core: 2009-07-30 00:15:50 +00:00
usb_device.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_dynamic.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_dynamic.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_endian.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_error.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_freebsd.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_generic.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_generic.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_handle_request.c Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
usb_hid.c USB CORE - Improve HID parsing 2009-07-30 00:17:08 +00:00
usb_hub.c Make the newbus subsystem Giant free by adding the new newbus sxlock. 2009-08-02 14:28:40 +00:00
usb_hub.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_if.m Sync to p4 2009-06-27 21:23:30 +00:00
usb_ioctl.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_lookup.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_mbuf.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_mbuf.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_msctest.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_msctest.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_parse.c USB core: 2009-07-30 00:15:50 +00:00
usb_pci.h Fix _USB2_* refernces in the header protection defines. 2009-06-15 01:09:19 +00:00
usb_process.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_process.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_request.c USB core: 2009-07-30 00:15:50 +00:00
usb_request.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_transfer.c USB CORE: 2009-07-30 00:14:34 +00:00
usb_transfer.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_util.c - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb_util.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usb.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usbdevs fixes a typo for DWA120 device ID. 2009-07-30 18:53:06 +00:00
usbdi_util.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00
usbdi.h Missed this file for r195963: 2009-07-30 00:57:54 +00:00
usbhid.h - Make struct usb_xfer opaque so that drivers can not access the internals 2009-06-23 02:19:59 +00:00