Message ID | cover.1585297723.git.joglekar@synopsys.com (mailing list archive) |
---|---|
Headers | show |
Series | Add logic to consolidate TRBs for Synopsys xHC | expand |
On Fri, Mar 27, 2020 at 02:22:23PM +0530, Tejas Joglekar wrote: > The Synopsys xHC has an internal TRB cache of size TRB_CACHE_SIZE for > each endpoint. The default value for TRB_CACHE_SIZE is 16 for SS and 8 > for HS. The controller loads and updates the TRB cache from the > transfer ring in system memory whenever the driver issues a start > transfer or update transfer command. > > For chained TRBs, the Synopsys xHC requires that the total amount of > bytes for all TRBs loaded in the TRB cache be greater than or equal to > 1 MPS. Or the chain ends within the TRB cache (with a last TRB). > > If this requirement is not met, the controller will not be able to > send or receive a packet and it will hang causing a driver timeout and > error. > > This patch set adds logic to the XHCI driver to detect and prevent this > from happening along with the quirk to enable this logic for Synopsys > HAPS platform. > > Based on Mathias's feedback on previous implementation where consolidation > was done in TRB cache, with this patch series the implementation is done > during mapping of the URB by consolidating the SG list into a temporary > buffer if the SG list buffer sizes within TRB_CACHE_SIZE is less than MPS. > > > Tejas Joglekar (4): > dt-bindings: usb: Add snps,consolidate-sgl & consolidate-sgl > usb: xhci: Set quirk for XHCI_CONSOLIDATE_SG_LIST > usb: dwc3: Add device property consolidate-sgl > usb: xhci: Use temporary buffer to consolidate SG > > Resending as 'umlaut' is not accepted by some servers in email. Only patch 4/4 seems to have gone through :(
On 3/27/2020 2:58 PM, Greg KH wrote: > On Fri, Mar 27, 2020 at 02:22:23PM +0530, Tejas Joglekar wrote: >> The Synopsys xHC has an internal TRB cache of size TRB_CACHE_SIZE for >> each endpoint. The default value for TRB_CACHE_SIZE is 16 for SS and 8 >> for HS. The controller loads and updates the TRB cache from the >> transfer ring in system memory whenever the driver issues a start >> transfer or update transfer command. >> >> For chained TRBs, the Synopsys xHC requires that the total amount of >> bytes for all TRBs loaded in the TRB cache be greater than or equal to >> 1 MPS. Or the chain ends within the TRB cache (with a last TRB). >> >> If this requirement is not met, the controller will not be able to >> send or receive a packet and it will hang causing a driver timeout and >> error. >> >> This patch set adds logic to the XHCI driver to detect and prevent this >> from happening along with the quirk to enable this logic for Synopsys >> HAPS platform. >> >> Based on Mathias's feedback on previous implementation where consolidation >> was done in TRB cache, with this patch series the implementation is done >> during mapping of the URB by consolidating the SG list into a temporary >> buffer if the SG list buffer sizes within TRB_CACHE_SIZE is less than MPS. >> >> >> Tejas Joglekar (4): >> dt-bindings: usb: Add snps,consolidate-sgl & consolidate-sgl >> usb: xhci: Set quirk for XHCI_CONSOLIDATE_SG_LIST >> usb: dwc3: Add device property consolidate-sgl >> usb: xhci: Use temporary buffer to consolidate SG >> >> Resending as 'umlaut' is not accepted by some servers in email. > > Only patch 4/4 seems to have gone through :( > Resent the missing patches