Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys



Module Name:    src
Committed By:   riastradh
Date:           Thu Mar  3 06:04:31 UTC 2022

Modified Files:
        src/sys/arch/mips/adm5120/dev: ahci.c
        src/sys/dev/ic: sl811hs.c
        src/sys/dev/usb: ehci.c motg.c ohci.c uhci.c usbdi.c usbdivar.h
            usbroothub.c vhci.c xhci.c
        src/sys/external/bsd/dwc2: dwc2.c
        src/sys/rump/dev/lib/libugenhc: ugenhc.c

Log Message:
usb: Factor usb_insert_transfer out of upm_transfer and make private.

Almost every upm_transfer function starts with:

        mutex_enter(&sc->sc_lock);
        err = usb_insert_transfer(xfer);
        mutex_exit(&sc->sc_lock);
        if (err)
                return err;

Some of them have debug messages sprinkled in here too, or assert
that err == USBD_NORMAL_COMPLETION (alternative is USBD_IN_PROGRESS,
only for pipes with up_running or up_serialise, presumably not
applicable for these types of pipes).  Some of them also assert
xfer->ux_status == USBD_NOT_STARTED, which is guaranteed on entry and
preserved by usb_insert_transer.

Exceptions:

- arch/mips/adm5120/dev/ahci.c ahci_device_isoc_transfer just returns
  USBD_NORMAL_COMPLETION, but I'm pretty sure this is and always has
  been broken anyway, so won't make anything worse (if anything, might
  make it better...)

- external/bsd/dwc2/dwc2.c dwc2_device_bulk_transfer and
  dwc2_device_isoc_transfer _also_ issue dwc2_device_start(xfer)
  under the lock.  This is probably a better way to do it, but let's
  do it uniformly across all HCIs at once.

- rump/dev/lib/libugenhc/ugenhc.c rumpusb_device_bulk_transfer
  sometimes returns USBD_IN_PROGRESS _without_ queueing the transfer,
  in the !rump_threads case.  Not really sure how this is supposed to
  work...  If it actually breaks anything, we can figure it out.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/mips/adm5120/dev/ahci.c
cvs rdiff -u -r1.108 -r1.109 src/sys/dev/ic/sl811hs.c
cvs rdiff -u -r1.302 -r1.303 src/sys/dev/usb/ehci.c
cvs rdiff -u -r1.37 -r1.38 src/sys/dev/usb/motg.c
cvs rdiff -u -r1.318 -r1.319 src/sys/dev/usb/ohci.c
cvs rdiff -u -r1.308 -r1.309 src/sys/dev/usb/uhci.c
cvs rdiff -u -r1.222 -r1.223 src/sys/dev/usb/usbdi.c
cvs rdiff -u -r1.131 -r1.132 src/sys/dev/usb/usbdivar.h
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/usb/usbroothub.c
cvs rdiff -u -r1.23 -r1.24 src/sys/dev/usb/vhci.c
cvs rdiff -u -r1.155 -r1.156 src/sys/dev/usb/xhci.c
cvs rdiff -u -r1.77 -r1.78 src/sys/external/bsd/dwc2/dwc2.c
cvs rdiff -u -r1.29 -r1.30 src/sys/rump/dev/lib/libugenhc/ugenhc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index