[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging-4.21] x86/S3: restore MCE (APs) init



commit 1ea9c24d0f2caa1d171b1c77cfa534be7848b97e
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Thu Mar 26 11:08:57 2026 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Mar 26 11:08:57 2026 +0100

    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: bb502a8ca592 ("x86: check feature flags after resume")
    Reported-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Tested-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
    Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    master commit: 5ebd4dd14118e4eb24f1d409a7ca3773f77e7e41
    master date: 2026-03-24 12:05:42 +0100
---
 xen/arch/x86/cpu/common.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 92c709ea69..574fd0be20 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -659,16 +659,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];
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.21



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.