linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch V2 0/4] x86/fpu/kvm: Sanitize the FPU guest/user handling
@ 2021-10-22 18:55 Thomas Gleixner
  2021-10-22 18:55 ` [patch V2 1/4] x86/fpu: Prepare for sanitizing KVM FPU code Thomas Gleixner
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Thomas Gleixner @ 2021-10-22 18:55 UTC (permalink / raw)
  To: LKML
  Cc: x86, Liu, Jing2, Paolo Bonzini, Bae, Chang Seok, Dave Hansen,
	Arjan van de Ven, kvm, Nakajima, Jun, Sean Christopherson

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 also 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.

The following series cleans that up and replaces the current scheme with a
single guest state which is switched in when entering vcpu_run() and
switched out before leaving it.

The rework is valuable even without AMX/XFD because it consumes less memory
and when swapping the fpstates there is no memory copy required when
TIF_NEED_LOAD_FPU is set on the going out fpstate.

The series is based on:

  git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu-3

and available from git:

  git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu-3-kvm

V1 can be found here:

  https://lore.kernel.org/r/20211017151447.829495362@linutronix.de

Changes vs. V1:

  Drop the restore_mask argument as the result is constant anyway - Paolo

Thanks,

	tglx
---
 include/asm/fpu/api.h   |   19 ++++++--
 include/asm/fpu/types.h |   44 ++++++++++++++++++-
 include/asm/kvm_host.h  |    7 ---
 kernel/fpu/core.c       |  111 ++++++++++++++++++++++++++++++++----------------
 kvm/svm/svm.c           |    7 +--
 kvm/x86.c               |   88 ++++++++++----------------------------
 6 files changed, 164 insertions(+), 112 deletions(-)

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-10-25  8:37 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-22 18:55 [patch V2 0/4] x86/fpu/kvm: Sanitize the FPU guest/user handling Thomas Gleixner
2021-10-22 18:55 ` [patch V2 1/4] x86/fpu: Prepare for sanitizing KVM FPU code Thomas Gleixner
2021-10-23 17:35   ` [tip: x86/fpu] " tip-bot2 for Thomas Gleixner
2021-10-22 18:55 ` [patch V2 2/4] x86/fpu: Provide infrastructure for KVM FPU cleanup Thomas Gleixner
2021-10-23 17:35   ` [tip: x86/fpu] " tip-bot2 for Thomas Gleixner
2021-10-25  8:36   ` tip-bot2 for Thomas Gleixner
2021-10-22 18:55 ` [patch V2 3/4] x86/kvm: Convert FPU handling to a single swap buffer Thomas Gleixner
2021-10-23 17:35   ` [tip: x86/fpu] " tip-bot2 for Thomas Gleixner
2021-10-25  8:36   ` tip-bot2 for Thomas Gleixner
2021-10-22 18:55 ` [patch V2 4/4] x86/fpu: Remove old KVM FPU interface Thomas Gleixner
2021-10-23 17:35   ` [tip: x86/fpu] " tip-bot2 for Thomas Gleixner
2021-10-25  8:36   ` tip-bot2 for Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).