From a586e3865acf5ac1a085ccaa0b3ad284f25179f6 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 22 Jul 2025 09:54:05 +0200 Subject: [PATCH] x86/S3: don't lose previously collected CPU data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit smp_store_cpu_info() doesn't call identify_cpu() again during S3 resume, hence it is wrong to overwrite APs' data using boot_cpu_data. With 7126b7f806d54 ("x86/CPU: re-work populating of cpu_data[]") this now results in a crash, as the cpu_to_socket() use in smp_store_cpu_info() then obtains a bad socket number, much like was already observed in [1]. [1] https://lists.xen.org/archives/html/xen-devel/2025-06/msg01879.html Fixes: bb502a8ca5925 ("x86: check feature flags after resume") Signed-off-by: Jan Beulich Acked-by: Roger Pau Monné master commit: acaa69d9859d3c4e3ee92fe4d48d292bda9568b9 master date: 2025-07-17 12:49:18 +0200 --- xen/arch/x86/smpboot.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index ab5947f1c1..10d57dfb82 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -366,7 +366,9 @@ void asmlinkage start_secondary(void *unused) cpu_init(); - initialize_cpu_data(cpu); + /* During resume, must not clear previously collected data. */ + if ( system_state != SYS_STATE_resume ) + initialize_cpu_data(cpu); microcode_update_one();