From 4201f837745e5d0e2cf4cc6663086ea8435a695d Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Fri, 17 Oct 2025 17:59:49 +0100 Subject: [PATCH] x86/ucode: Abort parallel load early on any control thread error EIO is not the only error that ucode_ops.apply_microcode() can produce. EINVAL, EEXISTS and ENXIO can be generated too, each of which mean that Xen is unhappy in some way with the proposed blob. Some of these can be bypassed with --force, which will cause the parallel load to be attempted. Fixes: 5ed12565aa32 ("microcode: rendezvous CPUs in NMI handler and load ucode") Signed-off-by: Andrew Cooper Acked-by: Jan Beulich Release-Acked-By: Oleksii Kurochko (cherry picked from commit e0bb712a28a93e5acd8b0ea5e7336a92d42bb740) [Note: --force doesn't exist in this version of Xen] --- xen/arch/x86/cpu/microcode/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c index ac28ef0c8c..51bb625ba8 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -501,10 +501,10 @@ static int control_thread_fn(const struct microcode_patch *patch) atomic_inc(&cpu_updated); atomic_inc(&cpu_out); - if ( ret == -EIO ) + if ( ret ) { printk(XENLOG_ERR - "Late loading aborted: CPU%u failed to update ucode\n", cpu); + "Late loading aborted: CPU%u failed to update ucode: %d\n", cpu, ret); goto out; }