[PATCH] x86/split_lock: Zap the unwieldy switch-case in sld_state_show()

From: Borislav Petkov (AMD)
Date: Sun Jan 04 2026 - 08:40:23 EST


Handle the easy cases first and leave the meat of the code at the end,
after having removed all possible gunk which makes it even more
unreadable than it is.

Have the CPU-going-offline check for both fatal and warning settings
because there's no point to have it only in the sld_warn case.

There should be no functional changes resulting from this cleanup.

Signed-off-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>
---
arch/x86/kernel/cpu/bus_lock.c | 39 ++++++++++++++++------------------
1 file changed, 18 insertions(+), 21 deletions(-)

diff --git a/arch/x86/kernel/cpu/bus_lock.c b/arch/x86/kernel/cpu/bus_lock.c
index fb166662bc0d..811f87906c1e 100644
--- a/arch/x86/kernel/cpu/bus_lock.c
+++ b/arch/x86/kernel/cpu/bus_lock.c
@@ -391,34 +391,31 @@ static void __init split_lock_setup(struct cpuinfo_x86 *c)

static void sld_state_show(void)
{
+ const char *action = "warning";
+
if (!boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT) &&
!boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT))
return;

- switch (sld_state) {
- case sld_off:
+ if (sld_state == sld_off) {
pr_info("disabled\n");
- break;
- case sld_warn:
- if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) {
- pr_info("#AC: crashing the kernel on kernel split_locks and warning on user-space split_locks\n");
- if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
- "x86/splitlock", NULL, splitlock_cpu_offline) < 0)
- pr_warn("No splitlock CPU offline handler\n");
- } else if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT)) {
- pr_info("#DB: warning on user-space bus_locks\n");
- }
- break;
- case sld_fatal:
- if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT))
- pr_info("#AC: crashing the kernel on kernel split_locks and sending SIGBUS on user-space split_locks\n");
- else if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT))
- pr_info("#DB: sending SIGBUS on user-space bus_locks\n");
- break;
- case sld_ratelimit:
+ return;
+ } else if (sld_state == sld_ratelimit) {
if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT))
pr_info("#DB: setting system wide bus lock rate limit to %u/sec\n", bld_ratelimit.burst);
- break;
+ return;
+ }
+
+ if (sld_state == sld_fatal)
+ action = "sending SIGBUS";
+
+ if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) {
+ pr_info("#AC: crashing the kernel on kernel split_locks and %s on user-space split_locks\n", action);
+ if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
+ "x86/splitlock", NULL, splitlock_cpu_offline) < 0)
+ pr_warn("No splitlock CPU offline handler\n");
+ } else if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT)) {
+ pr_info("#DB: %s on user-space bus_locks\n", action);
}
}

--
2.51.0

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette