mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/S3: restore MCE (APs) init
MCE init for APs was broken when CPU feature re-checking was added. At the same time make sure we don't bypass setup_doitm() (and whatever else may be added to the bottom of identify_cpu()). Fixes:bb502a8ca5("x86: check feature flags after resume") Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com> master commit:5ebd4dd141master date: 2026-03-24 12:05:42 +0100
This commit is contained in:
1 parent
138abc1cc3
commit
0e0bcd9a02
1 file changed
+7
-3
@@ -613,16 +613,20 @@ void identify_cpu(struct cpuinfo_x86 *c)
|
||||
smp_processor_id());
|
||||
}
|
||||
|
||||
if (system_state == SYS_STATE_resume)
|
||||
return;
|
||||
if (system_state == SYS_STATE_resume) {
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
||||
/* The BSP has this done right from enter_state(). */
|
||||
if (cpu)
|
||||
mcheck_init(&cpu_data[cpu], false);
|
||||
}
|
||||
/*
|
||||
* On SMP, boot_cpu_data holds the common feature set between
|
||||
* all CPUs; so make sure that we indicate which features are
|
||||
* common between the CPUs. The first time this routine gets
|
||||
* executed, c == &boot_cpu_data.
|
||||
*/
|
||||
if ( c != &boot_cpu_data ) {
|
||||
else if (c != &boot_cpu_data) {
|
||||
/* AND the already accumulated flags with these */
|
||||
for ( i = 0 ; i < NCAPINTS ; i++ )
|
||||
boot_cpu_data.x86_capability[i] &= c->x86_capability[i];
|
||||
|
||||