From f0fcf6979f3f88a19b9aa9b11aa98feec7430256 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 c0cafb29a0..0e776264f3 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -503,10 +503,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; }