| #
553b70c3 |
| 19-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "ar/asymmetricSupport" into integration
* changes: feat(tc): enable trbe errata flags for Cortex-A520 and X4 feat(cm): asymmetric feature support for trbe refactor(err
Merge changes from topic "ar/asymmetricSupport" into integration
* changes: feat(tc): enable trbe errata flags for Cortex-A520 and X4 feat(cm): asymmetric feature support for trbe refactor(errata-abi): move EXTRACT_PARTNUM to arch.h feat(cpus): workaround for Cortex-A520(2938996) and Cortex-X4(2726228) feat(tc): make SPE feature asymmetric feat(cm): handle asymmetry for SPE feature feat(cm): support for asymmetric feature among cores feat(cpufeat): add new feature state for asymmetric features
show more ...
|
| #
4a97ff51 |
| 05-Aug-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(cpus): workaround for Cortex-A520(2938996) and Cortex-X4(2726228)
This patch implements errata functions for two errata, both of them disable TRBE as a workaround. This patch doesn't have funct
feat(cpus): workaround for Cortex-A520(2938996) and Cortex-X4(2726228)
This patch implements errata functions for two errata, both of them disable TRBE as a workaround. This patch doesn't have functions that disable TRBE but only implemented helper functions that are used to detect cores affected by Errata 2938996(Cortex-A520) & 2726228(Cortex-X4)
Cortex-X4 SDEN documentation: https://developer.arm.com/documentation/SDEN2432808/latest
Cortex-A520 SDEN Documentation: https://developer.arm.com/documentation/SDEN-2444153/latest
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I8f886a1c21698f546a0996c719cc27dc0a23633a
show more ...
|
| #
1c20f05c |
| 10-May-2024 |
Ryan Everett <ryan.everett@arm.com> |
refactor(cpus): directly invoke errata reporter
In all non-trivial cases the CPU specific errata functions already call generic_errata_report, this cuts out the middleman by directly calling generic
refactor(cpus): directly invoke errata reporter
In all non-trivial cases the CPU specific errata functions already call generic_errata_report, this cuts out the middleman by directly calling generic_errata_report from print_errata_status.
The CPU specific errata functions (cpu_ops->errata_func) can now be removed from all cores, and this field can be removed from cpu_ops.
Also removes the now unused old errata reporting function and macros.
Change-Id: Ie4a4fd60429aca37cf434e79c0ce2992a5ff5d68 Signed-off-by: Ryan Everett <ryan.everett@arm.com>
show more ...
|
| #
995eaa63 |
| 08-Aug-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "hm/errata-a710" into integration
* changes: refactor(cpus): convert the Cortex-A710 to use cpu helpers refactor(cpus): convert Cortex-A710 to use the errata framework
Merge changes from topic "hm/errata-a710" into integration
* changes: refactor(cpus): convert the Cortex-A710 to use cpu helpers refactor(cpus): convert Cortex-A710 to use the errata framework refactor(cpus): reorder Cortex-A710 errata by ascending order feat(cpus): make revision procedure call optional
show more ...
|
| #
4d22b0e5 |
| 26-Jun-2023 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(cpus): make revision procedure call optional
For runtime errata, we should avoid generating calls to `cpu_get_rev_var` unless its necessary. Make the path that generates this call parameterized
feat(cpus): make revision procedure call optional
For runtime errata, we should avoid generating calls to `cpu_get_rev_var` unless its necessary. Make the path that generates this call parameterized, and cache the result in a temporary register to allow future calls that go down the alternate path to retrieve the cache CPU revision.
Change-Id: I9882ede76568fbd9a7ccd4caa74eff0c66a7b20e Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| #
d2e07436 |
| 15-Jun-2023 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge changes from topic "bk/errata_refactor" into integration
* changes: feat(cpus): add more errata framework helpers docs: document the errata framework
|
| #
94a75ad4 |
| 04-Apr-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpus): add more errata framework helpers
Figuring out the naming format of errata is annoying, so add a shorthand for the custom checker functions. Also add some more semantic macros instead of
feat(cpus): add more errata framework helpers
Figuring out the naming format of errata is annoying, so add a shorthand for the custom checker functions. Also add some more semantic macros instead of passing around constants.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: Ibdcf72146738026df4ebd047bfb30790fd4a1053
show more ...
|
| #
0cfa06b2 |
| 31-May-2023 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge changes from topic "bk/errata_refactor" into integration
* changes: feat(cpus): wrappers to propagate AArch32 errata info feat(cpus): add a way to automatically report errata feat(cpus):
Merge changes from topic "bk/errata_refactor" into integration
* changes: feat(cpus): wrappers to propagate AArch32 errata info feat(cpus): add a way to automatically report errata feat(cpus): add a concise way to implement AArch64 errata refactor(cpus): convert print_errata_status to C refactor(cpus): rename errata_report.h to errata.h refactor(cpus): move cpu_ops field defines to a header
show more ...
|
| #
4f748cc4 |
| 27-Jan-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpus): add a way to automatically report errata
Using the errata framework per-cpu data structure, errata can all be reported automatically through a single standard errata reporter which can r
feat(cpus): add a way to automatically report errata
Using the errata framework per-cpu data structure, errata can all be reported automatically through a single standard errata reporter which can replace the cpu-specific ones.
This reporter can also enforce the ordering requirement of errata.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I7d2d5ac5bcb9d21aed0d560d7d23919a323ffdab
show more ...
|
| #
3f4c1e1e |
| 27-Jan-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpus): add a concise way to implement AArch64 errata
Errata implementation involves adding a lot of boilerplate to random places with just conventions on how to do them. Copy pasting is the usu
feat(cpus): add a concise way to implement AArch64 errata
Errata implementation involves adding a lot of boilerplate to random places with just conventions on how to do them. Copy pasting is the usual method for doing this. The result is an error-prone and verbose patch that is a nightmare to get through review.
Errata workarounds have a very large degree of similarity - most of them involve setting a bit at reset. As such most of the boilerplate is not strictly necessary. To solve this, add a collection of assembly macros to wrap errata implementations such that only the actual mitigations need to be written. A new erratum mitigation looks something like:
workaround_reset_start cortex_a77, ERRATUM(1925769), ERRATA_A77_1925769 sysreg_bit_set CORTEX_A77_CPUECTLR_EL1, CORTEX_A77_CPUECTLR_EL1_BIT_8 workaround_reset_end cortex_a77, ERRATUM(1925769)
check_erratum_ls cortex_a77, ERRATUM(1925769), CPU_REV(1, 1)
Note, that the long comment on every mitigation is missing. This is on purpose, as this new format includes all of its contents into an easily readable format.
The workaround wrappers add an erratum entry (24 bytes) to a per-cpu data structure which can then be read by a standard reset function to apply all errata automatically. This has the added benefit of collecting all errata TF-A knows about in a central way, which was previously missing. This can then be used at runtime with the errata ABI.
If an erratum doesn't fit this standard definition (eg. the CVE_2022_23960), it can progressively be unwrapped to the old convention. The only differences are that the naming format is slightly more verbose and a call to add_erratum_entry is needed to inform the framework about the errata.
Finally, the internal workaround names change a tiny bit, especially CVEs.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: Iac644f85dcf85b8279b25e83baf1e7d08b253b16
show more ...
|
| #
dd9fae1c |
| 25-Jan-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): convert print_errata_status to C
The function is called in a fully initialised C environment and calls into other C functions. The Aarch differences are minimal and are hidden by the
refactor(cpus): convert print_errata_status to C
The function is called in a fully initialised C environment and calls into other C functions. The Aarch differences are minimal and are hidden by the pre-existing headers. Converting it results into cleaner code that is the same across both Aarch64 and Aarch32.
To avoid having to do very ugly pointer arithmetic, define a C struct for the cpu_ops for both Aarch64 and Aarch32.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: Idc07c4064e03143c88a4a0e2d10ceda70ba19a50
show more ...
|
| #
6bb96fa6 |
| 27-Jan-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): rename errata_report.h to errata.h
The ERRATA_XXX macros, used in cpu_helpers.S, are necessary for the check_errata_xxx family of functions. The CPU_REV should be used in the cpu fil
refactor(cpus): rename errata_report.h to errata.h
The ERRATA_XXX macros, used in cpu_helpers.S, are necessary for the check_errata_xxx family of functions. The CPU_REV should be used in the cpu files but for whatever reason the values have been hard-coded so far (at the cost of readability). It's evident this file is not strictly for status reporting.
The new purpose of this file is to make it a one-stop-shop for all things errata.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I1ce22dd36df5aa0bcfc5f2772251f91af8703dfb
show more ...
|