From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Tom Lendacky <thomas.lendacky@amd.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
Brijesh Singh <brijesh.singh@amd.com>
Subject: Re: [PATCH v1 1/2] KVM: x86/mmu: Allow for overriding MMIO SPTE mask
Date: Wed, 18 Dec 2019 12:27:02 -0800 [thread overview]
Message-ID: <20191218202702.GF25201@linux.intel.com> (raw)
In-Reply-To: <f0bc54c8-cea2-e574-6191-5c34d1b504c9@amd.com>
On Wed, Dec 18, 2019 at 01:51:23PM -0600, Tom Lendacky wrote:
> On 12/18/19 1:45 PM, Tom Lendacky wrote:
> > The KVM MMIO support uses bit 51 as the reserved bit to cause nested page
> > faults when a guest performs MMIO. The AMD memory encryption support uses
> > CPUID functions to define the encryption bit position. Given this, KVM
> > can't assume that bit 51 will be safe all the time.
> >
> > Add a callback to return a reserved bit(s) mask that can be used for the
> > MMIO pagetable entries. The callback is not responsible for setting the
> > present bit.
> >
> > If a callback is registered:
> > - any non-zero mask returned is updated with the present bit and used
> > as the MMIO SPTE mask.
> > - a zero mask returned results in a mask with only bit 51 set (i.e. no
> > present bit) as the MMIO SPTE mask, similar to the way 52-bit physical
> > addressing is handled.
> >
> > If no callback is registered, the current method of setting the MMIO SPTE
> > mask is used.
> >
> > Fixes: 28a1f3ac1d0c ("kvm: x86: Set highest physical address bits in non-present/reserved SPTEs")
> > Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
> > ---
> > arch/x86/include/asm/kvm_host.h | 4 ++-
> > arch/x86/kvm/mmu/mmu.c | 54 +++++++++++++++++++++------------
> > arch/x86/kvm/x86.c | 2 +-
> > 3 files changed, 38 insertions(+), 22 deletions(-)
>
> This patch has some extra churn because kvm_x86_ops isn't set yet when the
> call to kvm_set_mmio_spte_mask() is made. If it's not a problem to move
> setting kvm_x86_ops just a bit earlier in kvm_arch_init(), some of the
> churn can be avoided.
As a completely different alternative, what about handling this purely
within SVM code by overriding the masks during svm_hardware_setup(),
similar to how VMX handles EPT's custom masks, e.g.:
/*
* Override the MMIO masks if memory encryption support is enabled:
* The physical addressing width is reduced. The first bit above the
* new physical addressing limit will always be reserved.
*/
if (cpuid_eax(0x80000000) >= 0x8000001f) {
rdmsrl(MSR_K8_SYSCFG, msr);
if (msr & MSR_K8_SYSCFG_MEM_ENCRYPT) {
mask = BIT_ULL(boot_cpu_data.x86_phys_bits) | BIT_ULL(0);
kvm_mmu_set_mmio_spte_mask(mask, mask,
ACC_WRITE_MASK | ACC_USER_MASK);
}
}
next prev parent reply other threads:[~2019-12-18 20:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-18 19:45 [PATCH v1 0/2] MMIO mask fix for AMD memory encryption support Tom Lendacky
2019-12-18 19:45 ` [PATCH v1 1/2] KVM: x86/mmu: Allow for overriding MMIO SPTE mask Tom Lendacky
2019-12-18 19:51 ` Tom Lendacky
2019-12-18 20:27 ` Sean Christopherson [this message]
2019-12-18 21:18 ` Tom Lendacky
2019-12-24 18:14 ` Tom Lendacky
2019-12-18 19:45 ` [PATCH v1 2/2] KVM: SVM: Implement reserved bit callback to set " Tom Lendacky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191218202702.GF25201@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=brijesh.singh@amd.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=thomas.lendacky@amd.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.