diff options
Diffstat (limited to 'debian/patches/bugfix/x86/gds/x86-xen-fix-secondary-processors-fpu-initialization.patch')
-rw-r--r-- | debian/patches/bugfix/x86/gds/x86-xen-fix-secondary-processors-fpu-initialization.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/debian/patches/bugfix/x86/gds/x86-xen-fix-secondary-processors-fpu-initialization.patch b/debian/patches/bugfix/x86/gds/x86-xen-fix-secondary-processors-fpu-initialization.patch new file mode 100644 index 000000000..658710bb5 --- /dev/null +++ b/debian/patches/bugfix/x86/gds/x86-xen-fix-secondary-processors-fpu-initialization.patch @@ -0,0 +1,44 @@ +From fe3e0a13e597c1c8617814bf9b42ab732db5c26e Mon Sep 17 00:00:00 2001 +From: Juergen Gross <jgross@suse.com> +Date: Mon, 3 Jul 2023 15:00:32 +0200 +Subject: x86/xen: Fix secondary processors' FPU initialization + +From: Juergen Gross <jgross@suse.com> + +commit fe3e0a13e597c1c8617814bf9b42ab732db5c26e upstream. + +Moving the call of fpu__init_cpu() from cpu_init() to start_secondary() +broke Xen PV guests, as those don't call start_secondary() for APs. + +Call fpu__init_cpu() in Xen's cpu_bringup(), which is the Xen PV +replacement of start_secondary(). + +Fixes: b81fac906a8f ("x86/fpu: Move FPU initialization into arch_cpu_finalize_init()") +Signed-off-by: Juergen Gross <jgross@suse.com> +Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> +Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> +Acked-by: Thomas Gleixner <tglx@linutronix.de> +Link: https://lore.kernel.org/r/20230703130032.22916-1-jgross@suse.com +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + arch/x86/xen/smp_pv.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/x86/xen/smp_pv.c ++++ b/arch/x86/xen/smp_pv.c +@@ -27,6 +27,7 @@ + #include <asm/desc.h> + #include <asm/pgtable.h> + #include <asm/cpu.h> ++#include <asm/fpu/internal.h> + + #include <xen/interface/xen.h> + #include <xen/interface/vcpu.h> +@@ -58,6 +59,7 @@ static void cpu_bringup(void) + int cpu; + + cpu_init(); ++ fpu__init_cpu(); + touch_softlockup_watchdog(); + preempt_disable(); + |