Feature #8550


increase xhci bulk transfer sgl count

Added by Robert Mustacchi over 6 years ago. Updated about 5 years ago.

driver - device drivers
Start date:
Due date:
% Done:


Estimated time:
Gerrit CR:
External Bug:


The xhci driver today defaults to using DMA attributes of up to 8 entries when performing bulk transfers. We had examples where the OS wanted 9 sgl entries for such a transfer. If for some reason the system cannot satisfy this number of transfers, the attempt to bind DMA memory will fail because the xhci driver does not support falling back to using DMA windows to perform the bulk transfer. As such, we should increase the default number of SGLs that we use. The upper bound on such a number (as described in the code) is based on the ring size. We use page size rings which means 4k on x86. When divided by the size of a ring entry, this gives us 256 entries in the ring. Thus we need to determine a number that is flexible enough, without going over the total size of the ring for a given number . For the time being we've chosen 64 as a middle ground.

Actions #1

Updated by Michal Nowak over 5 years ago

We recently had an user bug report regarding a similar issue when the user tried to access camera with gphoto2 app which is itself using libusb:

Actions #2

Updated by Robert Mustacchi about 5 years ago

  • Subject changed from increase xhci sgl count to increase xhci bulk transfer sgl count
Actions #3

Updated by Electric Monk about 5 years ago

  • Status changed from New to Closed

git commit 2aba3acda67326648fd60aaf2bfb4e18ee8c04ed

commit  2aba3acda67326648fd60aaf2bfb4e18ee8c04ed
Author: Robert Mustacchi <>
Date:   2018-12-01T05:49:03.000Z

    9816 Multi-TRB xhci transfers should use event data
    9817 xhci needs to always set slot context
    8550 increase xhci bulk transfer sgl count
    9818 xhci_transfer_get_tdsize can return values that are too large
    Reviewed by: Alex Wilson <>
    Reviewed by: Jerry Jelinek <>
    Approved by: Joshua M. Clulow <>


Also available in: Atom PDF