History log of /rk3399_ARM-atf/ (Results 2251 – 2275 of 18586)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
a65fa57b22-Feb-2025 Manish V Badarkhe <Manish.Badarkhe@arm.com>

fix(drtm): add missing DLME data regions for min size requirement

Ensure compliance with minimum size requirements by including the
missing DLME data regions, such as the DLME data header and ACPI
r

fix(drtm): add missing DLME data regions for min size requirement

Ensure compliance with minimum size requirements by including the
missing DLME data regions, such as the DLME data header and ACPI
region size.
This will prevent incorrect allocation of DLME data regions in
the DCE preamble.

Change-Id: Ic493262152dfe39eb2d54f8771f19651be042288
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>

show more ...

5d37755524-Feb-2025 Manish V Badarkhe <Manish.Badarkhe@arm.com>

feat(fvp): add stub platform function to get ACPI table region size

Introduces a stub platform function for FVP to retrieve the ACPI table
region size.

Change-Id: Icbf1ae0cb89c393502de2c2f4f66df6b5

feat(fvp): add stub platform function to get ACPI table region size

Introduces a stub platform function for FVP to retrieve the ACPI table
region size.

Change-Id: Icbf1ae0cb89c393502de2c2f4f66df6b510e6b81
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>

show more ...

7792bdbd24-Feb-2025 Manish V Badarkhe <Manish.Badarkhe@arm.com>

feat(drtm): add platform API to retrieve ACPI tables region size

Introduces a platform-specific API to retrieve the ACPI table
region size. This will be used in a subsequent patch to specify
the min

feat(drtm): add platform API to retrieve ACPI tables region size

Introduces a platform-specific API to retrieve the ACPI table
region size. This will be used in a subsequent patch to specify
the minimum DLME size requirement for the DCE preamble.

Change-Id: I44ce9241733b22fea3cbce9d42f1c2cc5ef20852
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>

show more ...

bac623d126-Feb-2025 Olivier Deprez <olivier.deprez@arm.com>

Merge "docs(fvp): update FVP versions used" into integration

74207a1825-Feb-2025 Govindraj Raja <govindraj.raja@arm.com>

docs(fvp): update FVP versions used

Patch series:
https://review.trustedfirmware.org/q/topic:%22gr/fvp_11_28_23%22

Migrated FVP's to use version 11.28.23 and also removed some model
testing that ar

docs(fvp): update FVP versions used

Patch series:
https://review.trustedfirmware.org/q/topic:%22gr/fvp_11_28_23%22

Migrated FVP's to use version 11.28.23 and also removed some model
testing that are now no more available or not working with newer model
configuration.

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

show more ...

04b2fb4225-Feb-2025 Mark Dykes <mark.dykes@arm.com>

Merge "feat(rk3576): support rk3576" into integration

2e0354f525-Feb-2025 Manish V Badarkhe <manish.badarkhe@arm.com>

Merge changes I3d950e72,Id315a8fe,Ib62e6e9b,I1d0475b2 into integration

* changes:
perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context
perf(psci): get PMF timestamps wi

Merge changes I3d950e72,Id315a8fe,Ib62e6e9b,I1d0475b2 into integration

* changes:
perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context
perf(psci): get PMF timestamps with no cache flushes if possible
perf(amu): greatly simplify AMU context management
perf(mpmm): greatly simplify MPMM enablement

show more ...


Makefile
bl31/bl31.mk
bl31/bl31_main.c
docs/about/maintainers.rst
docs/components/activity-monitors.rst
docs/components/context-management-library.rst
docs/components/fconf/index.rst
docs/components/mpmm.rst
docs/getting_started/build-options.rst
fdts/tc-base.dtsi
fdts/tc2.dts
include/arch/aarch32/arch.h
include/arch/aarch32/arch_features.h
include/arch/aarch32/arch_helpers.h
include/arch/aarch64/arch.h
include/arch/aarch64/arch_features.h
include/arch/aarch64/arch_helpers.h
include/arch/aarch64/el3_common_macros.S
include/lib/cpus/aarch64/cpu_macros.S
include/lib/el3_runtime/aarch64/context.h
include/lib/el3_runtime/context_mgmt.h
include/lib/extensions/amu.h
include/lib/extensions/sve.h
lib/cpus/aarch64/cortex_a510.S
lib/cpus/aarch64/cortex_a520.S
lib/cpus/aarch64/cortex_a710.S
lib/cpus/aarch64/cortex_a715.S
lib/cpus/aarch64/cortex_a720.S
lib/cpus/aarch64/cortex_a720_ae.S
lib/cpus/aarch64/cortex_a725.S
lib/cpus/aarch64/cortex_alto.S
lib/cpus/aarch64/cortex_arcadia.S
lib/cpus/aarch64/cortex_gelas.S
lib/cpus/aarch64/cortex_x2.S
lib/cpus/aarch64/cortex_x3.S
lib/cpus/aarch64/cortex_x4.S
lib/cpus/aarch64/cortex_x925.S
lib/cpus/aarch64/nevis.S
lib/cpus/aarch64/travis.S
lib/el3_runtime/aarch64/context.S
lib/el3_runtime/aarch64/context_mgmt.c
lib/extensions/amu/aarch32/amu.c
lib/extensions/amu/aarch64/amu.c
lib/extensions/amu/amu.mk
lib/extensions/sme/sme.c
lib/extensions/sve/sve.c
lib/fconf/fconf.mk
lib/psci/psci_common.c
lib/psci/psci_suspend.c
make_helpers/arch_features.mk
make_helpers/defaults.mk
plat/arm/board/tc/platform.mk
plat/arm/board/tc/tc_bl31_setup.c
plat/common/plat_psci_common.c
937c513d13-Dec-2024 Harrison Mutai <harrison.mutai@arm.com>

feat(handoff): add transfer entry printer

Change-Id: Ib7d370b023f92f2fffbd341bcf874914fcc1bac2
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>

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

perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context

SVE and SME aren't enabled symmetrically for all worlds, but EL3 needs
to context switch them nonetheless. Previously,

perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context

SVE and SME aren't enabled symmetrically for all worlds, but EL3 needs
to context switch them nonetheless. Previously, this had to happen by
writing the enable bits just before reading/writing the relevant
context. But since the introduction of root context, this need not be
the case. We can have these enables always be present for EL3 and save
on some work (and ISBs!) on every context switch.

We can also hoist ZCR_EL3 to a never changing register, as we set its
value to be identical for every world, which happens to be the one we
want for EL3 too.

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

show more ...

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

perf(psci): get PMF timestamps with no cache flushes if possible

Whenever we have HW_ASSISTED_COHERENCY, caches are enabled early and we
let the cores do the cache maintenance on our behalf. This is

perf(psci): get PMF timestamps with no cache flushes if possible

Whenever we have HW_ASSISTED_COHERENCY, caches are enabled early and we
let the cores do the cache maintenance on our behalf. This is true for
the PSCI stat timestamp capture and used to be the case. However, a
model bug required us to do the cache maintenance manually. That has
been fixed so we can revert back.

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

show more ...

83ec7e4506-Nov-2024 Boyan Karatotev <boyan.karatotev@arm.com>

perf(amu): greatly simplify AMU context management

The current code is incredibly resilient to updates to the spec and
has worked quite well so far. However, recent implementations expose a
weakness

perf(amu): greatly simplify AMU context management

The current code is incredibly resilient to updates to the spec and
has worked quite well so far. However, recent implementations expose a
weakness in that this is rather slow. A large part of it is written in
assembly, making it opaque to the compiler for optimisations. The
future proofness requires reading registers that are effectively
`volatile`, making it even harder for the compiler, as well as adding
lots of implicit barriers, making it hard for the microarchitecutre to
optimise as well.

We can make a few assumptions, checked by a few well placed asserts, and
remove a lot of this burden. For a start, at the moment there are 4
group 0 counters with static assignments. Contexting them is a trivial
affair that doesn't need a loop. Similarly, there can only be up to 16
group 1 counters. Contexting them is a bit harder, but we can do with a
single branch with a falling through switch. If/when both of these
change, we have a pair of asserts and the feature detection mechanism to
guard us against pretending that we support something we don't.

We can drop contexting of the offset registers. They are fully
accessible by EL2 and as such are its responsibility to preserve on
powerdown.

Another small thing we can do, is pass the core_pos into the hook.
The caller already knows which core we're running on, we don't need to
call this non-trivial function again.

Finally, knowing this, we don't really need the auxiliary AMUs to be
described by the device tree. Linux doesn't care at the moment, and any
information we need for EL3 can be neatly placed in a simple array.

All of this, combined with lifting the actual saving out of assembly,
reduces the instructions to save the context from 180 to 40, including a
lot fewer branches. The code is also much shorter and easier to read.

Also propagate to aarch32 so that the two don't diverge too much.

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

show more ...

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 ...

a8a5d39d24-Feb-2025 Manish V Badarkhe <manish.badarkhe@arm.com>

Merge changes from topic "bk/errata_speed" into integration

* changes:
refactor(cpus): declare runtime errata correctly
perf(cpus): make reset errata do fewer branches
perf(cpus): inline the i

Merge changes from topic "bk/errata_speed" into integration

* changes:
refactor(cpus): declare runtime errata correctly
perf(cpus): make reset errata do fewer branches
perf(cpus): inline the init_cpu_data_ptr function
perf(cpus): inline the reset function
perf(cpus): inline the cpu_get_rev_var call
perf(cpus): inline cpu_rev_var checks
refactor(cpus): register DSU errata with the errata framework's wrappers
refactor(cpus): convert checker functions to standard helpers
refactor(cpus): convert the Cortex-A65 to use the errata framework
fix(cpus): declare reset errata correctly

show more ...


bl1/bl1.mk
bl2/bl2.mk
bl31/bl31.mk
docs/design/firmware-design.rst
include/arch/aarch64/asm_macros.S
include/arch/aarch64/el2_common_macros.S
include/arch/aarch64/el3_common_macros.S
include/lib/cpus/aarch32/cpu_macros.S
include/lib/cpus/aarch64/cpu_macros.S
include/lib/cpus/aarch64/dsu_def.h
include/lib/cpus/aarch64/dsu_macros.S
include/lib/cpus/cpu_ops.h
include/lib/cpus/errata.h
include/lib/el3_runtime/cpu_data.h
lib/cpus/aarch32/aem_generic.S
lib/cpus/aarch64/a64fx.S
lib/cpus/aarch64/aem_generic.S
lib/cpus/aarch64/cortex_a35.S
lib/cpus/aarch64/cortex_a510.S
lib/cpus/aarch64/cortex_a520.S
lib/cpus/aarch64/cortex_a53.S
lib/cpus/aarch64/cortex_a55.S
lib/cpus/aarch64/cortex_a57.S
lib/cpus/aarch64/cortex_a65.S
lib/cpus/aarch64/cortex_a65ae.S
lib/cpus/aarch64/cortex_a710.S
lib/cpus/aarch64/cortex_a715.S
lib/cpus/aarch64/cortex_a72.S
lib/cpus/aarch64/cortex_a720.S
lib/cpus/aarch64/cortex_a720_ae.S
lib/cpus/aarch64/cortex_a725.S
lib/cpus/aarch64/cortex_a73.S
lib/cpus/aarch64/cortex_a75.S
lib/cpus/aarch64/cortex_a76.S
lib/cpus/aarch64/cortex_a76ae.S
lib/cpus/aarch64/cortex_a77.S
lib/cpus/aarch64/cortex_a78.S
lib/cpus/aarch64/cortex_a78_ae.S
lib/cpus/aarch64/cortex_a78c.S
lib/cpus/aarch64/cortex_alto.S
lib/cpus/aarch64/cortex_arcadia.S
lib/cpus/aarch64/cortex_gelas.S
lib/cpus/aarch64/cortex_x1.S
lib/cpus/aarch64/cortex_x2.S
lib/cpus/aarch64/cortex_x3.S
lib/cpus/aarch64/cortex_x4.S
lib/cpus/aarch64/cortex_x925.S
lib/cpus/aarch64/cpu_helpers.S
lib/cpus/aarch64/denver.S
lib/cpus/aarch64/generic.S
lib/cpus/aarch64/neoverse_e1.S
lib/cpus/aarch64/neoverse_n1.S
lib/cpus/aarch64/neoverse_n2.S
lib/cpus/aarch64/neoverse_n3.S
lib/cpus/aarch64/neoverse_v1.S
lib/cpus/aarch64/neoverse_v2.S
lib/cpus/aarch64/neoverse_v3.S
lib/cpus/aarch64/nevis.S
lib/cpus/aarch64/qemu_max.S
lib/cpus/aarch64/rainier.S
lib/cpus/aarch64/travis.S
lib/el3_runtime/aarch64/cpu_data.S
plat/arm/board/arm_fpga/platform.mk
plat/arm/board/fvp/platform.mk
plat/qemu/common/common.mk
2382843024-Feb-2025 Yann Gautier <yann.gautier@st.com>

Merge "feat(intel): add FDT support for Altera products" into integration

29d1e29d10-Feb-2025 Jit Loon Lim <jit.loon.lim@altera.com>

feat(intel): add FDT support for Altera products

Support FDT for Agilex5 platform
1. Created wrapper file socfpga_dt.c
2. Added in Agilex5 dts file
3. Implemented fdt_check_header
4. Implemented gic

feat(intel): add FDT support for Altera products

Support FDT for Agilex5 platform
1. Created wrapper file socfpga_dt.c
2. Added in Agilex5 dts file
3. Implemented fdt_check_header
4. Implemented gic configuration
5. Implemented dram configuration

Remove init of FDT as Agilex5 has no plan to roll
out FDT at the moment.

Change-Id: If3990ed9524c6da5b3cb8966b63bc4a95d01fcda
Signed-off-by: Jit Loon Lim <jit.loon.lim@altera.com>

show more ...

0690c23724-Feb-2025 Soby Mathew <soby.mathew@arm.com>

Merge "fix(rmm): add support for BRBCR_EL2 register for feat_brbe" into integration

839739e221-Oct-2024 Boyan Karatotev <boyan.karatotev@arm.com>

docs(ras): document RAS considerations with powerdown

RAS errors can cause problems for powerdown. On cpus like the A510,
receiving a RAS error after executing the powerdown `wfi` will deadlock
the

docs(ras): document RAS considerations with powerdown

RAS errors can cause problems for powerdown. On cpus like the A510,
receiving a RAS error after executing the powerdown `wfi` will deadlock
the core. The TRM suggests disabling the generation of interrupts.
However, which interrupts to disable is not apparent for generic code as
the meaning of each error record is *heavily* IMPDEF, despite the
standard format. Iterating over the list and disabling all is not
desirable as this might disable errors for components that do not have
an effect on the core that is powering down.

As such, leave this for the platform port to handle. Leave a note in the
porting guide so this is not missed.

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

show more ...

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 ...

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

perf(cpus): inline the init_cpu_data_ptr function

Similar to the reset function inline, inline this too to not do a costly
branch with no extra cost.

Change-Id: I54cc399e570e9d0f373ae13c7224d32dbdf

perf(cpus): inline the init_cpu_data_ptr function

Similar to the reset function inline, inline this too to not do a costly
branch with no extra cost.

Change-Id: I54cc399e570e9d0f373ae13c7224d32dbdfae1e5
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 ...

dae7d72924-Feb-2025 Yann Gautier <yann.gautier@st.com>

Merge "feat(rockchip): increase FDT Buffer for Rockchip Devices" into integration

9020b9ac24-Feb-2025 Yann Gautier <yann.gautier@st.com>

Merge "feat(rockchip): update uart baudrate for rk3399" into integration

036935a807-Feb-2025 XiaoDong Huang <derrick.huang@rock-chips.com>

feat(rk3576): support rk3576

rk3576 is an Octa-core soc with Cortex-a53/a72 inside.
This patch supports the following functions:
1. basic platform setup
2. power up/off cpus
3. suspend/resume cpus
4

feat(rk3576): support rk3576

rk3576 is an Octa-core soc with Cortex-a53/a72 inside.
This patch supports the following functions:
1. basic platform setup
2. power up/off cpus
3. suspend/resume cpus
4. suspend/resume system
5. reset system
6. power off system

Change-Id: I67a019822bd4af13e4a3cdd09cf06202f4922cc4
Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com>

show more ...

02f0e6e421-Feb-2025 Olivier Deprez <olivier.deprez@arm.com>

Merge "fix(rme): map DEVICE0_BASE as EL3_PAS" into integration

1...<<919293949596979899100>>...744