An error occurred fetching the project authors.
  1. 17 Jan, 2023 1 commit
  2. 30 Nov, 2022 1 commit
  3. 25 Oct, 2022 1 commit
  4. 22 Sep, 2022 2 commits
  5. 05 Sep, 2022 1 commit
  6. 31 Aug, 2022 1 commit
  7. 25 Aug, 2022 2 commits
  8. 30 Jun, 2022 1 commit
  9. 23 Jun, 2022 1 commit
  10. 12 May, 2022 3 commits
  11. 03 Mar, 2022 3 commits
  12. 17 Feb, 2022 1 commit
  13. 11 Oct, 2021 1 commit
  14. 26 Aug, 2021 2 commits
  15. 18 Jun, 2021 1 commit
  16. 17 Jun, 2021 2 commits
  17. 15 Jun, 2021 1 commit
  18. 09 Jun, 2021 1 commit
  19. 11 Mar, 2021 1 commit
  20. 10 Mar, 2021 1 commit
  21. 29 Jan, 2021 9 commits
  22. 26 Jan, 2021 1 commit
  23. 09 Dec, 2020 2 commits
    • Tejas Joglekar's avatar
      usb: xhci: Use temporary buffer to consolidate SG · 2017a1e5
      Tejas Joglekar authored
      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 can be a problem if a class driver queues SG requests with many
      small-buffer entries. The XHCI driver will create a chained TRB for each
      entry which may trigger this issue.
      
      This patch adds logic to the XHCI driver to detect and prevent this from
      happening.
      
      For every (TRB_CACHE_SIZE - 2), we check the total buffer size of
      the SG list and if the last window of (TRB_CACHE_SIZE - 2) SG list length
      and we don't make up at least 1 MPS, we create a temporary buffer to
      consolidate full SG list into the buffer.
      
      We check at (TRB_CACHE_SIZE - 2) window because it is possible that there
      would be a link and/or event data TRB that take up to 2 of the cache
      entries.
      
      We discovered this issue with devices on other platforms but have not
      yet come across any device that triggers this on Linux. But it could be
      a real problem now or in the future. All it takes is N number of small
      chained TRBs. And other instances of the Synopsys IP may have smaller
      values for the TRB_CACHE_SIZE which would exacerbate the problem.
      Signed-off-by: default avatarTejas Joglekar <joglekar@synopsys.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20201208092912.1773650-3-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2017a1e5
    • Tejas Joglekar's avatar
      usb: xhci: Set quirk for XHCI_SG_TRB_CACHE_SIZE_QUIRK · bac1ec55
      Tejas Joglekar authored
      This commit uses the private data passed by parent device
      to set the quirk for Synopsys xHC. This patch fixes the
      SNPS xHC hang issue when the data is scattered across
      small buffers which does not make atleast MPS size for
      given TRB cache size of SNPS xHC.
      Signed-off-by: default avatarTejas Joglekar <joglekar@synopsys.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20201208092912.1773650-2-mathias.nyman@linux.intel.com
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bac1ec55