[PATCH v2 0/8] KVM: x86: Clean up MSR PAT handling

Sean Christopherson posted 8 patches 2 years, 9 months ago
arch/x86/kvm/mtrr.c    | 64 ++++++++++++++++++++----------------------
arch/x86/kvm/svm/svm.c |  7 +++--
arch/x86/kvm/vmx/vmx.c | 11 +++-----
arch/x86/kvm/x86.c     | 17 ++++++++---
arch/x86/kvm/x86.h     |  1 -
5 files changed, 52 insertions(+), 48 deletions(-)
[PATCH v2 0/8] KVM: x86: Clean up MSR PAT handling
Posted by Sean Christopherson 2 years, 9 months ago
Clean up KVM's handling of MSR PAT.  The PAT is currently lumped in with
MTRRs, and while the PAT does affect memtypes, it's not an MTRR and is
exempted from KVM's kludgy attempts to play nice with UC memory for guests
with passthrough devices that have non-coherent DMA (KVM does NOT set
"ignore guest PAT" in this case, and so the guest PAT is virtualized by
hardware, not emulated by KVM).

v2:
 - Move common bits of write path to kvm_set_msr_common(). [Kai]
 - Reword changelogs to call out that KVM enables hardware virtualization
   of guest PAT when the guest has non-coherent DMA. [Kai]
 - Clean up more open coded references to MTRR MSRs. [Yan]
 - Squash away the standalone WARN patch. [Kai]

v1: https://lore.kernel.org/all/20230503182852.3431281-1-seanjc@google.com

Ke Guo (1):
  KVM: SVM: Use kvm_pat_valid() directly instead of kvm_mtrr_valid()

Sean Christopherson (6):
  KVM: x86: Add helper to query if variable MTRR MSR is base (versus
    mask)
  KVM: x86: Add helper to get variable MTRR range from MSR index
  KVM: x86: Use MTRR macros to define possible MTRR MSR ranges
  KVM: x86: Move PAT MSR handling out of mtrr.c
  KVM: x86: Make kvm_mtrr_valid() static now that there are no external
    users
  KVM: x86: Move common handling of PAT MSR writes to
    kvm_set_msr_common()

Wenyao Hai (1):
  KVM: VMX: Open code writing vCPU's PAT in VMX's MSR handler

 arch/x86/kvm/mtrr.c    | 64 ++++++++++++++++++++----------------------
 arch/x86/kvm/svm/svm.c |  7 +++--
 arch/x86/kvm/vmx/vmx.c | 11 +++-----
 arch/x86/kvm/x86.c     | 17 ++++++++---
 arch/x86/kvm/x86.h     |  1 -
 5 files changed, 52 insertions(+), 48 deletions(-)


base-commit: 5c291b93e5d665380dbecc6944973583f9565ee5
-- 
2.40.1.606.ga4b1b128d6-goog
Re: [PATCH v2 0/8] KVM: x86: Clean up MSR PAT handling
Posted by Sean Christopherson 2 years, 8 months ago
On Thu, 11 May 2023 16:33:43 -0700, Sean Christopherson wrote:
> Clean up KVM's handling of MSR PAT.  The PAT is currently lumped in with
> MTRRs, and while the PAT does affect memtypes, it's not an MTRR and is
> exempted from KVM's kludgy attempts to play nice with UC memory for guests
> with passthrough devices that have non-coherent DMA (KVM does NOT set
> "ignore guest PAT" in this case, and so the guest PAT is virtualized by
> hardware, not emulated by KVM).
> 
> [...]

Applied to kvm-x86 misc, thanks!

[1/8] KVM: VMX: Open code writing vCPU's PAT in VMX's MSR handler
      https://github.com/kvm-x86/linux/commit/a33ba1bf0dc6
[2/8] KVM: SVM: Use kvm_pat_valid() directly instead of kvm_mtrr_valid()
      https://github.com/kvm-x86/linux/commit/7aeae027611f
[3/8] KVM: x86: Add helper to query if variable MTRR MSR is base (versus mask)
      https://github.com/kvm-x86/linux/commit/ebda79e50577
[4/8] KVM: x86: Add helper to get variable MTRR range from MSR index
      https://github.com/kvm-x86/linux/commit/9ae38b4fb135
[5/8] KVM: x86: Use MTRR macros to define possible MTRR MSR ranges
      https://github.com/kvm-x86/linux/commit/34a83deac31c
[6/8] KVM: x86: Move PAT MSR handling out of mtrr.c
      https://github.com/kvm-x86/linux/commit/bc7fe2f0b751
[7/8] KVM: x86: Make kvm_mtrr_valid() static now that there are no external users
      https://github.com/kvm-x86/linux/commit/3a5f49078eb5
[8/8] KVM: x86: Move common handling of PAT MSR writes to kvm_set_msr_common()
      https://github.com/kvm-x86/linux/commit/dee321977a23

--
https://github.com/kvm-x86/linux/tree/next
https://github.com/kvm-x86/linux/tree/fixes