| 9127041a | 25-Jul-2025 |
Prasad Kummari <prasad.kummari@amd.com> |
fix(versal-net): move plat_core_pos_by_mpidr to asm
In the current implementation, plat_core_pos_by_mpidr() is defined in C. When BL31 is compiled with Armclang, a call to plat_core_pos_by_mpidr() f
fix(versal-net): move plat_core_pos_by_mpidr to asm
In the current implementation, plat_core_pos_by_mpidr() is defined in C. When BL31 is compiled with Armclang, a call to plat_core_pos_by_mpidr() from plat_my_core_pos() results in the return address stored in register x30 becoming invalid and register x9 (used later) ends up with the value 0x0. Consequently, the CPU branches to address 0x0, triggering a synchronous exception. TF-A then invokes the BHB flush code before resuming execution. However, since the stack is not properly initialized at this stage, the system eventually enters plat_panic_handler(). In the updated implementation, the platform_get_core_pos() function is redefined in assembly to provide tighter control during early boot stages. The MPIDR_EL1 register contains three affinity levels: Aff0 (bits [0:7]), Aff1 (bits [8:15]), and Aff2 (bits [16:23]). In this assembly function, the core ID is extracted from Aff1 (MPIDR_AFF1_SHIFT), and the cluster ID from Aff2 (MPIDR_AFF2_SHIFT). The macro PLATFORM_MPIDR_AFFINITY_MASK introduced to mask MPIDR_EL1 register.
Change-Id: I090ea107c27dfa643431a97d15556c98f721b2e4 Signed-off-by: Prasad Kummari <prasad.kummari@amd.com>
show more ...
|
| 75170704 | 29-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3
The GICv3 driver has 2 methods of discovering the redistributors: a) via setting gicr_base - done at boot and assumes
refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3
The GICv3 driver has 2 methods of discovering the redistributors: a) via setting gicr_base - done at boot and assumes all GICR frames are contiguous. This is the original method.
b) via gicv3_rdistif_probe() - called from platform code and requires gicr_base == 0. It relaxes the requirement for frames to be contiguous, like in a multichip configuration, and defers the discovery to core bringup. This was introduced later.
Configurations possible with option a) are also possible with option b) with only slightly different behaviour. USE_GIC_DRIVER=3 inherited option b) from plat_gicv3_base.c and as such option a) is unusable. However, it is unclear from code how this should be used. Clarify this by requiring platforms initialise with gic_set_gicr_frames() and adding relevant comments.
Also rename plat_arm_override_gicr_frames() to gic_set_gicr_frames() as this is not plat arm specific and a part of the generic GIC driver.
Change-Id: I61d77211f8e65dc54cf9904069b500d26a06b5a5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 8a4a551c | 30-Jun-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(versal-net): use the generic GIC driver
With the introduction of USE_GIC_DRIVER, platforms no longer have to do their own GIC management for basic PSCI-related operations. Previously a half
refactor(versal-net): use the generic GIC driver
With the introduction of USE_GIC_DRIVER, platforms no longer have to do their own GIC management for basic PSCI-related operations. Previously a half-measure was possible by using plat_gicv3_base.c to get semi-generic helpers which versal_net uses.
Since USE_GIC_DRIVER is based on plat_gicv3_base.c, convert the platform to use that so its code is more generic. Expected benefits are slightly better performance around calling the gic hooks on cpu suspend and less platform code.
Change-Id: I8e8a92fd4111e4a83c7a34bc5255d924bc54e769 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| baeeaddf | 25-Oct-2024 |
Maheedhar Bollapalli <maheedharsai.bollapalli@amd.com> |
fix(versal-net): add unsigned suffix to match data type
This corrects the MISRA violation C2012-7.2: A “u” or “U” suffix shall be applied to all integer constants that are represented in an unsigned
fix(versal-net): add unsigned suffix to match data type
This corrects the MISRA violation C2012-7.2: A “u” or “U” suffix shall be applied to all integer constants that are represented in an unsigned type. Appended "u" suffix to integer constant to represent it as unsigned type.
Change-Id: I08b055134d6bd0380cca1e5b6ee527d6045a76c5 Signed-off-by: Maheedhar Bollapalli <maheedharsai.bollapalli@amd.com>
show more ...
|