From 4e3c9c2eca01e2437395296ee44d48b1341f52a6 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 29 Jan 2026 13:37:54 +0100 Subject: [PATCH] x86/CPU: extend is_forced_cpu_cap()'s "reach" "cpuid=no-rdrand" cannot actually be used to suppress the respective boot warning on certain AMD hardware. That's because cleared_caps[] are only applied after the ->c_init() hooks ran, i.e. cpu_has() still returns true in init_amd(). Fixes: 93401e28a84b ("x86: clear RDRAND CPUID bit on AMD family 15h/16h") Signed-off-by: Jan Beulich Acked-by: Andrew Cooper master commit: f09f2e28a9ec5e2a867f212177e4d4c458dc3d85 master date: 2026-01-22 09:10:10 +0100 --- xen/arch/x86/cpu/common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 8c8bf1a806..5869fff8f9 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -109,7 +109,7 @@ void __init setup_force_cpu_cap(unsigned int cap) bool __init is_forced_cpu_cap(unsigned int cap) { - return test_bit(cap, forced_caps); + return test_bit(cap, forced_caps) || test_bit(cap, cleared_caps); } static void cf_check default_init(struct cpuinfo_x86 * c)