linux_dsm_epyc7002/drivers/mmc/host
Russell King 94538e51d6 mmc: sdhci: clean up host cookie handling
Commit d31911b937 ("mmc: sdhci: fix dma memory leak in sdhci_pre_req()")
added a complicated method to manage the DMA map state for the data
transfer, but this complexity is not required.

There are three states:
* Unmapped
* Mapped by sdhci_pre_req()
* Mapped by sdhci_prepare_data()

sdhci_prepare_data() needs to know when the data buffers have been
successfully mapped by sdhci_pre_req(), and if so, there is no need to
map them a second time.

When we come to tear down the mapping, we want to know whether
sdhci_post_req() will be called (which is determined by sdhci_pre_req()
having been previously called) so that we can postpone the unmap
operation.

Hence, it makes sense to simply record when the successful DMA map
happened (via COOKIE_PRE_MAPPED vs COOKIE_MAPPED) rather than having
the complex mechanics involving COOKIE_MAPPED vs COOKIE_GIVEN.

If a mapping is created by sdhci_prepare_data(), we must tear it down
ourselves, without waiting for sdhci_post_req() (hence, the new
COOKIE_MAPPED case).  If the mapping is created by sdhci_pre_req()
then sdhci_post_req() is responsible for tearing the mapping down.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2016-02-29 11:03:22 +01:00
..
android-goldfish.c mmc: android-goldfish: remove incorrect __iomem annotation 2015-09-01 14:19:11 +02:00
atmel-mci.c mmc: atmel-mci: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:58 +01:00
au1xmmc.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
bfin_sdh.c mmc: bfin_sdh: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:59 +01:00
cb710-mmc.c mmc: cb710: Move away from using deprecated APIs 2013-10-30 20:26:37 -04:00
cb710-mmc.h mmc: cb710: use to_platform_device() 2016-01-05 18:04:57 +01:00
davinci_mmc.c mmc: davinci_mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:59 +01:00
dw_mmc-exynos.c mmc: dw_mmc: remove the prepare_command hook 2016-02-29 11:03:09 +01:00
dw_mmc-exynos.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-k3.c mmc: dw_mmc: k3: Fix modalias to make module auto-loading work 2015-06-01 09:07:05 +02:00
dw_mmc-pci.c mmc: dw_mmc-pci: Remove superflous #else condition on CONFIG_PM_SLEEP 2014-09-09 13:59:05 +02:00
dw_mmc-pltfm.c mmc: dw_mmc: remove the prepare_command hook 2016-02-29 11:03:09 +01:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-rockchip.c mmc: dw_mmc: remove the prepare_command hook 2016-02-29 11:03:09 +01:00
dw_mmc.c mmc: dw_mmc: fix num_slots setting 2016-02-29 11:03:11 +01:00
dw_mmc.h mmc: dw_mmc: add hw_reset support 2016-02-29 11:03:09 +01:00
jz4740_mmc.c mmc: jz4740_mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:00 +01:00
Kconfig mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
Makefile mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
mmc_spi.c mmc: mmc_spi: add checks for dma mapping error 2016-02-08 15:22:04 +01:00
mmci_qcom_dml.c mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci_qcom_dml.h mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci.c mmc: mmci: support 8bit mode on the Nomadik 2016-01-14 10:47:46 +01:00
mmci.h mmc: mmci: Add Qcom specific rx_fifocnt logic. 2014-07-09 11:25:57 +02:00
moxart-mmc.c mmc: moxart: Fix module autoload for OF platform driver 2015-10-26 15:59:57 +01:00
mtk-sd.c mmc: mediatek: change some dev_err to dev_dbg 2015-12-22 11:32:17 +01:00
mvsdio.c mmc: mvsdio: delete platform data code path 2015-12-22 11:32:12 +01:00
mvsdio.h
mxcmmc.c mmc: mxcmmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:00 +01:00
mxs-mmc.c mmc: mxs: Constify platform_device_id 2015-06-01 09:06:50 +02:00
of_mmc_spi.c mmc: of_mmc_spi: Add IRQF_ONESHOT to interrupt flags 2015-12-22 11:32:17 +01:00
omap_hsmmc.c mmc: omap_hsmmc: don't print uninitialized variables 2016-02-29 11:02:52 +01:00
omap.c mmc: omap: Fix module autoload for OF platform driver 2015-10-26 15:59:58 +01:00
pxamci.c mmc: pxamci: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:01 +01:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
rtsx_usb_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
s3cmci.c mmc: s3cmci: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:01 +01:00
s3cmci.h mmc: s3cmci: port DMA code to dmaengine API 2014-07-09 11:26:13 +02:00
sdhci_f_sdh30.c mmc: sdhci_f_sdh30: Fix the size passed to sdhci_alloc_host 2015-06-01 09:06:46 +02:00
sdhci-acpi.c mmc: sdhci-acpi: enable sdhci-acpi device to suspend/resume asynchronously 2016-02-29 11:02:52 +01:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Actually enable the clock 2015-06-01 09:56:07 +02:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: fix logic to check for 8-bit data width 2015-10-26 15:59:55 +01:00
sdhci-cns3xxx.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-dove.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: correct the tuning-step setting 2015-12-22 11:32:09 +01:00
sdhci-esdhc.h mmc: sdhci-of-esdhc: support both BE and LE host controller 2015-10-26 16:00:08 +01:00
sdhci-iproc.c mmc: sdhci-iproc: use sdhci_pltfm_unregister directly 2016-02-29 11:02:55 +01:00
sdhci-msm.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Remove no-hispd and no-cmd23 quirks for sdhci-arasan4.9a 2016-02-29 11:02:48 +01:00
sdhci-of-at91.c mmc: sdhci-of-at91: fix pm runtime unbalanced issue in error path 2016-02-02 14:09:14 +01:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: add/remove some quirks according to vendor version 2015-12-22 11:32:11 +01:00
sdhci-of-hlwd.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-pci-core.c mmc: sdhci-pci: Fix card detect race for Intel BXT/APL 2016-02-11 11:39:56 +01:00
sdhci-pci-data.c mmc: sdhci-pci: Add support for drive strength selection for SPT 2015-06-01 09:07:14 +02:00
sdhci-pci-o2micro.c mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci-o2micro.h mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci.h mmc: sdhci-pci: Add more PCI IDs for Intel controllers 2015-10-26 16:00:19 +01:00
sdhci-pic32.c mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
sdhci-pltfm.c mmc: core: enable support for the standard "wakeup-source" property 2015-12-22 11:32:01 +01:00
sdhci-pltfm.h mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pxav2.c mmc: sdhci-{pxav2,pxav3}: Use of_match_ptr() macro 2015-06-01 09:06:53 +02:00
sdhci-pxav3.c mmc: sdhci-pxav3: fix higher speed mode capabilities 2016-02-29 11:03:16 +01:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: sdhci-s3c: Constify platform_device_id 2015-06-01 09:06:52 +02:00
sdhci-sirf.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-spear.c Update Viresh Kumar's email address 2015-07-17 16:39:53 -07:00
sdhci-st.c mmc: sdhci-st: Fix modalias to make module auto-loading work 2015-06-01 09:07:07 +02:00
sdhci-tegra.c mmc: tegra: use correct accessor for misc ctrl register 2016-01-05 18:04:56 +01:00
sdhci.c mmc: sdhci: clean up host cookie handling 2016-02-29 11:03:22 +01:00
sdhci.h mmc: sdhci: clean up host cookie handling 2016-02-29 11:03:22 +01:00
sdricoh_cs.c mmc: sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection 2016-02-29 11:02:45 +01:00
sh_mmcif.c mmc: sh_mmcif: use to_delayed_work 2016-02-29 11:02:46 +01:00
sh_mobile_sdhi.c mmc: sdhi: use faster clock handling on RCar Gen2 2016-02-29 11:03:05 +01:00
sunxi-mmc.c mmc: sunxi-mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:02 +01:00
tifm_sd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
tmio_mmc_dma.c mmc: tmio_dma: remove debug messages with little information 2016-02-29 11:03:03 +01:00
tmio_mmc_pio.c mmc: tmio: disable clock before changing it 2016-02-29 11:03:06 +01:00
tmio_mmc.c mmc: TMIO: Use devm_request_irq() 2015-06-01 09:06:48 +02:00
tmio_mmc.h mmc: tmio: mmc: tmio: tmio_mmc_data has .chan_priv_?x 2015-03-05 21:54:17 +05:30
toshsd.c mmc: toshsd: Fix unbalanced locking 2015-01-19 09:56:07 +01:00
toshsd.h mmc: add Toshiba PCI SD controller driver 2014-11-26 14:30:58 +01:00
usdhi6rol0.c mmc: usdhi6rol0: use to_delayed_work 2016-02-29 11:02:46 +01:00
ushc.c mmc: ushc: Fix incorrect parameter in sizeof 2014-02-25 15:42:20 -05:00
via-sdmmc.c mmc: via-sdmmc: Move away from using deprecated APIs 2013-10-30 20:28:36 -04:00
vub300.c mmc: vub300: Remove unneded semicolons 2015-10-26 15:59:54 +01:00
wbsd.c mmc: wbsd: Remove unneded semicolon 2015-10-26 15:59:53 +01:00
wbsd.h
wmt-sdmmc.c mmc: constify of_device_id array 2015-03-23 14:13:49 +01:00