[PATCH] x86/xen: fix secondary processor fpu initialization

Juergen Gross posted 1 patch 2 years, 7 months ago
arch/x86/xen/smp_pv.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] x86/xen: fix secondary processor fpu initialization
Posted by Juergen Gross 2 years, 7 months ago
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.

Fix that by adding the call of fpu__init_cpu() to 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>
---
 arch/x86/xen/smp_pv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
index d5ae5de2daa2..cef78b8c89f4 100644
--- a/arch/x86/xen/smp_pv.c
+++ b/arch/x86/xen/smp_pv.c
@@ -63,6 +63,7 @@ static void cpu_bringup(void)
 	cr4_init();
 	cpuhp_ap_sync_alive();
 	cpu_init();
+	fpu__init_cpu();
 	touch_softlockup_watchdog();
 
 	/* PVH runs in ring 0 and allows us to do native syscalls. Yay! */
-- 
2.35.3
Re: [PATCH] x86/xen: fix secondary processor fpu initialization
Posted by Boris Ostrovsky 2 years, 7 months ago

On 7/3/23 9:00 AM, Juergen Gross wrote:
> 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.
> 
> Fix that by adding the call of fpu__init_cpu() to 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>


Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Re: [PATCH] x86/xen: fix secondary processor fpu initialization
Posted by Juergen Gross 2 years, 7 months ago
On 03.07.23 19:51, Boris Ostrovsky wrote:
> 
> 
> On 7/3/23 9:00 AM, Juergen Gross wrote:
>> 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.
>>
>> Fix that by adding the call of fpu__init_cpu() to 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>
> 
> 
> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> 

x86 maintainers, could this please go through the tip tree? The patch is
depending on other 6.5 patches which went in via tip.


Juergen
[tip: x86/urgent] x86/xen: Fix secondary processors' FPU initialization
Posted by tip-bot2 for Juergen Gross 2 years, 7 months ago
The following commit has been merged into the x86/urgent branch of tip:

Commit-ID:     fe3e0a13e597c1c8617814bf9b42ab732db5c26e
Gitweb:        https://git.kernel.org/tip/fe3e0a13e597c1c8617814bf9b42ab732db5c26e
Author:        Juergen Gross <jgross@suse.com>
AuthorDate:    Mon, 03 Jul 2023 15:00:32 +02:00
Committer:     Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Wed, 05 Jul 2023 11:44:16 +02:00

x86/xen: Fix secondary processors' FPU initialization

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
---
 arch/x86/xen/smp_pv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
index a9cf8c8..0b6efc4 100644
--- a/arch/x86/xen/smp_pv.c
+++ b/arch/x86/xen/smp_pv.c
@@ -63,6 +63,7 @@ static void cpu_bringup(void)
 
 	cr4_init();
 	cpu_init();
+	fpu__init_cpu();
 	touch_softlockup_watchdog();
 
 	/* PVH runs in ring 0 and allows us to do native syscalls. Yay! */