On Thu, Apr 08, 2010 at 09:15:38AM +0200, Hans Petter Selasky wrote: > On Thursday 08 April 2010 02:10:28 David Young wrote: > > I would like for MI drivers to be able to override pci(9), bus_space(9), > > and bus_dma(9) behavior for the purpose of handling exceptions, managing > > bus resources, creating test harnesses, and counting events. > > > > Matt Thomas nudged me in some private discussions to leave MD the > > bus_space_tag_t and pci_chipset_tag_t, instead of embedding an MI tag, > > and to let each architecture provide its own implementation of an > > MI override functions for bus_space(9) and pci(9). Matt powerfully > > influenced the look of the override API. > > > > Hi, > > If for example a PCI device is behind an USB interface, should the bus space > methods take a mutex argument to allow sleeping which is due to the fact that > USB cannot complete the I/O operation immediately?
bus_space_read_4() and family are called from interrupt context, where sleeping is not allowed. I suppose that if the kernel can initiate USB requests from interrupt context, and if the USB host controller interrupts occur at a higher priority than any PCI interrupt handler, bus_space_read_4() could spin-wait for a read to complete. Would it even be worth the trouble to make it work? Does a USB-to-PCI bridge exist? Dave -- David Young OJC Technologies [email protected] Urbana, IL * (217) 278-3933
