On Wed, 1 Dec 2010, Sarah Sharp wrote: > On Wed, Dec 01, 2010 at 03:56:00PM -0500, Alan Stern wrote: > > On Wed, 1 Dec 2010, Alan Stern wrote: > > > > > Add a bcdUSB field to the usb_bus structure (might as well make it > > > host-endian since it won't get exposed outside usbcore). This > > > information really belongs there rather than in the driver->flags > > > field, since xhci-hcd now provides two different kinds of buses, but > > > removing it from the driver would mean changing a lot of existing code. > > > > > > The new field can be initialized based on the driver's HCD_MASK bits, > > > and xhci-hcd could adjust it as needed. Then whereever hcd.c tests > > > hcd->driver->flags & HCD_MASK, test hcd->self.bcdUSB instead. > > > > You can also avoid making so many changes to usb_hcd_pci_probe() by > > registering your own probe routine in xhci-pci.c. Have it call > > usb_hcd_pci_probe() twice. You can add a new HCD_NO_RESOURCES flag > > bit, to prevent the various interrupt and memory resources from being > > allocated when the second hcd is registered. > > I'll look into that. But how would registering my own probe routine > help to coordinate the allocation of only one bandwidth mutex? It > really seems like that needs to be in the core. Have the core check for HCD_NO_RESOURCES. If that flag is set, don't allocate or free the bandwidth mutex. In your probe routine, copy the mutex pointer from one hcd to the other. I admit, this amounts to a bunch of somewhat ad-hoc changes just to avoid changing the hcd-is-a-bus assumption. But since that would end up being such a big change, this seems justified. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html