summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorJames Morse <james.morse@arm.com>2025-04-29 13:55:17 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-05-18 08:24:10 +0200
commit73591041a551cfe390861bf30067d3d2810b82ad (patch)
tree135f52b0c4bdb78f1839e8a058a28f33b0272eee /arch
parent854da0ed067165be7d1b5bd843b58c4ec897e9bd (diff)
downloadlinux-73591041a551cfe390861bf30067d3d2810b82ad.tar.gz
linux-73591041a551cfe390861bf30067d3d2810b82ad.tar.bz2
linux-73591041a551cfe390861bf30067d3d2810b82ad.zip
arm64: proton-pack: Expose whether the branchy loop k value
commit a1152be30a043d2d4dcb1683415f328bf3c51978 upstream. Add a helper to expose the k value of the branchy loop. This is needed by the BPF JIT to generate the mitigation sequence in BPF programs. Signed-off-by: James Morse <james.morse@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/include/asm/spectre.h1
-rw-r--r--arch/arm64/kernel/proton-pack.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/spectre.h b/arch/arm64/include/asm/spectre.h
index f3e0f98d3bd2..da1998bc112a 100644
--- a/arch/arm64/include/asm/spectre.h
+++ b/arch/arm64/include/asm/spectre.h
@@ -97,6 +97,7 @@ enum mitigation_state arm64_get_meltdown_state(void);
enum mitigation_state arm64_get_spectre_bhb_state(void);
bool is_spectre_bhb_affected(const struct arm64_cpu_capabilities *entry, int scope);
+u8 get_spectre_bhb_loop_value(void);
bool is_spectre_bhb_fw_mitigated(void);
void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
bool try_emulate_el1_ssbs(struct pt_regs *regs, u32 instr);
diff --git a/arch/arm64/kernel/proton-pack.c b/arch/arm64/kernel/proton-pack.c
index 7befcb545ac9..81c473540d0c 100644
--- a/arch/arm64/kernel/proton-pack.c
+++ b/arch/arm64/kernel/proton-pack.c
@@ -998,6 +998,11 @@ bool is_spectre_bhb_affected(const struct arm64_cpu_capabilities *entry,
return true;
}
+u8 get_spectre_bhb_loop_value(void)
+{
+ return max_bhb_k;
+}
+
static void this_cpu_set_vectors(enum arm64_bp_harden_el1_vectors slot)
{
const char *v = arm64_get_bp_hardening_vector(slot);