android_kernel_samsung_sm8650/drivers/mmc/core
Jorge Ramirez-Ortiz d385f8f23f UPSTREAM: mmc: core: Do not force a retune before RPMB switch
Requesting a retune before switching to the RPMB partition has been
observed to cause CRC errors on the RPMB reads (-EILSEQ).

Since RPMB reads can not be retried, the clients would be directly
affected by the errors.

This commit disables the retune request prior to switching to the RPMB
partition: mmc_retune_pause() no longer triggers a retune before the
pause period begins.

This was verified with the sdhci-of-arasan driver (ZynqMP) configured
for HS200 using two separate eMMC cards (DG4064 and 064GB2). In both
cases, the error was easy to reproduce triggering every few tenths of
reads.

With this commit, systems that were utilizing OP-TEE to access RPMB
variables will experience an enhanced performance. Specifically, when
OP-TEE is configured to employ RPMB as a secure storage solution, it not
only writes the data but also the secure filesystem within the
partition. As a result, retrieving any variable involves multiple RPMB
reads, typically around five.

For context, on ZynqMP, each retune request consumed approximately
8ms. Consequently, reading any RPMB variable used to take at the very
minimum 40ms.

After droping the need to retune before switching to the RPMB partition,
this is no longer the case.

Change-Id: I2320a38436b05b435ac528c6656b621a1e2eaeb7
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
Acked-by: Avri Altman <avri.altman@wdc.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20240103112911.2954632-1-jorge@foundries.io
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
(cherry picked from commit 67380251e8bbd3302c64fea07f95c31971b91c22)
Signed-off-by: Danesh Petigara <danesh.petigara@broadcom.com>
2024-06-07 09:06:09 -07:00
..
block.c This is the 6.1.76 stable release 2024-04-16 15:01:11 +00:00
block.h
bus.c
bus.h
card.h Revert "mmc: Add quirk MMC_QUIRK_BROKEN_CACHE_FLUSH for Micron eMMC Q2J54A" 2023-12-12 18:42:07 +00:00
core.c This is the 6.1.66 stable release 2023-12-14 12:51:15 +00:00
core.h
crypto.c
crypto.h
debugfs.c
host.c UPSTREAM: mmc: core: Do not force a retune before RPMB switch 2024-06-07 09:06:09 -07:00
host.h
Kconfig
Makefile
mmc_ops.c mmc: core: Align to common busy polling behaviour for mmc ioctls 2023-11-02 09:35:21 +01:00
mmc_ops.h
mmc_test.c
mmc.c Revert "mmc: Add quirk MMC_QUIRK_BROKEN_CACHE_FLUSH for Micron eMMC Q2J54A" 2023-12-12 18:42:07 +00:00
pwrseq_emmc.c
pwrseq_sd8787.c mmc: pwrseq: sd8787: Fix WILC CHIP_EN and RESETN toggling order 2023-06-09 10:34:22 +02:00
pwrseq_simple.c
pwrseq.c
pwrseq.h
queue.c ANDROID: mmc: core: Export core functions for kernel modules usage 2023-06-01 18:00:57 +00:00
queue.h
quirks.h Revert "mmc: Add quirk MMC_QUIRK_BROKEN_CACHE_FLUSH for Micron eMMC Q2J54A" 2023-12-12 18:42:07 +00:00
regulator.c Revert "mmc: core: add helpers mmc_regulator_enable/disable_vqmmc" 2024-01-04 21:47:02 +00:00
sd_ops.c
sd_ops.h
sd.c ANDROID: mmc: Add vendor hooks for sdcard failure diagnostics 2023-11-02 22:52:08 +00:00
sd.h
sdio_bus.c
sdio_bus.h
sdio_cis.c
sdio_cis.h
sdio_io.c
sdio_irq.c
sdio_ops.c
sdio_ops.h
sdio_uart.c
sdio.c mmc: core: sdio: hold retuning if sdio in 1-bit mode 2023-10-25 12:03:13 +02:00
slot-gpio.c
slot-gpio.h