| #
01ec41a0 |
| 16-Apr-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "chore(cpus): remove in-order checks" into integration
|
| #
106ca0cb |
| 10-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
chore(cpus): remove in-order checks
Remove runtime in-order checks for Erratum and CVE's. Fix out-of-order issues in CPU files found with CPU Erratum and CVE static checker script run on entire fold
chore(cpus): remove in-order checks
Remove runtime in-order checks for Erratum and CVE's. Fix out-of-order issues in CPU files found with CPU Erratum and CVE static checker script run on entire folder `lib/cpus/aarch64/`.
Change-Id: Iee5a8cb49834e9f35c6c2f2a84065430ca1ec8a6 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
a8a5d39d |
| 24-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 ...
|
| #
89dba82d |
| 22-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 ...
|
| #
7791ce21 |
| 21-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 ...
|
| #
b62673c6 |
| 23-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 ...
|
| #
cc4f3838 |
| 27-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "clean-up-errata-compatibility" into integration
* changes: refactor(cpus): remove cpu specific errata funcs refactor(cpus): directly invoke errata reporter
|
| #
3fb52e41 |
| 14-May-2024 |
Ryan Everett <ryan.everett@arm.com> |
refactor(cpus): remove cpu specific errata funcs
Errata printing is done directly via generic_errata_report. This commit removes the unused \_cpu\()_errata_report functions for all cores, and remove
refactor(cpus): remove cpu specific errata funcs
Errata printing is done directly via generic_errata_report. This commit removes the unused \_cpu\()_errata_report functions for all cores, and removes errata_func from cpu_ops.
Change-Id: I04fefbde5f0ff63b1f1cd17c864557a14070d68c Signed-off-by: Ryan Everett <ryan.everett@arm.com>
show more ...
|
| #
fc22bcf8 |
| 03-Aug-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "gr/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A55 to use cpu helpers refactor(cpus): convert the Cortex-A55 to use the errata frame
Merge changes from topic "gr/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A55 to use cpu helpers refactor(cpus): convert the Cortex-A55 to use the errata framework refactor(cpus): convert the Cortex-A76AE to use cpu helpers refactor(cpus): convert the Cortex-A76AE to use the errata framework refactor(cpus): convert the Cortex-A78 to use cpu helpers refactor(cpus): convert the Cortex-A78 to use the errata framework refactor(cpus): reorder Cortex-A78 errata by ascending order refactor(cpus): convert the Cortex-A78C to use cpu helpers refactor(cpus): convert the Cortex-A78C to use the errata framework refactor(cpus): reorder Cortex-A78C errata by ascending order refactor(cpus): convert the Cortex-X1 to use cpu helpers refactor(cpus): convert the Cortex-X1 to use the errata framework refactor(cpus): reorder Cortex-X1 errata by ascending order refactor(cpus): use cpu errata wrappers Cortex-A12 aarch32 cpu refactor(cpus): use cpu errata wrappers Cortex-A7 and A9 aarch32 cpus
show more ...
|
| #
b6120c69 |
| 15-Jun-2023 |
Govindraj Raja <govindraj.raja@arm.com> |
refactor(cpus): convert the Cortex-A55 to use cpu helpers
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com> Change-Id: I45835b223f4734279845610529454fe0148ea43f
|
| #
1de3c3a9 |
| 15-Jun-2023 |
Govindraj Raja <govindraj.raja@arm.com> |
refactor(cpus): convert the Cortex-A55 to use the errata framework
Testing: - Manual comparison of disassembly with and without conversion. - Using the test script in gerrit - 19136 - Build
refactor(cpus): convert the Cortex-A55 to use the errata framework
Testing: - Manual comparison of disassembly with and without conversion. - Using the test script in gerrit - 19136 - Building with errata and stepping through from ArmDS and running tftf.
Change-Id: I2ff16be8bb568e37477edbbd7551877cbbde4c60 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
17e76b5e |
| 02-Aug-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "feat(plat/qti): fix to support cpu errata" into integration
|
| #
6cc743cf |
| 04-Apr-2022 |
Saurabh Gorecha <quic_sgorecha@quicinc.com> |
feat(plat/qti): fix to support cpu errata
fix to support ARM CPU errata based on core used.
Signed-off-by: Saurabh Gorecha <quic_sgorecha@quicinc.com> Change-Id: If1a438f98f743435a7a0b683a32ccf1416
feat(plat/qti): fix to support cpu errata
fix to support ARM CPU errata based on core used.
Signed-off-by: Saurabh Gorecha <quic_sgorecha@quicinc.com> Change-Id: If1a438f98f743435a7a0b683a32ccf14164db37e
show more ...
|
| #
76380111 |
| 20-Aug-2020 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "at_errata_fix" into integration
* changes: doc: Update description for AT speculative workaround lib/cpus: Report AT speculative erratum workaround Add wrapper for AT
Merge changes from topic "at_errata_fix" into integration
* changes: doc: Update description for AT speculative workaround lib/cpus: Report AT speculative erratum workaround Add wrapper for AT instruction
show more ...
|
| #
e1c49333 |
| 03-Aug-2020 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
lib/cpus: Report AT speculative erratum workaround
Reported the status (applies, missing) of AT speculative workaround which is applicable for below CPUs.
+---------+--------------+ | Errata |
lib/cpus: Report AT speculative erratum workaround
Reported the status (applies, missing) of AT speculative workaround which is applicable for below CPUs.
+---------+--------------+ | Errata | CPU | +=========+==============+ | 1165522 | Cortex-A76 | +---------+--------------+ | 1319367 | Cortex-A72 | +---------+--------------+ | 1319537 | Cortex-A57 | +---------+--------------+ | 1530923 | Cortex-A55 | +---------+--------------+ | 1530924 | Cortex-A53 | +---------+--------------+
Also, changes are done to enable common macro 'ERRATA_SPECULATIVE_AT' if AT speculative errata workaround is enabled for any of the above CPUs using 'ERRATA_*' CPU specific build macro.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I3e6a5316a2564071f3920c3ce9ae9a29adbe435b
show more ...
|
| #
84167417 |
| 29-May-2019 |
Paul Beesley <paul.beesley@arm.com> |
Merge "Cortex-A55: workarounds for errata 1221012" into integration
|
| #
9af07df0 |
| 28-May-2019 |
Ambroise Vincent <ambroise.vincent@arm.com> |
Cortex-A55: workarounds for errata 1221012
The workaround is added to the Cortex-A55 cpu specific file. The workaround is disabled by default and have to be explicitly enabled by the platform integr
Cortex-A55: workarounds for errata 1221012
The workaround is added to the Cortex-A55 cpu specific file. The workaround is disabled by default and have to be explicitly enabled by the platform integrator.
Change-Id: I3e6fd10df6444122a8ee7d08058946ff1cc912f8 Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
show more ...
|
| #
854ca7da |
| 03-May-2019 |
Soby Mathew <soby.mathew@arm.com> |
Merge "Add compile-time errors for HW_ASSISTED_COHERENCY flag" into integration
|
| #
076b5f02 |
| 19-Mar-2019 |
John Tsichritzis <john.tsichritzis@arm.com> |
Add compile-time errors for HW_ASSISTED_COHERENCY flag
This patch fixes this issue: https://github.com/ARM-software/tf-issues/issues/660
The introduced changes are the following:
1) Some cores imp
Add compile-time errors for HW_ASSISTED_COHERENCY flag
This patch fixes this issue: https://github.com/ARM-software/tf-issues/issues/660
The introduced changes are the following:
1) Some cores implement cache coherency maintenance operation on the hardware level. For those cores, such as - but not only - the DynamIQ cores, it is mandatory that TF-A is compiled with the HW_ASSISTED_COHERENCY flag. If not, the core behaviour at runtime is unpredictable. To prevent this, compile time checks have been added and compilation errors are generated, if needed.
2) To enable this change for FVP, a logical separation has been done for the core libraries. A system cannot contain cores of both groups, i.e. cores that manage coherency on hardware and cores that don't do it. As such, depending on the HW_ASSISTED_COHERENCY flag, FVP includes the libraries only of the relevant cores.
3) The neoverse_e1.S file has been added to the FVP sources.
Change-Id: I787d15819b2add4ec0d238249e04bf0497dc12f3 Signed-off-by: John Tsichritzis <john.tsichritzis@arm.com>
show more ...
|
| #
0e985d70 |
| 09-Apr-2019 |
Louis Mayencourt <louis.mayencourt@arm.com> |
DSU: Implement workaround for errata 798953
Under certain near idle conditions, DSU may miss response transfers on the ACE master or Peripheral port, leading to deadlock. This workaround disables hi
DSU: Implement workaround for errata 798953
Under certain near idle conditions, DSU may miss response transfers on the ACE master or Peripheral port, leading to deadlock. This workaround disables high-level clock gating of the DSU to prevent this.
Change-Id: I820911d61570bacb38dd325b3519bc8d12caa14b Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
show more ...
|
| #
4476838a |
| 01-Mar-2019 |
Antonio Niño Díaz <antonio.ninodiaz@arm.com> |
Merge pull request #1845 from ambroise-arm/av/errata
Apply workarounds for errata of Cortex-A53, A55 and A57
|
| #
47949f3f |
| 21-Feb-2019 |
Ambroise Vincent <ambroise.vincent@arm.com> |
Cortex-A55: Implement workaround for erratum 903758
Change-Id: I07e69061ba7a918cdfaaa83fa3a42dee910887d7 Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
|
| #
6e78973e |
| 21-Feb-2019 |
Ambroise Vincent <ambroise.vincent@arm.com> |
Cortex-A55: Implement workaround for erratum 846532
Change-Id: Iacb6331c1f6b27340e71279f92f147ebbc71862f Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
|
| #
6ab87d29 |
| 21-Feb-2019 |
Ambroise Vincent <ambroise.vincent@arm.com> |
Cortex-A55: Implement workaround for erratum 798797
Change-Id: Ic42b37b8500d5e592af2b9fe130f35a0e2db4d14 Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
|
| #
a6cc6610 |
| 21-Feb-2019 |
Ambroise Vincent <ambroise.vincent@arm.com> |
Cortex-A55: Implement workaround for erratum 778703
Change-Id: I094e5cb2c44618e7a4116af5fbb6b18078a79951 Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
|