[PATCH] mach-snapdragon: smem: Use available_length for RAM partition v2+
Aswin Murugan
aswin.murugan at oss.qualcomm.com
Mon Jul 13 18:35:04 CEST 2026
Using length field exposes dynamic carveout regions to kernel, causing
crashes when accessing these reserved memory areas. Subsystems like
hypervisor perform runtime carveouts & records it in SMEM.
RAM partition table v2+ includes available_length field which reflects
memory available after these dynamic carveouts, while length field
represents total partition size. Switch to available_length for v2+
to exclude runtime carveout regions.
Signed-off-by: Aswin Murugan <aswin.murugan at oss.qualcomm.com>
---
This patch is based on changes[1] in Qualcomm U-Boot Custodian Tree
[1] https://lore.kernel.org/u-boot/20260618-b4-modernise-smem-v3-0-472391477988@linaro.org/
---
arch/arm/mach-snapdragon/dram.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-snapdragon/dram.c b/arch/arm/mach-snapdragon/dram.c
index 0b97b698322..914ee6cd4ff 100644
--- a/arch/arm/mach-snapdragon/dram.c
+++ b/arch/arm/mach-snapdragon/dram.c
@@ -70,7 +70,8 @@ int dram_init_banksize(void)
(v == 1 ? ((struct ram_partition_entry_v1 *)(e))->field : \
((struct ram_partition_entry_v3 *)(e))->field))
#define entry_start(v, e) entry_field(v, e, start_address)
-#define entry_length(v, e) entry_field(v, e, length)
+#define entry_length(v, e) (v > 1 ? ((struct ram_partition_entry_v3 *)(e))->available_length : \
+ entry_field(v, e, length))
#define entry_category(v, e) entry_field(v, e, partition_category)
#define entry_domain(v, e) entry_field(v, e, partition_domain)
#define entry_type(v, e) entry_field(v, e, partition_type)
--
2.34.1
More information about the U-Boot
mailing list