2023-07-03 13:54:31

by Juergen Gross

[permalink] [raw]
Subject: [PATCH] x86/xen: fix secondary processor 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.

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 <[email protected]>
---
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



2023-07-03 18:01:21

by Boris Ostrovsky

[permalink] [raw]
Subject: Re: [PATCH] x86/xen: fix secondary processor fpu initialization



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 <[email protected]>


Reviewed-by: Boris Ostrovsky <[email protected]>


2023-07-04 06:00:42

by Juergen Gross

[permalink] [raw]
Subject: Re: [PATCH] x86/xen: fix secondary processor fpu initialization

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 <[email protected]>
>
>
> Reviewed-by: Boris Ostrovsky <[email protected]>
>

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


Attachments:
OpenPGP_0xB0DE9DD628BF132F.asc (3.08 kB)
OpenPGP public key
OpenPGP_signature (505.00 B)
OpenPGP digital signature
Download all attachments
Subject: [tip: x86/urgent] x86/xen: Fix secondary processors' FPU initialization

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 <[email protected]>
AuthorDate: Mon, 03 Jul 2023 15:00:32 +02:00
Committer: Borislav Petkov (AMD) <[email protected]>
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 <[email protected]>
Signed-off-by: Borislav Petkov (AMD) <[email protected]>
Reviewed-by: Boris Ostrovsky <[email protected]>
Acked-by: Thomas Gleixner <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
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! */