• Thomas Gleixner's avatar
    x86/fpu: Provide infrastructure for KVM FPU cleanup · 69f6ed1d
    Thomas Gleixner authored
    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: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20211022185312.954684740@linutronix.de
    69f6ed1d
core.c 18.4 KB