[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stable-9.1.1 30/32] hw/sd/sdcard: Fix handling of disabled boot partiti
From: |
Michael Tokarev |
Subject: |
[Stable-9.1.1 30/32] hw/sd/sdcard: Fix handling of disabled boot partitions |
Date: |
Mon, 7 Oct 2024 22:16:47 +0300 |
From: Jan Luebbe <jlu@pengutronix.de>
The enable bits in the EXT_CSD_PART_CONFIG ext_csd register do *not*
specify whether the boot partitions exist, but whether they are enabled
for booting. Existence of the boot partitions is specified by a
EXT_CSD_BOOT_MULT != 0.
Currently, in the case of boot-partition-size=1M and boot-config=0,
Linux detects boot partitions of 1M. But as sd_bootpart_offset always
returns 0, all reads/writes are mapped to the same offset in the backing
file.
Fix this bug by calculating the offset independent of which partition is
enabled for booting.
This bug is unlikely to affect many users with QEMU's current set of
boards, because only aspeed sets boot-partition-size, and it also
sets boot-config to 8. So to run into this a user would have to
manually mark the boot partition non-booting from within the guest.
Cc: qemu-stable@nongnu.org
Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
Message-id: 20240906164834.130257-1-jlu@pengutronix.de
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
[PMM: added note to commit message about effects of bug]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit 9601076b3b0bced7ed597d1470e3ff2f4e7177d6)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index a140a32ccd..26d6eebe89 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -774,19 +774,12 @@ static uint32_t sd_blk_len(SDState *sd)
*/
static uint32_t sd_bootpart_offset(SDState *sd)
{
- bool partitions_enabled;
unsigned partition_access;
if (!sd->boot_part_size || !sd_is_emmc(sd)) {
return 0;
}
- partitions_enabled = sd->ext_csd[EXT_CSD_PART_CONFIG]
- & EXT_CSD_PART_CONFIG_EN_MASK;
- if (!partitions_enabled) {
- return 0;
- }
-
partition_access = sd->ext_csd[EXT_CSD_PART_CONFIG]
& EXT_CSD_PART_CONFIG_ACC_MASK;
switch (partition_access) {
--
2.39.5
- [Stable-9.1.1 13/32] softmmu: Support concurrent bounce buffers, (continued)
- [Stable-9.1.1 13/32] softmmu: Support concurrent bounce buffers, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 14/32] softmmu/physmem: fix memory leak in dirty_memory_extend(), Michael Tokarev, 2024/10/07
- [Stable-9.1.1 15/32] softmmu/physmem.c: Keep transaction attribute in address_space_map(), Michael Tokarev, 2024/10/07
- [Stable-9.1.1 16/32] mac_dbdma: Remove leftover `dma_memory_unmap` calls, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 17/32] migration/multifd: Fix rb->receivedmap cleanup race, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 18/32] hw/char/stm32l4x5_usart.c: Enable USART ACK bit response, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 19/32] target/arm: Correct ID_AA64ISAR1_EL1 value for neoverse-v1, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 20/32] target/hppa: Fix random 32-bit linux-user crashes, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 26/32] hw/mips/jazz: fix typo in in-built NIC alias, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 25/32] target/ppc: Fix lxvx/stxvx facility check, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 30/32] hw/sd/sdcard: Fix handling of disabled boot partitions,
Michael Tokarev <=
- [Stable-9.1.1 21/32] target/ppc: Fix migration of CPUs with TLB_EMB TLB type, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 23/32] hw/loongarch/virt: Add description for virt machine type, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 22/32] migration/multifd: Fix p->iov leak in multifd-uadk.c, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 32/32] vnc: fix crash when no console attached, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 31/32] testing: bump mips64el cross to bookworm and fix package list, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 27/32] util/timer: avoid deadlock when shutting down, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 29/32] target/arm: Avoid target_ulong for physical address lookups, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 28/32] block/reqlist: allow adding overlapping requests, Michael Tokarev, 2024/10/07
- [Stable-9.1.1 24/32] tcg: Fix iteration step in 32-bit gvec operation, Michael Tokarev, 2024/10/07