From 30d99448c00d7186eb030fb7ada3ce27eb117a7b Mon Sep 17 00:00:00 2001 From: Shanmuga Priya L Date: Wed, 8 Apr 2026 08:02:16 +0000 Subject: [PATCH] fix(gic): correct redistributor region mapping size - Fix mapping limited to 256 KB that causes hangs after enabling MMU on secondary PEs when accessing other Redistributors. - Use PLATFORM_OVERRIDE_GICRIRD_LENGTH to map GICR region - Prevent incorrect memory mapping size for GIC redistributor regions across RDN2, RDV3, and RDV3CFG1 targets Signed-off-by: Shanmuga Priya L Change-Id: I905ad96dcfe410508cb85c4029ba4fa6bca25a9c --- pal/baremetal/target/RDN2/include/platform_override_fvp.h | 2 +- pal/baremetal/target/RDN2/src/pal_bsa.c | 2 +- pal/baremetal/target/RDV3/src/pal_bsa.c | 2 +- pal/baremetal/target/RDV3CFG1/src/pal_bsa.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pal/baremetal/target/RDN2/include/platform_override_fvp.h b/pal/baremetal/target/RDN2/include/platform_override_fvp.h index fea43506..7a6fa549 100644 --- a/pal/baremetal/target/RDN2/include/platform_override_fvp.h +++ b/pal/baremetal/target/RDN2/include/platform_override_fvp.h @@ -146,7 +146,7 @@ #define PLATFORM_OVERRIDE_GICITS5_BASE 0x30180000 #define PLATFORM_OVERRIDE_GICITS5_ID 0x5 #define PLATFORM_OVERRIDE_GICCIRD_LENGTH 0x0 -#define PLATFORM_OVERRIDE_GICRIRD_LENGTH (0x20000*8) +#define PLATFORM_OVERRIDE_GICRIRD_LENGTH 0x1000000 /* *Secure EL1 timer Flags, Non-Secure EL1 timer Flags, EL2 timer Flags, diff --git a/pal/baremetal/target/RDN2/src/pal_bsa.c b/pal/baremetal/target/RDN2/src/pal_bsa.c index 9e9f5909..d6f0e1e7 100644 --- a/pal/baremetal/target/RDN2/src/pal_bsa.c +++ b/pal/baremetal/target/RDN2/src/pal_bsa.c @@ -224,7 +224,7 @@ void map_gic_device_region(uint32_t gicc_count, uint32_t gicd_count, base_address = platform_gic_cfg.gicr_rd_base[i]; mmap_region_list[mmap_list_curr_index].virtual_address = base_address; mmap_region_list[mmap_list_curr_index].physical_address = base_address; - mmap_region_list[mmap_list_curr_index].length = 0x4 * length; + mmap_region_list[mmap_list_curr_index].length = PLATFORM_OVERRIDE_GICRIRD_LENGTH; mmap_region_list[mmap_list_curr_index].attributes = attr; mmap_list_curr_index++; } diff --git a/pal/baremetal/target/RDV3/src/pal_bsa.c b/pal/baremetal/target/RDV3/src/pal_bsa.c index 11cfe8d8..dd299fc6 100644 --- a/pal/baremetal/target/RDV3/src/pal_bsa.c +++ b/pal/baremetal/target/RDV3/src/pal_bsa.c @@ -232,7 +232,7 @@ void map_gic_device_region(uint32_t gicc_count, uint32_t gicd_count, base_address = platform_gic_cfg.gicr_rd_base[i]; mmap_region_list[mmap_list_curr_index].virtual_address = base_address; mmap_region_list[mmap_list_curr_index].physical_address = base_address; - mmap_region_list[mmap_list_curr_index].length = 0x4 * length; + mmap_region_list[mmap_list_curr_index].length = PLATFORM_OVERRIDE_GICRIRD_LENGTH; mmap_region_list[mmap_list_curr_index].attributes = attr; mmap_list_curr_index++; } diff --git a/pal/baremetal/target/RDV3CFG1/src/pal_bsa.c b/pal/baremetal/target/RDV3CFG1/src/pal_bsa.c index 96814270..42987c8a 100644 --- a/pal/baremetal/target/RDV3CFG1/src/pal_bsa.c +++ b/pal/baremetal/target/RDV3CFG1/src/pal_bsa.c @@ -232,7 +232,7 @@ void map_gic_device_region(uint32_t gicc_count, uint32_t gicd_count, base_address = platform_gic_cfg.gicr_rd_base[i]; mmap_region_list[mmap_list_curr_index].virtual_address = base_address; mmap_region_list[mmap_list_curr_index].physical_address = base_address; - mmap_region_list[mmap_list_curr_index].length = 0x4 * length; + mmap_region_list[mmap_list_curr_index].length = PLATFORM_OVERRIDE_GICRIRD_LENGTH; mmap_region_list[mmap_list_curr_index].attributes = attr; mmap_list_curr_index++; }