| 430f246e | 09-Apr-2026 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "feat_rme" into integration
* changes: fix(firme): granule management service feat(gpt): move gpt support under ENABLE_FEAT_RME feat(rmmd): replace ENABLE_RME with ENA
Merge changes from topic "feat_rme" into integration
* changes: fix(firme): granule management service feat(gpt): move gpt support under ENABLE_FEAT_RME feat(rmmd): replace ENABLE_RME with ENABLE_RMM feat(rme): split off ENABLE_FEAT_RME
show more ...
|
| 68129644 | 08-Apr-2026 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "st_fixes" into integration
* changes: refactor(st): use %c to display board info fix(st): update stm32image tool to address Coverity issues fix(stm32mp2-fdts): fix LP
Merge changes from topic "st_fixes" into integration
* changes: refactor(st): use %c to display board info fix(st): update stm32image tool to address Coverity issues fix(stm32mp2-fdts): fix LPDDR4 16bits swizzle fix(st-ddr): add missing newline fix(st-ddr): fix coverity static analysis issues fix(st-rif): do not assign an unused value for node when parsing config fix(st-pmic): initialize some structs in dt_pmic2_i2c_config fix(st-pmic): check stpmic2_is_buck1_high_voltage return fix(stm32mp2): remove unused macro PLAT_NB_GPIO_REGUS feat(st-clock): keep TAMP_BKP_REG_CLK always on fix(st-clock): check fdt_subnode_offset return fix(st-clock): remove some variables default assignment fix(st-clock): do not return NULL in _clk_get fix(st-clock): do not include platform_def.h feat(st-clock): add trace for unknown clock identifier feat(st-clock): add ck_sys_dbg clock for STM32MP2 refactor(dt-bindings): remove CMD_CLK macros fix(st-clock): remove CLK_CFG/CMD_CLK support for st,kerclk fix(st-clock): increase startup timeout for oscillators for STM32MP2 fix(st-clock): increase startup timeout for oscillators for STM32MP1 refactor(st-clock): move oscillators ops from clk-stm32-core to drivers feat(st-clock): add barriers in clock driver
show more ...
|
| d63c2960 | 14-Nov-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
feat(gpt): move gpt support under ENABLE_FEAT_RME
Granule Protection Tables (GPT) library support is enabled only when ENABLE_RMM is set (previously this build option was ENABLE_RME). Since RME rela
feat(gpt): move gpt support under ENABLE_FEAT_RME
Granule Protection Tables (GPT) library support is enabled only when ENABLE_RMM is set (previously this build option was ENABLE_RME). Since RME related support is now enabled using feature detection option ENABLE_FEAT_RME, this patch moves GPT support under ENABLE_FEAT_RME.
This change brings in below benefits: - single TF-A build that works for RME and non-RME systems, when build with ENABLE_FEAT_RME=2 (FEAT_STATE_CHECK) - RMM loading is optional on RME systems - SiP calls that leverages RME features to change the PAS of a memory range from non-secure to secure is supported without need to enable Realm PAS or RMM. - FIRME Granule Management Interface (GMI) ABIs that handles FEAT_RME_GPC2/FEAT_RME_GDI can be enabled without need to enable RMM
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: I88d9d4e0491af2b4ae0307c018f2d4a71ee6693f
show more ...
|
| b0ddba24 | 04-Nov-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
feat(rmmd): replace ENABLE_RME with ENABLE_RMM
RME architectural requirements are now handled under the feature detection option ENABLE_FEAT_RME. However, the existing ENABLE_RME build option perfor
feat(rmmd): replace ENABLE_RME with ENABLE_RMM
RME architectural requirements are now handled under the feature detection option ENABLE_FEAT_RME. However, the existing ENABLE_RME build option performs RMM-specific tasks such as GPT setup, loading the RMM, and enabling RMMD support.
Since ENABLE_RME now only controls RMM-related functionality, rename it to ENABLE_RMM to better reflect its purpose and avoid confusion with ENABLE_FEAT_RME.
For backward compatibility, setting the legacy ENABLE_RME=1 (until it is deprecated) will automatically enable both ENABLE_FEAT_RME and ENABLE_RMM.
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: Iac945bdffe5002161bf1161b81a5aa7abec68192
show more ...
|
| b8ce71e2 | 17-Jan-2024 |
Yann Gautier <yann.gautier@st.com> |
refactor(st): use %c to display board info
Now that %c is supported in log functions, use it instead of creating a temporary string in stm32_display_board_info(). This also saves a few bytes of code
refactor(st): use %c to display board info
Now that %c is supported in log functions, use it instead of creating a temporary string in stm32_display_board_info(). This also saves a few bytes of code.
Change-Id: If071ed83b92bd30aec425f5b33f66f87c066dae5 Signed-off-by: Yann Gautier <yann.gautier@st.com>
show more ...
|
| 0b76c563 | 07-Apr-2026 |
Dhruva Gole <d-gole@ti.com> |
fix(k3low): extend BL1 RW region for debug builds
DEBUG=1 builds include larger xlat tables that overflow BL1's 12K RW region by 4K. Extend BL1_RW_LIMIT by 0x1000 under #ifdef DEBUG and emit a loud
fix(k3low): extend BL1 RW region for debug builds
DEBUG=1 builds include larger xlat tables that overflow BL1's 12K RW region by 4K. Extend BL1_RW_LIMIT by 0x1000 under #ifdef DEBUG and emit a loud make-time warning that this binary is non-functional (the extended region overlaps MAILBOX_SHMEM). Also, add an ERROR print to make sure users are aware at boot that BL1 has been built with DEBUG flag and panic.
NOT intended for production or functional testing.
Change-Id: Iae9453d8c5305e3e88c6e21fa5ac042c9a210d37 Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Dhruva Gole <d-gole@ti.com>
show more ...
|
| f1217385 | 07-Apr-2026 |
Dhruva Gole <d-gole@ti.com> |
fix(k3low): add plat_get_image_source stub for BL1
AM62L BL1 never calls load_image (it hands off to ROM via secure transport and enters WFI), but the generic bl_common.c:load_image pulls in plat_ge
fix(k3low): add plat_get_image_source stub for BL1
AM62L BL1 never calls load_image (it hands off to ROM via secure transport and enters WFI), but the generic bl_common.c:load_image pulls in plat_get_image_source as a required symbol. Add a stub returning -ENOTSUP to satisfy the linker.
Change-Id: I331ad94dea110a7202d3961119ac690b3c499736 Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Dhruva Gole <d-gole@ti.com>
show more ...
|
| 1e9860a7 | 26-Feb-2026 |
Yann Gautier <yann.gautier@st.com> |
fix(stm32mp2): remove unused macro PLAT_NB_GPIO_REGUS
The macro PLAT_NB_GPIO_REGUS is not used, remove it.
Change-Id: I4303545ee92be95cd7040a20dfe79d417dc07be4 Signed-off-by: Yann Gautier <yann.gau
fix(stm32mp2): remove unused macro PLAT_NB_GPIO_REGUS
The macro PLAT_NB_GPIO_REGUS is not used, remove it.
Change-Id: I4303545ee92be95cd7040a20dfe79d417dc07be4 Signed-off-by: Yann Gautier <yann.gautier@st.com>
show more ...
|
| d26945f4 | 31-Mar-2026 |
Hari Nagalla <hnagalla@ti.com> |
feat(k3low): add BL1 platform definitions and integration for AM62L
AM62L devices use BL1 to configure DDR4/LPDDR4 before the secondary bootloader. This patch wires all prior DDR and board patches i
feat(k3low): add BL1 platform definitions and integration for AM62L
AM62L devices use BL1 to configure DDR4/LPDDR4 before the secondary bootloader. This patch wires all prior DDR and board patches into a complete, buildable bl1.bin:
- ti_platform_defs.h: add IMAGE_BL1 conditionals for BL1-specific stack and memory layout definitions. - platform_def.h: add BL1 SRAM base/size and mailbox address definitions used by am62l_bl1_setup.c. - am62l_bl1_setup.c: BL1 platform initialisation — console, DDR init via the Cadence/TI shim, and WFI-based handoff to the secondary bootloader. - platform.mk: add BL1_SOURCES, K3_LPDDR4_SOURCES, update BUILD_PLAT and PLAT_INCLUDES to compile all DDR and BL1 sources.
Change-Id: I91e8b9e8e43a5560aa688d58e6805a7b5236de44 Signed-off-by: Hari Nagalla <hnagalla@ti.com>
show more ...
|
| 9527667d | 25-Mar-2026 |
Hari Nagalla <hnagalla@ti.com> |
feat(k3low): add AM62L DDR platform shim and EVM board config
Rename the board directory from am62lx/ to am62lx-evm/ to reflect the specific board variant, and introduce the EVM board configuration:
feat(k3low): add AM62L DDR platform shim and EVM board config
Rename the board directory from am62lx/ to am62lx-evm/ to reflect the specific board variant, and introduce the EVM board configuration:
- board_config.c: pad-mux initialisation for MAIN/WKUP UART0 pins, verified against the AM62L TRM (SPRUJB4A p.3976). - board_def.h: board-level UART base and clock definitions. - board_config.h: shared header declaring board_init().
Add the TI-authored AM62L DDRSS platform shim that wraps the Cadence driver for this SoC:
- am62l_ddrss.c / am62l_ddrss.h: PSC power sequencing and DDR initialisation flow calling the Cadence CTL/PHY/PI APIs. - am62lx_ddr_config.c / am62lx_ddr_config.h: register data for the AM62L DDRSS configuration. - am62lx_skevm_lp4_50_800.h: machine-generated SK-EVM LPDDR4 register values produced by the SysConfig DDR tool v0.10.30. This file should be regenerated via that tool if board or timing parameters change.
New source files are intentionally unreferenced in platform.mk pending the BL1 integration patch.
board.mk is introduced as a placeholder required by platform.mk's include directive for BL31 builds; BL1_SOURCES will be added in the next patch when BL1 support is wired in.
Change-Id: I8aff5eb1c2429646a701dc3b09821318bb6e73b9 Signed-off-by: Hari Nagalla <hnagalla@ti.com>
show more ...
|
| 5421f84b | 25-Mar-2026 |
Hari Nagalla <hnagalla@ti.com> |
feat(k3low): introduce Cadence LPDDR4 core driver for AM62L
AM62L devices support 16-bit DDR4/LPDDR4 DRAM memory devices. The core DDR4/LPDDR4 driver was developed by Cadence. This patch introduces
feat(k3low): introduce Cadence LPDDR4 core driver for AM62L
AM62L devices support 16-bit DDR4/LPDDR4 DRAM memory devices. The core DDR4/LPDDR4 driver was developed by Cadence. This patch introduces the Cadence IP driver files (lpddr4.c, lpddr4_16bit.c, lpddr4_obj_if.c and their associated headers) which carry dual copyright (Cadence + TI).
The driver was pruned from ~6800 macros to ~80 with AI-assisted removal of unused code; the Cadence CTL/PHY/PI API surface remains intact for review against the User Guides.
These files are intentionally unreferenced in platform.mk pending the AM62L platform shim in the next patch.
For additional information please check the technical reference manual at: https://www.ti.com/lit/pdf/sprujb4
Change-Id: I8b02a6b30e5ea7b1b457cc0a933d8ef232993fa1 Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Hari Nagalla <hnagalla@ti.com>
show more ...
|
| 3e8faea9 | 31-Mar-2026 |
Yann Gautier <yann.gautier@st.com> |
Merge "fix(xilinx): correct node idx for Versal Gen 2" into integration |
| 95b96ab6 | 27-Feb-2026 |
Nicolas Pitre <npitre@baylibre.com> |
refactor(qemu): use generic hold pen
Convert QEMU to use the common hold pen helpers.
This is not a functional fix -- QEMU uses HW_ASSISTED_COHERENCY=1 so caches are always coherent and the origina
refactor(qemu): use generic hold pen
Convert QEMU to use the common hold pen helpers.
This is not a functional fix -- QEMU uses HW_ASSISTED_COHERENCY=1 so caches are always coherent and the original 8-byte slots worked. However, aligning with the common hold pen pattern improves consistency and removes duplicated logic.
plat_hold_pen_init() is called once from plat_setup_psci_ops() to write HOLD_STATE_WAIT into every slot and flush to main memory. Then plat_hold_pen_signal() writes just the target slot with the entrypoint. Secondaries use the plat_hold_pen_wait_and_jump macro to poll and branch directly to the entrypoint stored in their slot, eliminating the mailbox fetch.
Change-Id: I5ca1ca5fb8708024ce8a04fa80403473dcd1e257 Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
show more ...
|
| ecab5d9e | 31-Mar-2026 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "hold-pen-generic" into integration
* changes: fix(corstone-1000): use generic hold pen refactor(platforms): add generic hold pen |
| 702f2f33 | 27-Mar-2026 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(cpus)!: make ERRATA_SME_POWER_DOWN work with the recommended state ID" into integration |
| 8c62cf22 | 27-Mar-2026 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(firme): initial commit of FIRME service" into integration |
| c359aeb1 | 05-Aug-2025 |
John Powell <john.powell@arm.com> |
feat(firme): initial commit of FIRME service
This is the first FIRME service patch that adds support for basic ABIs for retrieving the FIRME version, features, and GPI_SET.
This adds a new generic
feat(firme): initial commit of FIRME service
This is the first FIRME service patch that adds support for basic ABIs for retrieving the FIRME version, features, and GPI_SET.
This adds a new generic granule transition function that replaces the existing delegate/undelegate APIs that GPI_SET uses. It also updates TRP to use GPI_SET when FIRME is supported.
FIRME spec is here, note that it is ALPHA2 quality so further changes are to be expected: https://developer.arm.com/documentation/den0149
Change-Id: I57b8ad7e87a0679e15c8247f8457f91f3254dedb Signed-off-by: John Powell <john.powell@arm.com> Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 249c6f9f | 27-Feb-2026 |
Nicolas Pitre <npitre@baylibre.com> |
fix(corstone-1000): use generic hold pen
Convert corstone1000 to use the common hold pen helpers, fixing a cache coherency bug in secondary CPU bring-up.
The original code used 8-byte hold slots (n
fix(corstone-1000): use generic hold pen
Convert corstone1000 to use the common hold pen helpers, fixing a cache coherency bug in secondary CPU bring-up.
The original code used 8-byte hold slots (not cache-line aligned) and only wrote GO to the target slot without touching other slots or flushing to main memory. This is broken because:
1. Secondary CPUs write WAIT from non-cached context (MMU off in BL2) 2. The BL2-to-BL31 transition does dcsw_op_all (flush all caches) 3. This pushes stale cached data over the WAIT values in memory 4. The primary's GO write + DSB is insufficient -- it only ensures ordering, not visibility to non-cached observers
plat_hold_pen_init() is called once at boot (from plat_arm_psci_override_pm_ops) to write HOLD_STATE_WAIT into every cache-line-aligned slot and flush the region. Then plat_hold_pen_signal() writes just the target slot with the warm boot entrypoint, flushes it, and issues SEV. Secondaries use the plat_hold_pen_wait_and_jump macro to poll and branch directly to the entrypoint stored in their hold slot.
Change-Id: I8fc533650c663700dab9bf47c0a79d9bb1236b17 Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
show more ...
|
| e45ca16e | 27-Feb-2026 |
Nicolas Pitre <npitre@baylibre.com> |
refactor(platforms): add generic hold pen
Introduce a common hold pen implementation for SMP secondary CPU bring-up. Each core has a cache-line-aligned hold_slot struct whose 'entry' field holds HO
refactor(platforms): add generic hold pen
Introduce a common hold pen implementation for SMP secondary CPU bring-up. Each core has a cache-line-aligned hold_slot struct whose 'entry' field holds HOLD_STATE_WAIT (all-ones sentinel) while the core should keep polling, or the warm boot entrypoint address when it should go.
plat_hold_pen_init() sets all slots to HOLD_STATE_WAIT and flushes them to main memory. This is called once during boot to establish a known-good state, overwriting any stale cached data left by earlier boot stages (e.g. a BL2 dcsw_op_all).
plat_hold_pen_signal() writes the entrypoint into the target slot, flushes it, and issues SEV.
The plat_hold_pen_wait_and_jump assembly macro provides the secondary CPU polling loop for both AArch64 and AArch32.
Change-Id: Id7322cb9e8caa6a750348d194b4db66e2a515623 Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
show more ...
|
| 93c7e701 | 02-Mar-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cpus)!: make ERRATA_SME_POWER_DOWN work with the recommended state ID
The ERRATA_SME_POWER_DOWN flag doesn't account for the recommended state ID encoding, only for the default one. This patch m
fix(cpus)!: make ERRATA_SME_POWER_DOWN work with the recommended state ID
The ERRATA_SME_POWER_DOWN flag doesn't account for the recommended state ID encoding, only for the default one. This patch makes it work by removing the generic flag and incorporating the functionality into the CPU and platform layers.
The ERRATA_SME_POWER_DOWN is an awkward fix in generic code to a platform problem. The PSCI layer shouldn't care about any CPU's inner workings but it does. This isn't ideal once the issue is fixed since we'll have to carry the "legacy" fix in generic code.
This patch is marked as breaking since the ERRATA_SME_POWER_DOWN flag is removed and a couple of lines are required if CPU hotplug encounters a powerdown with live SME state (CPU suspend will work as before). This will get discovered with a panic at EL3 so this patch leaves a comment to be able to trace it back.
Change-Id: Ia52865f527e81a8be3727093ed370901e55c5fef Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| d87d5cd9 | 25-Mar-2026 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I361f587a,Idc704ece,I5529dbe5 into integration
* changes: fix(gic): init the GIC before the platform with a hook refactor(arm): set the transfer list up earlier refactor(el3-runt
Merge changes I361f587a,Idc704ece,I5529dbe5 into integration
* changes: fix(gic): init the GIC before the platform with a hook refactor(arm): set the transfer list up earlier refactor(el3-runtime): use arm_gicr_base_addrs for sp-min
show more ...
|
| fcbf8e98 | 25-Mar-2026 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(qti): harden mem_assign parameter handling" into integration |
| ed1320c5 | 24-Mar-2026 |
Joanna Farley <joanna.farley@arm.com> |
Merge "fix(xilinx): use bool in control expressions" into integration |
| 95b6c510 | 24-Mar-2026 |
Joanna Farley <joanna.farley@arm.com> |
Merge changes from topic "amd_feat_dyn_core_clust" into integration
* changes: feat(versal2): update plat psci based on dynamic core and cluster feat(versal2): add dynamic fetching of core and c
Merge changes from topic "amd_feat_dyn_core_clust" into integration
* changes: feat(versal2): update plat psci based on dynamic core and cluster feat(versal2): add dynamic fetching of core and cluster refactor(xilinx): promote map/unmap helpers to public scope feat(versal2): use runtime core/cluster variables for dyn topology
show more ...
|
| 81671a96 | 10-Mar-2026 |
Jorge Ramirez-Ortiz <jorge.ramirez@oss.qualcomm.com> |
fix(qti): harden mem_assign parameter handling
Copy mem_assign input buffers to secure local storage before validating their contents.
The previous code validated entries by walking non-secure buff
fix(qti): harden mem_assign parameter handling
Copy mem_assign input buffers to secure local storage before validating their contents.
The previous code validated entries by walking non-secure buffers directly after mapping them. This keeps validation dependent on non-secure memory and makes the arithmetic around the mapped span more fragile.
Rework the flow to: - retrieve indirect arguments through a helper - map the non-secure parameter span once using checked arithmetic - verify buffer lengths before copying - copy mem/source/destination arrays to local buffers - validate parameters from the secure copies - use add_overflow() for range calculations - clear the dynamic mapping state through the helper-based flow
This reduces exposure to malformed non-secure input and avoids address wrap issues while keeping the SMC interface unchanged.
Change-Id: Ie9e5480891a82ba98919c8c7dbdd27819e246185 Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez@oss.qualcomm.com>
show more ...
|