OSDN Git Service

x86/fpu: Provide infrastructure for KVM FPU cleanup
authorThomas Gleixner <tglx@linutronix.de>
Fri, 22 Oct 2021 18:55:51 +0000 (20:55 +0200)
committerBorislav Petkov <bp@suse.de>
Sat, 23 Oct 2021 12:50:19 +0000 (14:50 +0200)
commit69f6ed1d14c6bcf712f4bb22a231c15eeab401e7
tree0433d82091543673e37daae13a80343add92727c
parent75c52dad5e327605f1025f399dafdf4aaf5dae9c
x86/fpu: Provide infrastructure for KVM FPU cleanup

For the upcoming AMX support it's necessary to do a proper integration with
KVM. Currently KVM allocates two FPU structs which are used for saving the user
state of the vCPU thread and restoring the guest state when entering
vcpu_run() and doing the reverse operation before leaving vcpu_run().

With the new fpstate mechanism this can be reduced to one extra buffer by
swapping the fpstate pointer in current::thread::fpu. This makes the
upcoming support for AMX and XFD simpler because then fpstate information
(features, sizes, xfd) are always consistent and it does not require any
nasty workarounds.

Provide:

  - An allocator which initializes the state properly

  - A replacement for the existing FPU swap mechanim

Aside of the reduced memory footprint, this also makes state switching
more efficient when TIF_FPU_NEED_LOAD is set. It does not require a
memcpy as the state is already correct in the to be swapped out fpstate.

The existing interfaces will be removed once KVM is converted over.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20211022185312.954684740@linutronix.de
arch/x86/include/asm/fpu/api.h
arch/x86/kernel/fpu/core.c