1. 31 1月, 2018 1 次提交
    • L
      mmc: sdhci: Implement an SDHCI-specific bounce buffer · bd9b9027
      Linus Walleij 提交于
      The bounce buffer is gone from the MMC core, and now we found out
      that there are some (crippled) i.MX boards out there that have broken
      ADMA (cannot do scatter-gather), and also broken PIO so they must
      use SDMA. Closer examination shows a less significant slowdown
      also on SDMA-only capable Laptop hosts.
      
      SDMA sets down the number of segments to one, so that each segment
      gets turned into a singular request that ping-pongs to the block
      layer before the next request/segment is issued.
      
      Apparently it happens a lot that the block layer send requests
      that include a lot of physically discontiguous segments. My guess
      is that this phenomenon is coming from the file system.
      
      These devices that cannot handle scatterlists in hardware can see
      major benefits from a DMA-contiguous bounce buffer.
      
      This patch accumulates those fragmented scatterlists in a physically
      contiguous bounce buffer so that we can issue bigger DMA data chunks
      to/from the card.
      
      When tested with a PCI-integrated host (1217:8221) that
      only supports SDMA:
      0b:00.0 SD Host controller: O2 Micro, Inc. OZ600FJ0/OZ900FJ0/OZ600FJS
              SD/MMC Card Reader Controller (rev 05)
      This patch gave ~1Mbyte/s improved throughput on large reads and
      writes when testing using iozone than without the patch.
      
      dmesg:
      sdhci-pci 0000:0b:00.0: SDHCI controller found [1217:8221] (rev 5)
      mmc0 bounce up to 128 segments into one, max segment size 65536 bytes
      mmc0: SDHCI controller on PCI [0000:0b:00.0] using DMA
      
      On the i.MX SDHCI controllers on the crippled i.MX 25 and i.MX 35
      the patch restores the performance to what it was before we removed
      the bounce buffers.
      
      Cc: Pierre Ossman <pierre@ossman.eu>
      Cc: Benoît Thébaudeau <benoit@wsystem.com>
      Cc: Fabio Estevam <fabio.estevam@nxp.com>
      Cc: Benjamin Beckmeyer <beckmeyer.b@rittal.de>
      Cc: stable@vger.kernel.org # v4.14+
      Fixes: de3ee99b ("mmc: Delete bounce buffer handling")
      Tested-by: NBenjamin Beckmeyer <beckmeyer.b@rittal.de>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      bd9b9027
  2. 17 1月, 2018 3 次提交
  3. 11 1月, 2018 1 次提交
  4. 29 11月, 2017 1 次提交
  5. 02 11月, 2017 1 次提交
    • K
      mmc: Convert timers to use timer_setup() · 2ee4f620
      Kees Cook 提交于
      In preparation for unconditionally passing the struct timer_list pointer to
      all timer callbacks, switch to using the new timer_setup() and from_timer()
      to pass the timer pointer explicitly.
      
      Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
      Cc: Ulf Hansson <ulf.hansson@linaro.org>
      Cc: Jaehoon Chung <jh80.chung@samsung.com>
      Cc: Carlo Caione <carlo@caione.org>
      Cc: Kevin Hilman <khilman@baylibre.com>
      Cc: Nicolas Pitre <nico@fluxnic.net>
      Cc: Jarkko Lavinen <jarkko.lavinen@nokia.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alex Dubov <oakad@yahoo.com>
      Cc: Bruce Chang <brucechang@via.com.tw>
      Cc: Harald Welte <HaraldWelte@viatech.com>
      Cc: Tony Olech <tony.olech@elandigitalsystems.com>
      Cc: Pierre Ossman <pierre@ossman.eu>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Paul Cercueil <paul@crapouillou.net>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Cc: Shawn Lin <shawn.lin@rock-chips.com>
      Cc: Arvind Yadav <arvind.yadav.cs@gmail.com>
      Cc: Allen <allen.lkml@gmail.com>
      Cc: linux-mmc@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-amlogic@lists.infradead.org
      Cc: linux-omap@vger.kernel.org
      Cc: linux-usb@vger.kernel.org
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      2ee4f620
  6. 30 10月, 2017 1 次提交
  7. 30 8月, 2017 7 次提交
  8. 25 4月, 2017 19 次提交
  9. 31 3月, 2017 1 次提交
    • H
      mmc: sdhci: Disable runtime pm when the sdio_irq is enabled · 923713b3
      Hans de Goede 提交于
      SDIO cards may need clock to send the card interrupt to the host.
      
      On a cherrytrail tablet with a RTL8723BS wifi chip, without this patch
      pinging the tablet results in:
      
      PING 192.168.1.14 (192.168.1.14) 56(84) bytes of data.
      64 bytes from 192.168.1.14: icmp_seq=1 ttl=64 time=78.6 ms
      64 bytes from 192.168.1.14: icmp_seq=2 ttl=64 time=1760 ms
      64 bytes from 192.168.1.14: icmp_seq=3 ttl=64 time=753 ms
      64 bytes from 192.168.1.14: icmp_seq=4 ttl=64 time=3.88 ms
      64 bytes from 192.168.1.14: icmp_seq=5 ttl=64 time=795 ms
      64 bytes from 192.168.1.14: icmp_seq=6 ttl=64 time=1841 ms
      64 bytes from 192.168.1.14: icmp_seq=7 ttl=64 time=810 ms
      64 bytes from 192.168.1.14: icmp_seq=8 ttl=64 time=1860 ms
      64 bytes from 192.168.1.14: icmp_seq=9 ttl=64 time=812 ms
      64 bytes from 192.168.1.14: icmp_seq=10 ttl=64 time=48.6 ms
      
      Where as with this patch I get:
      
      PING 192.168.1.14 (192.168.1.14) 56(84) bytes of data.
      64 bytes from 192.168.1.14: icmp_seq=1 ttl=64 time=3.96 ms
      64 bytes from 192.168.1.14: icmp_seq=2 ttl=64 time=1.97 ms
      64 bytes from 192.168.1.14: icmp_seq=3 ttl=64 time=17.2 ms
      64 bytes from 192.168.1.14: icmp_seq=4 ttl=64 time=2.46 ms
      64 bytes from 192.168.1.14: icmp_seq=5 ttl=64 time=2.83 ms
      64 bytes from 192.168.1.14: icmp_seq=6 ttl=64 time=1.40 ms
      64 bytes from 192.168.1.14: icmp_seq=7 ttl=64 time=2.10 ms
      64 bytes from 192.168.1.14: icmp_seq=8 ttl=64 time=1.40 ms
      64 bytes from 192.168.1.14: icmp_seq=9 ttl=64 time=2.04 ms
      64 bytes from 192.168.1.14: icmp_seq=10 ttl=64 time=1.40 ms
      
      Cc: Dong Aisheng <b29396@freescale.com>
      Cc: Ian W MORRISON <ianwmorrison@gmail.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NDong Aisheng <aisheng.dong@nxp.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      923713b3
  10. 23 3月, 2017 1 次提交
  11. 13 2月, 2017 2 次提交
  12. 31 1月, 2017 1 次提交
  13. 20 12月, 2016 1 次提交