[PATCH v3 01/11] rockchip: sdram: Support getting banks from TPL for rk3568 and rk3588
Quentin Schulz
quentin.schulz at theobroma-systems.com
Wed Apr 24 11:11:54 CEST 2024
Hi Jonas,
On 4/24/24 00:40, Jonas Karlman wrote:
> Hi Quentin,
>
> On 2024-04-15 16:16, Quentin Schulz wrote:
>> From: Quentin Schulz <quentin.schulz at theobroma-systems.com>
[...]
>> + if (!(tmp_mem_map->attrs & PTE_BLOCK_NON_SHARE)) {
>
> This check does not seem to work because PTE_BLOCK_NON_SHARE evaluates
> to 0. Because of this the logic to split the 0-8 GiB bank reported on
> rk3568 is never split in two.
>
Oof, that's a bit oversight, thanks for the catch.
Can you test the following please?
"""
diff --git a/arch/arm/mach-rockchip/sdram.c b/arch/arm/mach-rockchip/sdram.c
index 5b1ff1e5495..0492f9b9f41 100644
--- a/arch/arm/mach-rockchip/sdram.c
+++ b/arch/arm/mach-rockchip/sdram.c
@@ -196,7 +196,23 @@ static int rockchip_dram_init_banksize(void)
const phys_size_t rsrv_size = tmp_mem_map->size;
const phys_addr_t rsrv_end = rsrv_start + rsrv_size;
- if (!(tmp_mem_map->attrs & PTE_BLOCK_NON_SHARE)) {
+ /*
+ * DRAM memories are expected by Arm to be marked as
+ * Normal Write-back cacheable, Inner shareable[1], so
+ * let's filter on that to put holes in non-DRAM areas.
+ *
+ * [1]
https://developer.arm.com/documentation/102376/0200/Cacheability-and-shareability-attributes
+ */
+ const u64 dram_attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+ PTE_BLOCK_INNER_SHARE;
+ /*
+ * (AttrIndx | SH) in Lower Attributes of Block
+ * Descriptor[2].
+ * [2]
https://developer.arm.com/documentation/102376/0200/Describing-memory-in-AArch64
+ */
+ const u64 attrs_mask = PMD_ATTRINDX_MASK | GENMASK(9, 8);
+
+ if ((tmp_mem_map->attrs & attrs_mask) == dram_attrs) {
tmp_mem_map++;
continue;
}
"""
The DRAM mem_map entry for Rockchip devices seems to have those
attributes and no other non-DRAM entry seems to have
PTE_BLOCK_MEMTYPE(MT_NORMAL).
We may have an issue in the future if we also want to mark SRAM, ROM or
flash
(https://developer.arm.com/documentation/102376/0200/Normal-memory)
because it's likely those would also match the same attributes but we
would need to put holes for those so that they aren't thought to be
DRAM, but I guess we can tackle this the day this happens :)
Thanks again for the catch, let me know if this helps and makes sense
and I'll send a v4 for it.
Cheers,
Quentin
More information about the U-Boot
mailing list