History log of /rk3399_ARM-atf/lib/cpus/ (Results 126 – 150 of 850)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
fcf2ab7111-Feb-2025 John Powell <john.powell@arm.com>

fix(cpus): workaround for Cortex-A715 erratum 2804830

Cortex-A715 erratum 2804830 applies to r0p0, r1p0, r1p1 and r1p2,
and is fixed in r1p3.

Under some conditions, writes of a 64B-aligned, 64B gra

fix(cpus): workaround for Cortex-A715 erratum 2804830

Cortex-A715 erratum 2804830 applies to r0p0, r1p0, r1p1 and r1p2,
and is fixed in r1p3.

Under some conditions, writes of a 64B-aligned, 64B granule of
memory might cause data corruption without this workaround. See SDEN
for details.

Since this workaround disables write streaming, it is expected to
have a significant performance impact for code that is heavily
reliant on write streaming, such as memcpy or memset.

SDEN: https://developer.arm.com/documentation/SDEN-2148827/latest/

Change-Id: Ia12f6c7de7c92f6ea4aec3057b228b828d48724c
Signed-off-by: John Powell <john.powell@arm.com>

show more ...


/rk3399_ARM-atf/.husky/prepare-commit-msg
/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/interrupt_mgmt.c
/rk3399_ARM-atf/common/runtime_svc.c
/rk3399_ARM-atf/common/tf_log.c
/rk3399_ARM-atf/docs/Makefile
/rk3399_ARM-atf/docs/design/cpu-specific-build-macros.rst
/rk3399_ARM-atf/docs/getting_started/build-options.rst
/rk3399_ARM-atf/drivers/arm/cci/cci.c
/rk3399_ARM-atf/drivers/arm/gic/v2/gicv2_helpers.c
/rk3399_ARM-atf/drivers/arm/gic/v2/gicv2_main.c
/rk3399_ARM-atf/drivers/console/multi_console.c
/rk3399_ARM-atf/include/arch/aarch32/arch_features.h
/rk3399_ARM-atf/include/arch/aarch64/arch.h
/rk3399_ARM-atf/include/arch/aarch64/arch_features.h
/rk3399_ARM-atf/include/arch/aarch64/arch_helpers.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cortex_a715.h
/rk3399_ARM-atf/include/lib/utils_def.h
/rk3399_ARM-atf/include/services/arm_arch_svc.h
/rk3399_ARM-atf/include/services/drtm_svc.h
aarch64/cortex_a715.S
cpu-ops.mk
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context_mgmt.c
/rk3399_ARM-atf/lib/locks/bakery/bakery_lock_coherent.c
/rk3399_ARM-atf/lib/psci/psci_common.c
/rk3399_ARM-atf/lib/psci/psci_main.c
/rk3399_ARM-atf/lib/psci/psci_on.c
/rk3399_ARM-atf/lib/psci/psci_setup.c
/rk3399_ARM-atf/lib/psci/psci_system_off.c
/rk3399_ARM-atf/make_helpers/arch_features.mk
/rk3399_ARM-atf/package-lock.json
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/common/arm_common.mk
/rk3399_ARM-atf/plat/common/aarch64/plat_common.c
/rk3399_ARM-atf/plat/common/plat_bl_common.c
/rk3399_ARM-atf/plat/common/plat_gicv2.c
/rk3399_ARM-atf/plat/common/plat_psci_common.c
/rk3399_ARM-atf/plat/intel/soc/agilex/bl2_plat_setup.c
/rk3399_ARM-atf/plat/intel/soc/agilex/platform.mk
/rk3399_ARM-atf/plat/intel/soc/agilex5/bl31_plat_setup.c
/rk3399_ARM-atf/plat/intel/soc/agilex5/platform.mk
/rk3399_ARM-atf/plat/intel/soc/agilex5/soc/agilex5_ddr.c
/rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_sip_svc.h
/rk3399_ARM-atf/plat/intel/soc/common/socfpga_sip_svc.c
/rk3399_ARM-atf/plat/intel/soc/common/socfpga_vab.c
/rk3399_ARM-atf/plat/intel/soc/n5x/platform.mk
/rk3399_ARM-atf/plat/intel/soc/stratix10/platform.mk
/rk3399_ARM-atf/plat/xilinx/common/pm_service/pm_api_sys.c
/rk3399_ARM-atf/poetry.lock
/rk3399_ARM-atf/services/std_svc/drtm/drtm_main.c
/rk3399_ARM-atf/services/std_svc/rmmd/rmmd_main.c
/rk3399_ARM-atf/tools/cot_dt2c/poetry.lock
/rk3399_ARM-atf/tools/nxp/create_pbl/Makefile
/rk3399_ARM-atf/tools/tlc/poetry.lock
bbff267b24-Feb-2025 Arvind Ram Prakash <arvind.ramprakash@arm.com>

fix(errata-abi): add support for handling split workarounds

Certain erratum workarounds like Neoverse N1 1542419, need a part
of their mitigation done in EL3 and the rest in lower EL. But currently

fix(errata-abi): add support for handling split workarounds

Certain erratum workarounds like Neoverse N1 1542419, need a part
of their mitigation done in EL3 and the rest in lower EL. But currently
such workarounds return HIGHER_EL_MITIGATION which indicates that the
erratum has already been mitigated by a higher EL(EL3 in this case)
which causes the lower EL to not apply it's part of the mitigation.

This patch fixes this issue by adding support for split workarounds
so that on certain errata we return AFFECTED even though EL3 has
applied it's workaround. This is done by reusing the chosen field of
erratum_entry structure into a bitfield that has two bitfields -
Bit 0 indicates that the erratum has been enabled in build,
Bit 1 indicates that the erratum is a split workaround and should
return AFFECTED instead of HIGHER_EL_MITIGATION.

SDEN documentation:
https://developer.arm.com/documentation/SDEN885747/latest

Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com>
Change-Id: Iec94d665b5f55609507a219a7d1771eb75e7f4a7

show more ...


/rk3399_ARM-atf/.github/dependabot.yml
/rk3399_ARM-atf/.readthedocs.yaml
/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/aarch64/ea_delegate.S
/rk3399_ARM-atf/docs/about/maintainers.rst
/rk3399_ARM-atf/docs/plat/arm/fvp/fvp-build-options.rst
/rk3399_ARM-atf/docs/plat/arm/fvp/fvp-specific-configs.rst
/rk3399_ARM-atf/docs/porting-guide.rst
/rk3399_ARM-atf/docs/tools/memory-layout-tool.rst
/rk3399_ARM-atf/drivers/st/pmic/stpmic2.c
/rk3399_ARM-atf/fdts/stm32mp157a-dk1-sp_min-fw-config.dts
/rk3399_ARM-atf/fdts/stm32mp157a-dk1-sp_min.dts
/rk3399_ARM-atf/fdts/stm32mp157c-dk2-sp_min-fw-config.dts
/rk3399_ARM-atf/fdts/stm32mp157c-dk2-sp_min.dts
/rk3399_ARM-atf/fdts/stm32mp157c-ed1-sp_min-fw-config.dts
/rk3399_ARM-atf/fdts/stm32mp157c-ed1-sp_min.dts
/rk3399_ARM-atf/fdts/stm32mp157c-ed1.dts
/rk3399_ARM-atf/fdts/stm32mp157c-ev1-sp_min-fw-config.dts
/rk3399_ARM-atf/fdts/stm32mp157c-ev1-sp_min.dts
/rk3399_ARM-atf/fdts/stm32mp15xx-dkx.dtsi
/rk3399_ARM-atf/include/lib/cpus/aarch64/cpu_macros.S
/rk3399_ARM-atf/include/lib/cpus/errata.h
/rk3399_ARM-atf/include/lib/el3_runtime/aarch64/context.h
/rk3399_ARM-atf/include/lib/extensions/ras_arch.h
/rk3399_ARM-atf/include/lib/transfer_list.h
/rk3399_ARM-atf/include/plat/common/plat_drtm.h
/rk3399_ARM-atf/include/services/arm_arch_svc.h
/rk3399_ARM-atf/include/services/drtm_svc.h
/rk3399_ARM-atf/include/services/spm_mm_svc.h
aarch64/neoverse_n1.S
/rk3399_ARM-atf/lib/romlib/Makefile
/rk3399_ARM-atf/lib/transfer_list/transfer_list.c
/rk3399_ARM-atf/lib/xlat_tables_v2/xlat_tables_core.c
/rk3399_ARM-atf/make_helpers/build_macros.mk
/rk3399_ARM-atf/plat/arm/board/fvp/fdts/fvp_spmc_manifest.dts
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_drtm_stub.c
/rk3399_ARM-atf/plat/arm/board/fvp/jmptbl_mbedtls_psa.i
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/include/nrd_ras.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/ras/nrd_ras_cpu.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/platform.mk
/rk3399_ARM-atf/plat/arm/common/arm_common.mk
/rk3399_ARM-atf/plat/mediatek/mt8196/drivers/gpio/mtgpio.c
/rk3399_ARM-atf/plat/mediatek/mt8196/drivers/gpio/mtgpio.h
/rk3399_ARM-atf/plat/st/common/common_rules.mk
/rk3399_ARM-atf/plat/st/stm32mp1/platform.mk
/rk3399_ARM-atf/plat/st/stm32mp2/include/platform_def.h
/rk3399_ARM-atf/plat/st/stm32mp2/platform.mk
/rk3399_ARM-atf/plat/st/stm32mp2/stm32mp2_def.h
/rk3399_ARM-atf/poetry.lock
/rk3399_ARM-atf/pyproject.toml
/rk3399_ARM-atf/services/std_svc/drtm/drtm_main.c
/rk3399_ARM-atf/services/std_svc/drtm/drtm_main.h
/rk3399_ARM-atf/services/std_svc/drtm/drtm_measurements.c
/rk3399_ARM-atf/services/std_svc/drtm/drtm_measurements.h
/rk3399_ARM-atf/services/std_svc/errata_abi/errata_abi_main.c
/rk3399_ARM-atf/tools/memory/poetry.lock
/rk3399_ARM-atf/tools/memory/pyproject.toml
/rk3399_ARM-atf/tools/memory/src/memory/__init__.py
/rk3399_ARM-atf/tools/memory/src/memory/buildparser.py
/rk3399_ARM-atf/tools/memory/src/memory/elfparser.py
/rk3399_ARM-atf/tools/memory/src/memory/mapparser.py
/rk3399_ARM-atf/tools/memory/src/memory/memmap.py
/rk3399_ARM-atf/tools/memory/src/memory/printer.py
/rk3399_ARM-atf/tools/sptool/hob.py
/rk3399_ARM-atf/tools/sptool/sp_mk_generator.py
98c6516526-Feb-2025 Govindraj Raja <govindraj.raja@arm.com>

chore: rename arcadia to Cortex-A320

Cortex-A320 has been announced, rename arcadia to Cortex-A320.

Ref:
https://newsroom.arm.com/blog/introducing-arm-cortex-a320-cpu
https://www.arm.com/products/s

chore: rename arcadia to Cortex-A320

Cortex-A320 has been announced, rename arcadia to Cortex-A320.

Ref:
https://newsroom.arm.com/blog/introducing-arm-cortex-a320-cpu
https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a320

Change-Id: Ifb3743d43dca3d8caaf1e7416715ccca4fdf195f
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...


/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/bl31_main.c
/rk3399_ARM-atf/docs/components/activity-monitors.rst
/rk3399_ARM-atf/docs/components/context-management-library.rst
/rk3399_ARM-atf/docs/components/fconf/index.rst
/rk3399_ARM-atf/docs/getting_started/build-options.rst
/rk3399_ARM-atf/docs/plat/arm/fvp/fvp-support.rst
/rk3399_ARM-atf/docs/plat/rockchip.rst
/rk3399_ARM-atf/fdts/tc-base.dtsi
/rk3399_ARM-atf/fdts/tc2.dts
/rk3399_ARM-atf/include/arch/aarch32/arch.h
/rk3399_ARM-atf/include/arch/aarch32/arch_features.h
/rk3399_ARM-atf/include/arch/aarch32/arch_helpers.h
/rk3399_ARM-atf/include/arch/aarch64/arch_features.h
/rk3399_ARM-atf/include/arch/aarch64/arch_helpers.h
/rk3399_ARM-atf/include/arch/aarch64/el3_common_macros.S
/rk3399_ARM-atf/include/lib/cpus/aarch64/cortex_a320.h
/rk3399_ARM-atf/include/lib/el3_runtime/aarch64/context.h
/rk3399_ARM-atf/include/lib/el3_runtime/context_mgmt.h
/rk3399_ARM-atf/include/lib/extensions/amu.h
/rk3399_ARM-atf/include/lib/extensions/sve.h
aarch64/cortex_a320.S
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context.S
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context_mgmt.c
/rk3399_ARM-atf/lib/extensions/amu/aarch32/amu.c
/rk3399_ARM-atf/lib/extensions/amu/aarch64/amu.c
/rk3399_ARM-atf/lib/extensions/amu/amu.mk
/rk3399_ARM-atf/lib/extensions/sme/sme.c
/rk3399_ARM-atf/lib/extensions/sve/sve.c
/rk3399_ARM-atf/lib/fconf/fconf.mk
/rk3399_ARM-atf/lib/psci/psci_common.c
/rk3399_ARM-atf/lib/psci/psci_suspend.c
/rk3399_ARM-atf/make_helpers/arch_features.mk
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/board/tc/platform.mk
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl31_setup.c
/rk3399_ARM-atf/plat/common/plat_psci_common.c
/rk3399_ARM-atf/plat/rockchip/common/aarch64/platform_common.c
/rk3399_ARM-atf/plat/rockchip/common/include/plat_private.h
/rk3399_ARM-atf/plat/rockchip/common/scmi/rockchip_common_clock.c
/rk3399_ARM-atf/plat/rockchip/common/scmi/scmi_clock.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/dmc/dmc_rk3576.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/dmc/suspend.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/pmu/plat_pmu_macros.S
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/pmu/pm_pd_regs.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/pmu/pm_pd_regs.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/pmu/pmu.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/pmu/pmu.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/secure/firewall.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/secure/firewall.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/secure/secure.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/secure/secure.h
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/soc/soc.c
/rk3399_ARM-atf/plat/rockchip/rk3576/drivers/soc/soc.h
/rk3399_ARM-atf/plat/rockchip/rk3576/include/plat.ld.S
/rk3399_ARM-atf/plat/rockchip/rk3576/include/plat_sip_calls.h
/rk3399_ARM-atf/plat/rockchip/rk3576/include/platform_def.h
/rk3399_ARM-atf/plat/rockchip/rk3576/plat_sip_calls.c
/rk3399_ARM-atf/plat/rockchip/rk3576/platform.mk
/rk3399_ARM-atf/plat/rockchip/rk3576/rk3576_def.h
/rk3399_ARM-atf/plat/rockchip/rk3576/scmi/rk3576_clk.c
/rk3399_ARM-atf/plat/rockchip/rk3576/scmi/rk3576_clk.h
2590e81925-Nov-2024 Boyan Karatotev <boyan.karatotev@arm.com>

perf(mpmm): greatly simplify MPMM enablement

MPMM is a core-specific microarchitectural feature. It has been present
in every Arm core since the Cortex-A510 and has been implemented in
exactly the s

perf(mpmm): greatly simplify MPMM enablement

MPMM is a core-specific microarchitectural feature. It has been present
in every Arm core since the Cortex-A510 and has been implemented in
exactly the same way. Despite that, it is enabled more like an
architectural feature with a top level enable flag. This utilised the
identical implementation.

This duality has left MPMM in an awkward place, where its enablement
should be generic, like an architectural feature, but since it is not,
it should also be core-specific if it ever changes. One choice to do
this has been through the device tree.

This has worked just fine so far, however, recent implementations expose
a weakness in that this is rather slow - the device tree has to be read,
there's a long call stack of functions with many branches, and system
registers are read. In the hot path of PSCI CPU powerdown, this has a
significant and measurable impact. Besides it being a rather large
amount of code that is difficult to understand.

Since MPMM is a microarchitectural feature, its correct placement is in
the reset function. The essence of the current enablement is to write
CPUPPMCR_EL3.MPMM_EN if CPUPPMCR_EL3.MPMMPINCTL == 0. Replacing the C
enablement with an assembly macro in each CPU's reset function achieves
the same effect with just a single close branch and a grand total of 6
instructions (versus the old 2 branches and 32 instructions).

Having done this, the device tree entry becomes redundant. Should a core
that doesn't support MPMM arise, this can cleanly be handled in the
reset function. As such, the whole ENABLE_MPMM_FCONF and platform hooks
mechanisms become obsolete and are removed.

Change-Id: I1d0475b21a1625bb3519f513ba109284f973ffdf
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...


/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/bl31.mk
/rk3399_ARM-atf/docs/about/maintainers.rst
/rk3399_ARM-atf/docs/components/fconf/index.rst
/rk3399_ARM-atf/docs/components/mpmm.rst
/rk3399_ARM-atf/docs/getting_started/build-options.rst
/rk3399_ARM-atf/drivers/arm/gic/v3/gic600_multichip.c
/rk3399_ARM-atf/drivers/arm/gic/v3/gic600_multichip_private.h
/rk3399_ARM-atf/fdts/tc-base.dtsi
/rk3399_ARM-atf/fdts/tc2.dts
/rk3399_ARM-atf/include/arch/aarch64/arch.h
/rk3399_ARM-atf/include/arch/aarch64/arch_helpers.h
/rk3399_ARM-atf/include/drivers/arm/gic600_multichip.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cpu_macros.S
/rk3399_ARM-atf/include/lib/el3_runtime/context_el2.h
aarch64/cortex_a510.S
aarch64/cortex_a520.S
aarch64/cortex_a710.S
aarch64/cortex_a715.S
aarch64/cortex_a720.S
aarch64/cortex_a720_ae.S
aarch64/cortex_a725.S
aarch64/cortex_alto.S
aarch64/cortex_arcadia.S
aarch64/cortex_gelas.S
aarch64/cortex_x2.S
aarch64/cortex_x3.S
aarch64/cortex_x4.S
aarch64/cortex_x925.S
aarch64/nevis.S
aarch64/travis.S
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context.S
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context_mgmt.c
/rk3399_ARM-atf/lib/extensions/amu/aarch64/amu.c
/rk3399_ARM-atf/lib/fconf/fconf.mk
/rk3399_ARM-atf/make_helpers/defaults.mk
/rk3399_ARM-atf/plat/amd/versal2/include/plat_pm_common.h
/rk3399_ARM-atf/plat/amd/versal2/include/plat_private.h
/rk3399_ARM-atf/plat/amd/versal2/include/platform_def.h
/rk3399_ARM-atf/plat/amd/versal2/plat_psci.c
/rk3399_ARM-atf/plat/amd/versal2/plat_psci_pm.c
/rk3399_ARM-atf/plat/amd/versal2/platform.mk
/rk3399_ARM-atf/plat/amd/versal2/pm_service/pm_client.c
/rk3399_ARM-atf/plat/amd/versal2/pm_service/pm_svc_main.c
/rk3399_ARM-atf/plat/amd/versal2/sip_svc_setup.c
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_common.c
/rk3399_ARM-atf/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdn1edge/rdn1edge_plat.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdn2/rdn2_plat.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv1mc/rdv1mc_plat.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/rdv3_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/tc/platform.mk
/rk3399_ARM-atf/plat/intel/soc/agilex5/bl2_plat_setup.c
/rk3399_ARM-atf/plat/intel/soc/agilex5/bl31_plat_setup.c
/rk3399_ARM-atf/plat/intel/soc/agilex5/include/socfpga_plat_def.h
/rk3399_ARM-atf/plat/intel/soc/agilex5/platform.mk
/rk3399_ARM-atf/plat/intel/soc/common/fdts/agilex5_fdt.dts
/rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_dt.h
/rk3399_ARM-atf/plat/intel/soc/common/socfpga_dt.c
/rk3399_ARM-atf/plat/rockchip/common/params_setup.c
/rk3399_ARM-atf/plat/rockchip/rk3399/rk3399_def.h
/rk3399_ARM-atf/plat/xilinx/common/include/pm_node.h
21d068be24-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

refactor(cpus): declare runtime errata correctly

There errata don't have a workaround in the cpu file. So calling the
wrappers is redundant. We can simply register them with the framework.

Change-I

refactor(cpus): declare runtime errata correctly

There errata don't have a workaround in the cpu file. So calling the
wrappers is redundant. We can simply register them with the framework.

Change-Id: I316daeee603e86c9f2bdccf91e1b10f7ec6c3f9d
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

89dba82d22-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

perf(cpus): make reset errata do fewer branches

Errata application is painful for performance. For a start, it's done
when the core has just come out of reset, which means branch predictors
and cach

perf(cpus): make reset errata do fewer branches

Errata application is painful for performance. For a start, it's done
when the core has just come out of reset, which means branch predictors
and caches will be empty so a branch to a workaround function must be
fetched from memory and that round trip is very slow. Then it also runs
with the I-cache off, which means that the loop to iterate over the
workarounds must also be fetched from memory on each iteration.

We can remove both branches. First, we can simply apply every erratum
directly instead of defining a workaround function and jumping to it.
Currently, no errata that need to be applied at both reset and runtime,
with the same workaround function, exist. If the need arose in future,
this should be achievable with a reset + runtime wrapper combo.

Then, we can construct a function that applies each erratum linearly
instead of looping over the list. If this function is part of the reset
function, then the only "far" branches at reset will be for the checker
functions. Importantly, this mitigates the slowdown even when an erratum
is disabled.

The result is ~50% speedup on N1SDP and ~20% on AArch64 Juno on wakeup
from PSCI calls that end in powerdown. This is roughly back to the
baseline of v2.9, before the errata framework regressed on performance
(or a little better). It is important to note that there are other
slowdowns since then that remain unknown.

Change-Id: Ie4d5288a331b11fd648e5c4a0b652b74160b07b9
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

0d02082219-Nov-2024 Boyan Karatotev <boyan.karatotev@arm.com>

perf(cpus): inline the reset function

Similar to the cpu_rev_var and cpu_ger_rev_var functions, inline the
call_reset_handler handler. This way we skip the costly branch at no
extra cost as this is

perf(cpus): inline the reset function

Similar to the cpu_rev_var and cpu_ger_rev_var functions, inline the
call_reset_handler handler. This way we skip the costly branch at no
extra cost as this is the only place where this is called.

While we're at it, drop the options for CPU_NO_RESET_FUNC. The only cpus
that need that are virtual cpus which can spare the tiny bit of
performance lost. The rest are real cores which can save on the check
for zero.

Now is a good time to put the assert for a missing cpu in the
get_cpu_ops_ptr function so that it's a bit better encapsulated.

Change-Id: Ia7c3dcd13b75e5d7c8bafad4698994ea65f42406
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

36eeb59f04-Dec-2024 Boyan Karatotev <boyan.karatotev@arm.com>

perf(cpus): inline the cpu_get_rev_var call

Similar to the cpu_rev_var_xy functions, branching far away so early in
the reset sequence incurs significant slowdowns. Inline the function.

Change-Id:

perf(cpus): inline the cpu_get_rev_var call

Similar to the cpu_rev_var_xy functions, branching far away so early in
the reset sequence incurs significant slowdowns. Inline the function.

Change-Id: Ifc349015902cd803e11a1946208141bfe7606b89
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

7791ce2121-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

perf(cpus): inline cpu_rev_var checks

We strive to apply errata as close to reset as possible with as few
things enabled as possible. Importantly, the I-cache will not be
enabled. This means that re

perf(cpus): inline cpu_rev_var checks

We strive to apply errata as close to reset as possible with as few
things enabled as possible. Importantly, the I-cache will not be
enabled. This means that repeated branches to these tiny functions must
be re-fetched all the way from memory each time which has glacial speed.
Cores are allowed to fetch things ahead of time though as long as
execution is fairly linear. So we can trade a little bit of space (3 to
7 instructions per erratum) to keep things linear and not have to go to
memory.

While we're at it, optimise the the cpu_rev_var_{ls, hs, range}
functions to take up less space. Dropping the moves allows for a bit of
assembly magic that produces the same result in 2 and 3 instructions
respectively.

Change-Id: I51608352f23b2244ea7a99e76c10892d257f12bf
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

b62673c623-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

refactor(cpus): register DSU errata with the errata framework's wrappers

The existing DSU errata workarounds hijack the errata framework's inner
workings to register with it. However, that is undesi

refactor(cpus): register DSU errata with the errata framework's wrappers

The existing DSU errata workarounds hijack the errata framework's inner
workings to register with it. However, that is undesirable as any change
to the framework may end up missing these workarounds. So convert the
checks and workarounds to macros and have them included with the
standard wrappers.

The only problem with this is the is_scu_present_in_dsu weak function.
Fortunately, it is only needed for 2 of the errata and only on 3 cores.
So drop it, assuming the default behaviour and have the callers handle
the exception.

Change-Id: Iefa36325804ea093e938f867b9a6f49a6984b8ae
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

b547716721-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

refactor(cpus): convert checker functions to standard helpers

The library check_erratum_ls already incorporates the check. The return
of ERRATA_MISSING is handled in the errata_report.c functions.

refactor(cpus): convert checker functions to standard helpers

The library check_erratum_ls already incorporates the check. The return
of ERRATA_MISSING is handled in the errata_report.c functions.

Change-Id: Ic1dff2bc5235195f7cfce1709cd42467f88b3e4c
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

52e89e9e23-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

refactor(cpus): convert the Cortex-A65 to use the errata framework

Result was verified by manually stepping through the reset function with
a debugger.

Change-Id: I91cd6111ccf95d6b7ee2364ac2126cb98

refactor(cpus): convert the Cortex-A65 to use the errata framework

Result was verified by manually stepping through the reset function with
a debugger.

Change-Id: I91cd6111ccf95d6b7ee2364ac2126cb98ee4bb15
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...

5cba510e20-Jan-2025 Boyan Karatotev <boyan.karatotev@arm.com>

fix(cpus): declare reset errata correctly

The errata in this patch are declared as runtime, but are never called
explicitly. This means that they are never called! Convert them to reset
errata so th

fix(cpus): declare reset errata correctly

The errata in this patch are declared as runtime, but are never called
explicitly. This means that they are never called! Convert them to reset
errata so that they are called at reset. Their SDENs entries have been
checked and confirm that this is how they should be implemented.

Also, drop the the MIDR check on the a57 erratum as it's not needed -
the erratum is already called from a cpu-specific function.

Change-Id: I22c3043ab454ce94b3c122c856e5804bc2ebb18b
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...


/rk3399_ARM-atf/docs/design/cpu-specific-build-macros.rst
/rk3399_ARM-atf/docs/design_documents/rse.rst
/rk3399_ARM-atf/drivers/arm/rse/rse_comms.c
/rk3399_ARM-atf/drivers/arm/rse/rse_comms.mk
/rk3399_ARM-atf/drivers/arm/rse/rse_comms_mhu.c
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/include/s32cc-clk-regs.h
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_clk_drv.c
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_clk_modules.c
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_early_clks.c
/rk3399_ARM-atf/include/drivers/arm/mhu.h
/rk3399_ARM-atf/include/drivers/arm/rse_comms.h
/rk3399_ARM-atf/include/drivers/nxp/clk/s32cc/s32cc-clk-ids.h
/rk3399_ARM-atf/include/drivers/nxp/clk/s32cc/s32cc-clk-modules.h
/rk3399_ARM-atf/include/lib/libc/cdefs.h
/rk3399_ARM-atf/include/lib/libc/stdlib.h
aarch64/cortex_a57.S
aarch64/cortex_x3.S
aarch64/neoverse_n2.S
aarch64/neoverse_v1.S
/rk3399_ARM-atf/lib/el3_runtime/aarch64/context_mgmt.c
/rk3399_ARM-atf/lib/libc/libc_common.mk
/rk3399_ARM-atf/lib/libc/qsort.c
/rk3399_ARM-atf/plat/amd/common/include/plat_xfer_list.h
/rk3399_ARM-atf/plat/amd/common/plat_fdt.c
/rk3399_ARM-atf/plat/amd/common/plat_xfer_list.c
/rk3399_ARM-atf/plat/amd/versal2/bl31_setup.c
/rk3399_ARM-atf/plat/amd/versal2/platform.mk
/rk3399_ARM-atf/plat/arm/board/automotive_rd/platform/rd1ae/platform.mk
/rk3399_ARM-atf/plat/arm/board/common/board_common.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/nrd_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/rdv3_common.c
/rk3399_ARM-atf/plat/arm/board/tc/include/tc_rse_comms.h
/rk3399_ARM-atf/plat/arm/board/tc/nv_counter_test.c
/rk3399_ARM-atf/plat/arm/board/tc/platform.mk
/rk3399_ARM-atf/plat/arm/board/tc/platform_test.mk
/rk3399_ARM-atf/plat/arm/board/tc/rotpk_test.c
/rk3399_ARM-atf/plat/arm/board/tc/rse_ap_tests.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl1_dpe.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl1_measured_boot.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl2_dpe.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl2_measured_boot.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_rse_comms.c
/rk3399_ARM-atf/plat/arm/common/arm_pm.c
/rk3399_ARM-atf/plat/marvell/armada/a3k/common/a3700_common.mk
/rk3399_ARM-atf/plat/mediatek/drivers/apusys/mt8196/apusys_devapc_def.h
/rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm.c
/rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm.h
/rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm_conservation.c
/rk3399_ARM-atf/plat/qemu/common/common.mk
/rk3399_ARM-atf/plat/qemu/qemu/platform.mk
/rk3399_ARM-atf/plat/qemu/qemu_sbsa/include/platform_def.h
/rk3399_ARM-atf/plat/xilinx/common/include/plat_fdt.h
/rk3399_ARM-atf/plat/xilinx/common/plat_console.c
/rk3399_ARM-atf/plat/xilinx/common/plat_fdt.c
/rk3399_ARM-atf/plat/xilinx/versal/platform.mk
/rk3399_ARM-atf/plat/xilinx/versal_net/platform.mk
/rk3399_ARM-atf/plat/xilinx/zynqmp/include/platform_def.h
/rk3399_ARM-atf/services/std_svc/drtm/drtm_main.c
/rk3399_ARM-atf/services/std_svc/drtm/drtm_res_address_map.c
/rk3399_ARM-atf/services/std_svc/spmd/spmd_main.c
29bda25807-Feb-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Cortex-X925 erratum 2963999

Cortex-X925 erratum 2963999 that applies to r0p0 and is fixed in
r0p1.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
whi

fix(cpus): workaround for Cortex-X925 erratum 2963999

Cortex-X925 erratum 2963999 that applies to r0p0 and is fixed in
r0p1.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
which register to return when reading the value of
MPIDR_EL1/VMPIDR_EL2 and MIDR_EL1/VPIDR_EL2, respectively.

The workaround is to do an ISB prior to an MRS read to either
MPIDR_EL1 and MIDR_EL1.

SDEN documentation:
https://developer.arm.com/documentation/109180/latest/

Change-Id: I447fd359ea32e1d274e1245886e1de57d14f082c
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

5f32fd2107-Feb-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Neoverse-V3 erratum 2970647

Neoverse V3 erratum 2970647 that applies to r0p0 and is fixed in r0p1.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
whi

fix(cpus): workaround for Neoverse-V3 erratum 2970647

Neoverse V3 erratum 2970647 that applies to r0p0 and is fixed in r0p1.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
which register to return when reading the value of
MPIDR_EL1/VMPIDR_EL2 and MIDR_EL1/VPIDR_EL2, respectively.

The workaround is to do an ISB prior to an MRS read to either
MPIDR_EL1 and MIDR_EL1.

SDEN documentation:
https://developer.arm.com/documentation/SDEN-2891958/latest/

Change-Id: Iedf7d799451f0be58a5da1f93f7f5b6940f2bb35
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

09c1edb807-Feb-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Cortex-X4 erratum 2957258

Cortex-X4 erratum 2957258 that applies to r0p0, r0p1 and is fixed in
r0p2.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
w

fix(cpus): workaround for Cortex-X4 erratum 2957258

Cortex-X4 erratum 2957258 that applies to r0p0, r0p1 and is fixed in
r0p2.

In EL3, reads of MPIDR_EL1 and MIDR_EL1 might incorrectly virtualize
which register to return when reading the value of
MPIDR_EL1/VMPIDR_EL2 and MIDR_EL1/VPIDR_EL2, respectively.

The workaround is to do an ISB prior to an MRS read to either
MPIDR_EL1 and MIDR_EL1.

SDEN documentation:
https://developer.arm.com/documentation/109148/latest/

Change-Id: I2d8e7f4ce19ca2e1d87527c31e7778d81aff0279
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...


/rk3399_ARM-atf/.github/dependabot.yml
/rk3399_ARM-atf/common/fdt_wrappers.c
/rk3399_ARM-atf/docs/components/granule-protection-tables-design.rst
/rk3399_ARM-atf/docs/components/rmm-el3-comms-spec.rst
/rk3399_ARM-atf/docs/design/console-framework.rst
/rk3399_ARM-atf/docs/design/cpu-specific-build-macros.rst
/rk3399_ARM-atf/docs/design/index.rst
/rk3399_ARM-atf/docs/plat/arm/arm-build-options.rst
/rk3399_ARM-atf/docs/porting-guide.rst
/rk3399_ARM-atf/fdts/fvp-base-psci-common.dtsi
/rk3399_ARM-atf/include/common/fdt_wrappers.h
/rk3399_ARM-atf/include/lib/gpt_rme/gpt_rme.h
/rk3399_ARM-atf/include/plat/arm/common/arm_def.h
/rk3399_ARM-atf/include/plat/common/common_def.h
/rk3399_ARM-atf/include/services/rmm_core_manifest.h
aarch64/cortex_x4.S
cpu-ops.mk
/rk3399_ARM-atf/lib/gpt_rme/gpt_rme.c
/rk3399_ARM-atf/lib/gpt_rme/gpt_rme.mk
/rk3399_ARM-atf/lib/gpt_rme/gpt_rme_private.h
/rk3399_ARM-atf/plat/arm/board/fvp/fconf/fconf_hw_config_getter.c
/rk3399_ARM-atf/plat/arm/board/fvp/fdts/fvp_fw_config.dts
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_bl2_setup.c
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_common.c
/rk3399_ARM-atf/plat/arm/board/fvp/include/fconf_hw_config_getter.h
/rk3399_ARM-atf/plat/arm/board/fvp/include/fvp_pas_def.h
/rk3399_ARM-atf/plat/arm/board/fvp/include/platform_def.h
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/include/nrd3/nrd_plat_arm_def3.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/include/platform_def.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/rdv3_common.c
/rk3399_ARM-atf/plat/arm/common/arm_bl31_setup.c
/rk3399_ARM-atf/plat/imx/common/include/imx_sip_svc.h
/rk3399_ARM-atf/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mq/include/platform_def.h
/rk3399_ARM-atf/plat/imx/imx8m/imx8mq/platform.mk
/rk3399_ARM-atf/plat/intel/soc/agilex5/include/agilex5_system_manager.h
/rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_system_manager.h
/rk3399_ARM-atf/plat/intel/soc/common/soc/socfpga_system_manager.c
/rk3399_ARM-atf/plat/intel/soc/common/socfpga_sip_svc.c
/rk3399_ARM-atf/plat/qemu/common/qemu_bl31_setup.c
/rk3399_ARM-atf/plat/qemu/common/qemu_common.c
/rk3399_ARM-atf/plat/qemu/qemu/include/platform_def.h
/rk3399_ARM-atf/plat/qemu/qemu/include/qemu_pas_def.h
/rk3399_ARM-atf/plat/qemu/qemu_sbsa/include/platform_def.h
/rk3399_ARM-atf/plat/qemu/qemu_sbsa/include/qemu_sbsa_pas_def.h
fcb80d7d11-Feb-2025 Manish Pandey <manish.pandey2@arm.com>

Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration

* changes:
fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset
chore(docs): drop the "wfi" from `pwr_

Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration

* changes:
fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset
chore(docs): drop the "wfi" from `pwr_domain_pwr_down_wfi`
chore(psci): drop skip_wfi variable
feat(arm): convert arm platforms to expect a wakeup
fix(cpus): avoid SME related loss of context on powerdown
feat(psci): allow cores to wake up from powerdown
refactor: panic after calling psci_power_down_wfi()
refactor(cpus): undo errata mitigations
feat(cpus): add sysreg_bit_toggle

show more ...


/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/aarch64/crash_reporting.S
/rk3399_ARM-atf/docs/design/firmware-design.rst
/rk3399_ARM-atf/docs/getting_started/build-options.rst
/rk3399_ARM-atf/docs/getting_started/prerequisites.rst
/rk3399_ARM-atf/docs/porting-guide.rst
/rk3399_ARM-atf/drivers/arm/css/scp/css_pm_scmi.c
/rk3399_ARM-atf/drivers/arm/css/scp/css_pm_scpi.c
/rk3399_ARM-atf/include/arch/aarch64/arch.h
/rk3399_ARM-atf/include/arch/aarch64/arch_helpers.h
/rk3399_ARM-atf/include/arch/aarch64/asm_macros.S
/rk3399_ARM-atf/include/drivers/arm/css/css_scp.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cortex_alto.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cortex_gelas.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cpu_macros.S
/rk3399_ARM-atf/include/lib/cpus/aarch64/travis.h
/rk3399_ARM-atf/include/lib/psci/psci.h
/rk3399_ARM-atf/include/lib/psci/psci_lib.h
/rk3399_ARM-atf/include/plat/arm/css/common/css_pm.h
aarch64/cortex_a710.S
aarch64/cortex_alto.S
aarch64/cortex_gelas.S
aarch64/cortex_x3.S
aarch64/neoverse_n2.S
aarch64/travis.S
/rk3399_ARM-atf/lib/extensions/sysreg128/sysreg128.S
/rk3399_ARM-atf/lib/psci/aarch64/psci_helpers.S
/rk3399_ARM-atf/lib/psci/psci_common.c
/rk3399_ARM-atf/lib/psci/psci_main.c
/rk3399_ARM-atf/lib/psci/psci_off.c
/rk3399_ARM-atf/lib/psci/psci_private.h
/rk3399_ARM-atf/lib/psci/psci_suspend.c
/rk3399_ARM-atf/lib/psci/psci_system_off.c
/rk3399_ARM-atf/make_helpers/defaults.mk
/rk3399_ARM-atf/plat/allwinner/common/sunxi_native_pm.c
/rk3399_ARM-atf/plat/allwinner/common/sunxi_scpi_pm.c
/rk3399_ARM-atf/plat/amlogic/axg/axg_pm.c
/rk3399_ARM-atf/plat/amlogic/g12a/g12a_pm.c
/rk3399_ARM-atf/plat/amlogic/gxbb/gxbb_pm.c
/rk3399_ARM-atf/plat/amlogic/gxl/gxl_pm.c
/rk3399_ARM-atf/plat/arm/board/corstone1000/common/corstone1000_pm.c
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_pm.c
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/board/tc/platform.mk
/rk3399_ARM-atf/plat/arm/css/common/css_pm.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mm/imx8mm_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mn/imx8mn_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mp/imx8mp_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mq/imx8mq_psci.c
/rk3399_ARM-atf/plat/imx/imx8ulp/imx8ulp_psci.c
/rk3399_ARM-atf/plat/marvell/armada/a8k/common/plat_pm.c
/rk3399_ARM-atf/plat/mediatek/include/lib/pm/mtk_pm.h
/rk3399_ARM-atf/plat/mediatek/lib/pm/armv9_0/pwr_ctrl.c
/rk3399_ARM-atf/plat/mediatek/lib/pm/mtk_pm.c
/rk3399_ARM-atf/plat/mediatek/mt8196/include/platform_def.h
/rk3399_ARM-atf/plat/mediatek/mt8196/plat_config.mk
/rk3399_ARM-atf/plat/nuvoton/npcm845x/npcm845x_psci.c
/rk3399_ARM-atf/plat/nvidia/tegra/common/tegra_pm.c
/rk3399_ARM-atf/plat/nxp/common/psci/plat_psci.c
/rk3399_ARM-atf/plat/qemu/common/qemu_pm.c
/rk3399_ARM-atf/plat/qemu/qemu_sbsa/sbsa_pm.c
/rk3399_ARM-atf/plat/qti/common/src/qti_pm.c
/rk3399_ARM-atf/plat/renesas/common/plat_pm.c
/rk3399_ARM-atf/plat/rockchip/common/plat_pm.c
/rk3399_ARM-atf/plat/rockchip/px30/drivers/pmu/pmu.c
/rk3399_ARM-atf/plat/rockchip/rk3328/drivers/pmu/pmu.c
/rk3399_ARM-atf/plat/rockchip/rk3588/drivers/pmu/pmu.c
/rk3399_ARM-atf/plat/rpi/common/rpi3_pm.c
/rk3399_ARM-atf/plat/socionext/uniphier/uniphier_psci.c
/rk3399_ARM-atf/plat/st/stm32mp1/stm32mp1_pm.c
/rk3399_ARM-atf/plat/st/stm32mp2/stm32mp2_pm.c
593ae35422-Mar-2023 Boyan Karatotev <boyan.karatotev@arm.com>

feat(cpus): add ENABLE_ERRATA_ALL flag

Now that all errata flags are all conveniently in a single list we can
make sweeping decisions about their values. The first use-case is to
enable all errata i

feat(cpus): add ENABLE_ERRATA_ALL flag

Now that all errata flags are all conveniently in a single list we can
make sweeping decisions about their values. The first use-case is to
enable all errata in TF-A. This is useful for CI runs where it is
impractical to list every single one. This should help with the long
standing issue of errata not being built or tested.

Also add missing CPUs with errata to `ENABLE_ERRATA_ALL` to enable all
errata builds in CI.

Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
Change-Id: I2b456d304d7bf3215c7c4f4fd70b56ecbcb09979

show more ...


/rk3399_ARM-atf/.github/dependabot.yml
/rk3399_ARM-atf/Makefile
/rk3399_ARM-atf/bl31/aarch64/ea_delegate.S
/rk3399_ARM-atf/bl32/sp_min/sp_min_main.c
/rk3399_ARM-atf/changelog.yaml
/rk3399_ARM-atf/docs/design_documents/index.rst
/rk3399_ARM-atf/docs/design_documents/rse.rst
/rk3399_ARM-atf/docs/getting_started/build-options.rst
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/include/s32cc-clk-regs.h
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_clk_drv.c
/rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_clk_modules.c
/rk3399_ARM-atf/fdts/rdv3-defs.dtsi
/rk3399_ARM-atf/fdts/tc-base.dtsi
/rk3399_ARM-atf/fdts/tc2.dts
/rk3399_ARM-atf/fdts/tc3-4-base.dtsi
/rk3399_ARM-atf/fdts/tc4.dts
/rk3399_ARM-atf/include/drivers/nxp/clk/s32cc/s32cc-clk-modules.h
/rk3399_ARM-atf/include/lib/cpus/aarch64/cortex_gelas.h
/rk3399_ARM-atf/include/lib/psa/rse_crypto_defs.h
/rk3399_ARM-atf/include/lib/psa/rse_platform_api.h
/rk3399_ARM-atf/include/plat/arm/common/arm_def.h
cpu-ops.mk
/rk3399_ARM-atf/lib/psa/rse_platform.c
/rk3399_ARM-atf/make_helpers/defaults.mk
/rk3399_ARM-atf/plat/amd/versal2/aarch64/common.c
/rk3399_ARM-atf/plat/amd/versal2/bl31_setup.c
/rk3399_ARM-atf/plat/amd/versal2/include/def.h
/rk3399_ARM-atf/plat/amd/versal2/include/plat_private.h
/rk3399_ARM-atf/plat/amd/versal2/include/platform_def.h
/rk3399_ARM-atf/plat/arm/board/common/board_common.mk
/rk3399_ARM-atf/plat/arm/board/fvp/platform.mk
/rk3399_ARM-atf/plat/arm/board/morello/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/include/nrd3/nrd_css_fw_def3.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/include/nrd3/nrd_pas_def3.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/include/nrd3/nrd_plat_arm_def3.h
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/nrd_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/nrd_image_load.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/common/nrd_plat3.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdn2/fdts/rdn2_stmm_sel0_manifest.dts
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdn2/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv1/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv1mc/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/fdts/rdv3_fw_config.dts
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/fdts/rdv3_spmc_sp_manifest.dts
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/fdts/rdv3_tb_fw_config.dts
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/platform.mk
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/rdv3_bl2_setup.c
/rk3399_ARM-atf/plat/arm/board/neoverse_rd/platform/rdv3/rdv3_common.c
/rk3399_ARM-atf/plat/arm/board/tc/include/tc_helpers.S
/rk3399_ARM-atf/plat/arm/board/tc/platform.mk
/rk3399_ARM-atf/plat/arm/board/tc/tc_bl31_setup.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_rng_trap.c
/rk3399_ARM-atf/plat/arm/board/tc/tc_trng.c
/rk3399_ARM-atf/plat/arm/common/arm_bl31_setup.c
/rk3399_ARM-atf/plat/common/aarch32/plat_sp_min_common.c
/rk3399_ARM-atf/plat/mediatek/drivers/cpu_pm/cpcv5_4/mt_cpu_pm.c
/rk3399_ARM-atf/plat/mediatek/drivers/cpu_pm/cpcv5_4/mt_cpu_pm_smc.h
/rk3399_ARM-atf/plat/mediatek/drivers/cpu_pm/cpcv5_4/mt_lp_irqremain.c
/rk3399_ARM-atf/plat/mediatek/drivers/cpu_pm/cpcv5_4/rules.mk
/rk3399_ARM-atf/plat/mediatek/drivers/smmu/rules.mk
/rk3399_ARM-atf/plat/mediatek/drivers/smmu/smmu.c
/rk3399_ARM-atf/plat/mediatek/include/mtk_sip_def.h
/rk3399_ARM-atf/plat/mediatek/lib/pm/armv9_0/pwr_ctrl.c
/rk3399_ARM-atf/plat/mediatek/lib/system_reset/reset_cros.c
/rk3399_ARM-atf/plat/mediatek/mt8196/include/platform_def.h
/rk3399_ARM-atf/plat/mediatek/mt8196/plat_mmap.c
/rk3399_ARM-atf/plat/mediatek/mt8196/platform.mk
c9f352c316-Oct-2024 Boyan Karatotev <boyan.karatotev@arm.com>

fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset

The model has a bug where it will not clear CPUPWRCTLR_EL1 on reset,
even though the actual cores do. The write of 1 to the bit itself
trig

fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset

The model has a bug where it will not clear CPUPWRCTLR_EL1 on reset,
even though the actual cores do. The write of 1 to the bit itself
triggers the powerdown sequnece, regardless of the value before the
write. As such, the bug does not impact functionality but it does throw
off software reading it.

Clear the bit on Travis and Gelas as they are the only ones to require
reading it back.

Change-Id: I765a7fa055733d522480be30d412e3b417af2bd7
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>

show more ...


/rk3399_ARM-atf/docs/porting-guide.rst
/rk3399_ARM-atf/drivers/arm/css/scp/css_pm_scmi.c
/rk3399_ARM-atf/drivers/arm/css/scp/css_pm_scpi.c
/rk3399_ARM-atf/include/drivers/arm/css/css_scp.h
/rk3399_ARM-atf/include/lib/psci/psci.h
/rk3399_ARM-atf/include/plat/arm/css/common/css_pm.h
aarch64/cortex_gelas.S
aarch64/travis.S
/rk3399_ARM-atf/lib/psci/psci_off.c
/rk3399_ARM-atf/lib/psci/psci_suspend.c
/rk3399_ARM-atf/plat/amlogic/axg/axg_pm.c
/rk3399_ARM-atf/plat/amlogic/g12a/g12a_pm.c
/rk3399_ARM-atf/plat/amlogic/gxbb/gxbb_pm.c
/rk3399_ARM-atf/plat/amlogic/gxl/gxl_pm.c
/rk3399_ARM-atf/plat/arm/board/corstone1000/common/corstone1000_pm.c
/rk3399_ARM-atf/plat/arm/board/fvp/fvp_pm.c
/rk3399_ARM-atf/plat/arm/css/common/css_pm.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mm/imx8mm_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mn/imx8mn_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mp/imx8mp_psci.c
/rk3399_ARM-atf/plat/imx/imx8m/imx8mq/imx8mq_psci.c
/rk3399_ARM-atf/plat/imx/imx8ulp/imx8ulp_psci.c
/rk3399_ARM-atf/plat/marvell/armada/a8k/common/plat_pm.c
/rk3399_ARM-atf/plat/mediatek/lib/pm/mtk_pm.c
/rk3399_ARM-atf/plat/nuvoton/npcm845x/npcm845x_psci.c
/rk3399_ARM-atf/plat/nvidia/tegra/common/tegra_pm.c
/rk3399_ARM-atf/plat/nxp/common/psci/plat_psci.c
/rk3399_ARM-atf/plat/qemu/common/qemu_pm.c
/rk3399_ARM-atf/plat/qemu/qemu_sbsa/sbsa_pm.c
/rk3399_ARM-atf/plat/qti/common/src/qti_pm.c
/rk3399_ARM-atf/plat/renesas/common/plat_pm.c
/rk3399_ARM-atf/plat/rockchip/common/plat_pm.c
/rk3399_ARM-atf/plat/rpi/common/rpi3_pm.c
/rk3399_ARM-atf/plat/socionext/uniphier/uniphier_psci.c
/rk3399_ARM-atf/plat/st/stm32mp1/stm32mp1_pm.c
/rk3399_ARM-atf/plat/st/stm32mp2/stm32mp2_pm.c
e25fc9df22-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Neoverse-V3 erratum 3701767

Neoverse-V3 erratum 3701767 that applies to r0p0, r0p1, r0p2 is
still Open.

The workaround is for EL3 software that performs context save/resto

fix(cpus): workaround for Neoverse-V3 erratum 3701767

Neoverse-V3 erratum 3701767 that applies to r0p0, r0p1, r0p2 is
still Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/SDEN-2891958/latest/

Change-Id: I5be0de881f408a9e82a07b8459d79490e9065f94
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

fded839222-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Neoverse-N3 erratum 3699563

Neoverse-N3 erratum 3699563 that applies to r0p0 is still Open.

The workaround is for EL3 software that performs context save/restore
on a chan

fix(cpus): workaround for Neoverse-N3 erratum 3699563

Neoverse-N3 erratum 3699563 that applies to r0p0 is still Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/SDEN-3050973/latest/

Change-Id: I77aaf8ae0afff3adde9a85f4a1a13ac9d1daf0af
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

adea6e5222-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Neoverse-N2 erratum 3701773

Neoverse-N2 erratum 3701773 that applies to r0p0, r0p1, r0p2 and r0p3
is still Open.

The workaround is for EL3 software that performs context s

fix(cpus): workaround for Neoverse-N2 erratum 3701773

Neoverse-N2 erratum 3701773 that applies to r0p0, r0p1, r0p2 and r0p3
is still Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/SDEN-1982442/latest/

Change-Id: If95bd67363228c8083724b31f630636fb27f3b61
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

511148ef22-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Cortex-X925 erratum 3701747

Cortex-X925 erratum 3701747 that applies to r0p0, r0p1 and is still
Open.

The workaround is for EL3 software that performs context save/restore

fix(cpus): workaround for Cortex-X925 erratum 3701747

Cortex-X925 erratum 3701747 that applies to r0p0, r0p1 and is still
Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/109180/latest/

Change-Id: I080296666f89276b3260686c2bdb8de63fc174c1
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

38401c5322-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Cortex-X4 erratum 3701758

Cortex-X4 erratum 3701758 that applies to r0p0, r0p1, r0p2 and r0p3
is still Open.

The workaround is for EL3 software that performs context save/

fix(cpus): workaround for Cortex-X4 erratum 3701758

Cortex-X4 erratum 3701758 that applies to r0p0, r0p1, r0p2 and r0p3
is still Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/109148/latest/

Change-Id: I4ee941d1e7653de7a12d69f538ca05f7f9f9961d
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

77feb74522-Jan-2025 Govindraj Raja <govindraj.raja@arm.com>

fix(cpus): workaround for Cortex-X3 erratum 3701769

Cortex-X3 erratum 3701769 that applies to r0p0, r1p0, r1p1 and r1p2
is still Open.

The workaround is for EL3 software that performs context save/

fix(cpus): workaround for Cortex-X3 erratum 3701769

Cortex-X3 erratum 3701769 that applies to r0p0, r1p0, r1p1 and r1p2
is still Open.

The workaround is for EL3 software that performs context save/restore
on a change of Security state to use a value of SCR_EL3.NS when
accessing ICH_VMCR_EL2 that reflects the Security state that owns the
data being saved or restored.

SDEN documentation:
https://developer.arm.com/documentation/SDEN-2055130/latest/

Change-Id: Ifd722e1bb8616ada2ad158297a7ca80b19a3370b
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>

show more ...

12345678910>>...34