kernel_samsung_a53x/drivers/mmc/core
Dominique Martinet 5fd111dcb7 mmc: core: Fix switch on gp3 partition
[ Upstream commit 4af59a8df5ea930038cd3355e822f5eedf4accc1 ]

Commit e7794c14fd73 ("mmc: rpmb: fixes pause retune on all RPMB
partitions.") added a mask check for 'part_type', but the mask used was
wrong leading to the code intended for rpmb also being executed for GP3.

On some MMCs (but not all) this would make gp3 partition inaccessible:
armadillo:~# head -c 1 < /dev/mmcblk2gp3
head: standard input: I/O error
armadillo:~# dmesg -c
[  422.976583] mmc2: running CQE recovery
[  423.058182] mmc2: running CQE recovery
[  423.137607] mmc2: running CQE recovery
[  423.137802] blk_update_request: I/O error, dev mmcblk2gp3, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 0
[  423.237125] mmc2: running CQE recovery
[  423.318206] mmc2: running CQE recovery
[  423.397680] mmc2: running CQE recovery
[  423.397837] blk_update_request: I/O error, dev mmcblk2gp3, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  423.408287] Buffer I/O error on dev mmcblk2gp3, logical block 0, async page read

the part_type values of interest here are defined as follow:
main  0
boot0 1
boot1 2
rpmb  3
gp0   4
gp1   5
gp2   6
gp3   7

so mask with EXT_CSD_PART_CONFIG_ACC_MASK (7) to correctly identify rpmb

Fixes: e7794c14fd73 ("mmc: rpmb: fixes pause retune on all RPMB partitions.")
Cc: stable@vger.kernel.org
Cc: Jorge Ramirez-Ortiz <jorge@foundries.io>
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20240306-mmc-partswitch-v1-1-bf116985d950@codewreck.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 09:22:33 +01:00
..
block.c mmc: core: Fix switch on gp3 partition 2024-11-19 09:22:33 +01:00
block.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bus.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
card.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core.c mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
core.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
host.c mmc: core: Cancel delayed work before releasing host 2024-11-18 12:12:08 +01:00
host.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmc.c mmc: core: Fix eMMC initialization with 1-bit bus connection 2024-11-18 23:18:29 +01:00
mmc_ops.c mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
mmc_ops.h mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
mmc_test.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_emmc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_sd8787.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_simple.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
queue.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
queue.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
quirks.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
regulator.c mmc: core: add helpers mmc_regulator_enable/disable_vqmmc 2024-11-18 12:11:17 +01:00
sd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd_ops.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd_ops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio.c mmc: core: sdio: hold retuning if sdio in 1-bit mode 2024-11-08 11:26:18 +01:00
sdio_bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_bus.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_cis.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_cis.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_io.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_irq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_ops.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_ops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_uart.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slot-gpio.c mmc: slot-gpio: Allow non-sleeping GPIO ro 2024-11-18 12:13:32 +01:00
slot-gpio.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00