Skip to content
Snippets Groups Projects
Select Git revision
  • 1e8e55b67030c6a2fef893d428bdcd611f73705c
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

queue.h

  • Adrian Hunter's avatar
    1e8e55b6
    mmc: block: Add CQE support · 1e8e55b6
    Adrian Hunter authored
    
    Add CQE support to the block driver, including:
        - optionally using DCMD for flush requests
        - "manually" issuing discard requests
        - issuing read / write requests to the CQE
        - supporting block-layer timeouts
        - handling recovery
        - supporting re-tuning
    
    CQE offers 25% - 50% better random multi-threaded I/O.  There is a slight
    (e.g. 2%) drop in sequential read speed but no observable change to sequential
    write.
    
    CQE automatically sends the commands to complete requests.  However it only
    supports reads / writes and so-called "direct commands" (DCMD).  Furthermore
    DCMD is limited to one command at a time, but discards require 3 commands.
    That makes issuing discards through CQE very awkward, but some CQE's don't
    support DCMD anyway.  So for discards, the existing non-CQE approach is
    taken, where the mmc core code issues the 3 commands one at a time i.e.
    mmc_erase(). Where DCMD is used, is for issuing flushes.
    
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    1e8e55b6
    History
    mmc: block: Add CQE support
    Adrian Hunter authored
    
    Add CQE support to the block driver, including:
        - optionally using DCMD for flush requests
        - "manually" issuing discard requests
        - issuing read / write requests to the CQE
        - supporting block-layer timeouts
        - handling recovery
        - supporting re-tuning
    
    CQE offers 25% - 50% better random multi-threaded I/O.  There is a slight
    (e.g. 2%) drop in sequential read speed but no observable change to sequential
    write.
    
    CQE automatically sends the commands to complete requests.  However it only
    supports reads / writes and so-called "direct commands" (DCMD).  Furthermore
    DCMD is limited to one command at a time, but discards require 3 commands.
    That makes issuing discards through CQE very awkward, but some CQE's don't
    support DCMD anyway.  So for discards, the existing non-CQE approach is
    taken, where the mmc core code issues the 3 commands one at a time i.e.
    mmc_erase(). Where DCMD is used, is for issuing flushes.
    
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>