| #
a6e01071 |
| 24-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "ar/cve_wa_refactor" into integration
* changes: refactor(cpus): optimize CVE checking refactor(cpus): move errata check to common code refactor(cpus): drop unused arg
Merge changes from topic "ar/cve_wa_refactor" into integration
* changes: refactor(cpus): optimize CVE checking refactor(cpus): move errata check to common code refactor(cpus): drop unused argument forward_flag
show more ...
|
| #
fd04156e |
| 04-Apr-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
refactor(cpus): optimize CVE checking
This patch replaces the use of EXTRA functions with using erratum entries check to verify CVE mitigation application for some of the SMCCC_ARCH_WORKAROUND_* cal
refactor(cpus): optimize CVE checking
This patch replaces the use of EXTRA functions with using erratum entries check to verify CVE mitigation application for some of the SMCCC_ARCH_WORKAROUND_* calls.
Previously, EXTRA functions were individually implemented for each SMCCC_ARCH_WORKAROUND_*, an approach that becomes unmanageable with the increasing number of workarounds. By looking up erratum entries for CVE check, the process is streamlined, reducing overhead associated with creating and maintaining EXTRA functions for each new workaround.
New Errata entries are created for SMC workarounds and that is used to target cpus that are uniquely impacted by SMC workarounds.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I873534e367a35c99461d0a616ff7bf856a0000af
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 ...
|
| #
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 ...
|
| #
87e3d4f1 |
| 04-Aug-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "sm_bk/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A78AE to use cpu helpers refactor(cpus): convert the Denver cpu to use the errata
Merge changes from topic "sm_bk/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A78AE to use cpu helpers refactor(cpus): convert the Denver cpu to use the errata framework refactor(cpus): convert the Cortex-A78AE to use the errata framework refactor(cpus): convert the Cortex-A5 to use the errata framework refactor(cpus): convert the Cortex-A77 to use the bit set helpers refactor(cpus): convert the Cortex-A77 to use the errata framework refactor(cpus): reorder Cortex-A77 errata by ascending order
show more ...
|
| #
15702f28 |
| 05-Apr-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): convert the Denver cpu to use the errata framework
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I8f804b237a6a566f1c5d0ca1ab62ea76350fc2a2
|
| #
b9e2c773 |
| 25-May-2022 |
Varun Wadekar <vwadekar@nvidia.com> |
Merge "fix(cpus/denver): use CPU_NO_EXTRA3_FUNC for all variants" into integration
|
| #
b2ed9989 |
| 24-May-2022 |
Varun Wadekar <vwadekar@nvidia.com> |
fix(cpus/denver): use CPU_NO_EXTRA3_FUNC for all variants
Denver CPUs use the same workaround for CVE-2017-5715 and CVE-2022-23960 vulnerabilities. The workaround for CVE-2017-5715 is always enabled
fix(cpus/denver): use CPU_NO_EXTRA3_FUNC for all variants
Denver CPUs use the same workaround for CVE-2017-5715 and CVE-2022-23960 vulnerabilities. The workaround for CVE-2017-5715 is always enabled, so all Denver variants use CPU_NO_EXTRA3_FUNC as a placeholder for the mitigation for CVE-2022-23960. This patch implements the approach.
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: I0863541ce19b6b3b6d1b2f901d3fb6a77f315189
show more ...
|
| #
9b2bf150 |
| 01-Sep-2020 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge changes from topic "tegra-downstream-08282020" into integration
* changes: Tegra: common: disable GICC after domain off cpus: denver: skip DCO enable/disable for recent SKUs
|
| #
d35403fe |
| 31-Aug-2020 |
Varun Wadekar <vwadekar@nvidia.com> |
Merge changes from topic "tegra-downstream-08282020" into integration
* changes: Tegra: platform specific BL31_SIZE Tegra186: sanity check power state type Tegra: fixup CNTPS_TVAL_EL1 delay ti
Merge changes from topic "tegra-downstream-08282020" into integration
* changes: Tegra: platform specific BL31_SIZE Tegra186: sanity check power state type Tegra: fixup CNTPS_TVAL_EL1 delay timer reads Tegra: add platform specific 'runtime_setup' handler Tegra: remove ENABLE_SVE_FOR_NS = 0 lib: cpus: denver: add MIDR PN9 variant cpus: denver: introduce macro to declare cpu_ops
show more ...
|
| #
5f902752 |
| 06-Aug-2020 |
Varun Wadekar <vwadekar@nvidia.com> |
cpus: denver: skip DCO enable/disable for recent SKUs
DCO is not supported by the SKUs released after MIDR_PN4. This patch skips enabling or disabling the DCO on these SKUs.
Change-Id: Ic31a829de3a
cpus: denver: skip DCO enable/disable for recent SKUs
DCO is not supported by the SKUs released after MIDR_PN4. This patch skips enabling or disabling the DCO on these SKUs.
Change-Id: Ic31a829de3ae560314d0fb5c5e867689d4ba243b Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
show more ...
|
| #
c6d25c00 |
| 17-Dec-2019 |
Hemant Nigam <hnigam@nvidia.com> |
lib: cpus: denver: add MIDR PN9 variant
This patch introduces support for PN9 variant for some Denver based platforms.
Original change by: Hemant Nigam <hnigam@nvidia.com>
Signed-off-by: Kalyani C
lib: cpus: denver: add MIDR PN9 variant
This patch introduces support for PN9 variant for some Denver based platforms.
Original change by: Hemant Nigam <hnigam@nvidia.com>
Signed-off-by: Kalyani Chidambaram Vaidyanathan <kalyanic@nvidia.com> Change-Id: I331cd3a083721fd1cd1b03f4a11b32fd306a21f3
show more ...
|
| #
9b624a7d |
| 28-Aug-2020 |
Varun Wadekar <vwadekar@nvidia.com> |
cpus: denver: introduce macro to declare cpu_ops
This patch introduces a macro to declare cpu_op for all Denver SKUs.
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: Ibcf88c3256fc5dca
cpus: denver: introduce macro to declare cpu_ops
This patch introduces a macro to declare cpu_op for all Denver SKUs.
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: Ibcf88c3256fc5dcaa1be855749ebd2c5c396c977
show more ...
|
| #
a409179e |
| 14-Aug-2020 |
Varun Wadekar <vwadekar@nvidia.com> |
Merge "lib: cpus: denver: add some MIDR values" into integration
|
| #
a6cccccd |
| 13-Aug-2020 |
Mark Dykes <mardyk01@review.trustedfirmware.org> |
Merge "lib: cpus: denver: mark exception vectors as private" into integration
|
| #
a4a9547c |
| 23-Jul-2019 |
Alex Van Brunt <avanbrunt@nvidia.com> |
lib: cpus: denver: add some MIDR values
This patch adds support for additional Denver MIDRs to cover all the current SKUs.
Change-Id: I85d0ffe9b3cb351f430ca7d7065a2609968a7a28 Signed-off-by: Alex V
lib: cpus: denver: add some MIDR values
This patch adds support for additional Denver MIDRs to cover all the current SKUs.
Change-Id: I85d0ffe9b3cb351f430ca7d7065a2609968a7a28 Signed-off-by: Alex Van Brunt <avanbrunt@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
show more ...
|
| #
5112e603 |
| 13-Jun-2019 |
Varun Wadekar <vwadekar@nvidia.com> |
lib: cpus: denver: mark exception vectors as private
This patch removes the 'workaround_bpflush_runtime_exceptions' exception vector table base address from the globals list as it gets used only by
lib: cpus: denver: mark exception vectors as private
This patch removes the 'workaround_bpflush_runtime_exceptions' exception vector table base address from the globals list as it gets used only by the Denver CPU implementation.
Change-Id: I6ef94989f6dc4535d464493cc8621d32795ee1f6 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
show more ...
|
| #
e5f3812e |
| 09-Jun-2020 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "cpus: denver: disable cycle counter when event counting is prohibited" into integration
|
| #
c5c1af0d |
| 24-May-2020 |
Varun Wadekar <vwadekar@nvidia.com> |
cpus: denver: disable cycle counter when event counting is prohibited
The Denver CPUs implement support for PMUv3 for ARMv8.1 and expect the PMCR_EL0 to be saved in non-secure context.
This patch d
cpus: denver: disable cycle counter when event counting is prohibited
The Denver CPUs implement support for PMUv3 for ARMv8.1 and expect the PMCR_EL0 to be saved in non-secure context.
This patch disables cycle counter when event counting is prohibited immediately on entering the secure world to avoid leaking useful information about the PMU counters. The context saving code later saves the value of PMCR_EL0 to the non-secure world context.
Verified with 'PMU Leakage' test suite.
******************************* Summary ******************************* > Test suite 'PMU Leakage' Passed ================================= Tests Skipped : 2 Tests Passed : 2 Tests Failed : 0 Tests Crashed : 0 Total tests : 4 =================================
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: I3675e2b99b44ed23d86e29a5af1b496e80324875
show more ...
|
| #
65012c08 |
| 10-Mar-2020 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "tegra-downstream-02182020" into integration
* changes: Tegra186: store TZDRAM base/size to scratch registers Tegra186: add SE support to generate SHA256 of TZRAM Tegr
Merge changes from topic "tegra-downstream-02182020" into integration
* changes: Tegra186: store TZDRAM base/size to scratch registers Tegra186: add SE support to generate SHA256 of TZRAM Tegra186: add support for bpmp_ipc driver Tegra210: disable ERRATA_A57_829520 Tegra194: memctrl: add support for MIU4 and MIU5 Tegra194: memctrl: remove support to reconfigure MSS Tegra: fiq_glue: remove bakery locks from interrupt handler Tegra210: SE: add context save support Tegra210: update the PMC blacklisted registers Tegra: disable CPUACTLR access from lower exception levels cpus: denver: fixup register used to store return address
show more ...
|
| #
e6c0da15 |
| 09-Oct-2018 |
Kalyani Chidambaram <kalyanic@nvidia.com> |
cpus: denver: fixup register used to store return address
The denver_enable_dco and denver_disable_dco use register X3 to store the return address. But X3 gets over-written by other functions, downs
cpus: denver: fixup register used to store return address
The denver_enable_dco and denver_disable_dco use register X3 to store the return address. But X3 gets over-written by other functions, downstream.
This patch stores the return address to X18 instead, to fix this anomaly.
Change-Id: Ic40bfc1d9abaa7b90348843b9ecd09521bb4ee7b Signed-off-by: Kalyani Chidambaram <kalyanic@nvidia.com>
show more ...
|
| #
e8e07172 |
| 05-Sep-2018 |
Dimitris Papastamos <dimitris.papastamos@arm.com> |
Merge pull request #1560 from vwadekar/denver-fixes-918
Recent Denver CPU fixes from downstream
|
| #
6cf8d65f |
| 28-Aug-2018 |
Varun Wadekar <vwadekar@nvidia.com> |
cpus: denver: Implement static workaround for CVE-2018-3639
For Denver CPUs, this approach enables the mitigation during EL3 initialization, following every PE reset. No mechanism is provided to dis
cpus: denver: Implement static workaround for CVE-2018-3639
For Denver CPUs, this approach enables the mitigation during EL3 initialization, following every PE reset. No mechanism is provided to disable the mitigation at runtime.
This approach permanently mitigates the EL3 software stack only. Other software components are responsible to enable it for their exception levels.
TF-A implements this approach for the Denver CPUs with DENVER_MIDR_PN3 and earlier:
* By setting bit 11 (Disable speculative store buffering) of `ACTLR_EL3`
* By setting bit 9 (Disable speculative memory disambiguation) of `ACTLR_EL3`
TF-A implements this approach for the Denver CPUs with DENVER_MIDR_PN4 and later:
* By setting bit 18 (Disable speculative store buffering) of `ACTLR_EL3`
* By setting bit 17 (Disable speculative memory disambiguation) of `ACTLR_EL3`
Change-Id: If1de96605ce3f7b0aff5fab2c828e5aecb687555 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
show more ...
|