Hi Farhan,
> On 9 Mar 2022, at 10:29, Farhan Khan <[email protected]> wrote: > I am trying to understand how FreeBSD's USB subsystem works and appear to be > running into a kernel panic due to a failed assertion that I do not > understand. the assertion in question is > /usr/src/sys/dev/usb/usb_transfer.c:1954. This one? USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); > My understanding is that you first configure usbd_transfer_setup(9). To start > a bulk transfer, you populate the appropriate list (typically an STAIL_* > list), then initiate a transfer by calling usbd_transfer_start(9) with the > correct transfer. In my case, my callback is a simple printf(). > > Upon the usbd_transfer_start(9) call, I am hitting the assertion error. I > have looked at other device drivers and have not identified what they are > doing differently. > > Any suggestions? I think that assertion is saying you have to have acquired the USB transfer lock USB_XFER_LOCK() et al, although I am not entirely sure how you do that 'bare'. I have only called usbd_transfer_start in the USB FIFO setup routines. -- Daniel O'Connor "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum
