From 6ce6acac911f11979a6cd2ee9cc9041f189c6ec7 Mon Sep 17 00:00:00 2001 From: Arvind Ram Prakash <arvind.ramprakash@arm.com> Date: Fri, 6 Sep 2024 12:18:51 -0500 Subject: [PATCH] fix(security): add CVE-2024-7881 mitigation to Cortex-X4 This patch mitigates CVE-2024-7881 [1] by setting CPUACTLR6_EL1[41] to 1 for Cortex-X4 CPU. [1]: https://developer.arm.com/Arm%20Security%20Center/Arm%20CPU%20Vulnerability%20CVE-2024-7881 Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I0bec96d4f71a08a89c6612e272ecfb173f80da20 --- include/lib/cpus/aarch64/cortex_x4.h | 7 ++++++- lib/cpus/aarch64/cortex_x4.S | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/lib/cpus/aarch64/cortex_x4.h b/include/lib/cpus/aarch64/cortex_x4.h index f701216b1..116f9a031 100644 --- a/include/lib/cpus/aarch64/cortex_x4.h +++ b/include/lib/cpus/aarch64/cortex_x4.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2024, Arm Limited. All rights reserved. + * Copyright (c) 2022-2025, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -36,6 +36,11 @@ #define CORTEX_X4_CPUACTLR5_EL1 S3_0_C15_C8_0 #define CORTEX_X4_CPUACTLR5_EL1_BIT_14 (ULL(1) << 14) +/******************************************************************************* + * CPU Auxiliary control register 6 specific definitions + ******************************************************************************/ +#define CORTEX_X4_CPUACTLR6_EL1 S3_0_C15_C8_1 + #ifndef __ASSEMBLER__ #if ERRATA_X4_2726228 long check_erratum_cortex_x4_2726228(long cpu_rev); diff --git a/lib/cpus/aarch64/cortex_x4.S b/lib/cpus/aarch64/cortex_x4.S index 81704daa8..e733f41de 100644 --- a/lib/cpus/aarch64/cortex_x4.S +++ b/lib/cpus/aarch64/cortex_x4.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2024, Arm Limited. All rights reserved. + * Copyright (c) 2022-2025, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -108,6 +108,17 @@ workaround_reset_end cortex_x4, CVE(2022, 23960) check_erratum_chosen cortex_x4, CVE(2022, 23960), WORKAROUND_CVE_2022_23960 +workaround_reset_start cortex_x4, CVE(2024, 7881), WORKAROUND_CVE_2024_7881 + /* --------------------------------- + * Sets BIT41 of CPUACTLR6_EL1 which + * disables L1 Data cache prefetcher + * --------------------------------- + */ + sysreg_bit_set CORTEX_X4_CPUACTLR6_EL1, BIT(41) +workaround_reset_end cortex_x4, CVE(2024, 7881) + +check_erratum_chosen cortex_x4, CVE(2024, 7881), WORKAROUND_CVE_2024_7881 + cpu_reset_func_start cortex_x4 /* Disable speculative loads */ msr SSBS, xzr