From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Subject: [PATCH 4.9 15/16] KVM: x86/mmu: Treat NX as used (not reserved) for all !TDP shadow MMUs
Date: Wed, 1 Sep 2021 14:26:41 +0200 [thread overview]
Message-ID: <20210901122249.394226550@linuxfoundation.org> (raw)
In-Reply-To: <20210901122248.920548099@linuxfoundation.org>
From: Sean Christopherson <seanjc@google.com>
commit 112022bdb5bc372e00e6e43cb88ee38ea67b97bd upstream
Mark NX as being used for all non-nested shadow MMUs, as KVM will set the
NX bit for huge SPTEs if the iTLB mutli-hit mitigation is enabled.
Checking the mitigation itself is not sufficient as it can be toggled on
at any time and KVM doesn't reset MMU contexts when that happens. KVM
could reset the contexts, but that would require purging all SPTEs in all
MMUs, for no real benefit. And, KVM already forces EFER.NX=1 when TDP is
disabled (for WP=0, SMEP=1, NX=0), so technically NX is never reserved
for shadow MMUs.
Fixes: b8e8c8303ff2 ("kvm: mmu: ITLB_MULTIHIT mitigation")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210622175739.3610207-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[sudip: use old path and adjust context]
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kvm/mmu.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -3927,7 +3927,16 @@ static void reset_rsvds_bits_mask_ept(st
void
reset_shadow_zero_bits_mask(struct kvm_vcpu *vcpu, struct kvm_mmu *context)
{
- bool uses_nx = context->nx || context->base_role.smep_andnot_wp;
+ /*
+ * KVM uses NX when TDP is disabled to handle a variety of scenarios,
+ * notably for huge SPTEs if iTLB multi-hit mitigation is enabled and
+ * to generate correct permissions for CR0.WP=0/CR4.SMEP=1/EFER.NX=0.
+ * The iTLB multi-hit workaround can be toggled at any time, so assume
+ * NX can be used by any non-nested shadow MMU to avoid having to reset
+ * MMU contexts. Note, KVM forces EFER.NX=1 when TDP is disabled.
+ */
+ bool uses_nx = context->nx || !tdp_enabled ||
+ context->base_role.smep_andnot_wp;
/*
* Passing "true" to the last argument is okay; it adds a check
next prev parent reply other threads:[~2021-09-01 12:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-01 12:26 [PATCH 4.9 00/16] 4.9.282-rc1 review Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 01/16] ARC: Fix CONFIG_STACKDEPOT Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 02/16] can: usb: esd_usb2: esd_usb2_rx_event(): fix the interchange of the CAN RX and TX error counters Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 03/16] Revert "USB: serial: ch341: fix character loss at high transfer rates" Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 04/16] USB: serial: option: add new VID/PID to support Fibocom FG150 Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 05/16] usb: dwc3: gadget: Fix dwc3_calc_trbs_left() Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 06/16] IB/hfi1: Fix possible null-pointer dereference in _extend_sdma_tx_descs() Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 07/16] e1000e: Fix the max snoop/no-snoop latency for 10M Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 08/16] ip_gre: add validation for csum_start Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 09/16] net: marvell: fix MVNETA_TX_IN_PRGRS bit number Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 10/16] virtio: Improve vq->broken access to avoid any compiler optimization Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 11/16] vringh: Use wiov->used to check for read/write desc order Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 12/16] net/rds: dma_map_sg is entitled to merge entries Greg Kroah-Hartman
2021-09-03 6:50 ` Pavel Machek
2021-09-03 16:02 ` Gerd Rausch
2021-09-01 12:26 ` [PATCH 4.9 13/16] vt_kdsetmode: extend console locking Greg Kroah-Hartman
2021-09-01 12:26 ` [PATCH 4.9 14/16] fbmem: add margin check to fb_check_caps() Greg Kroah-Hartman
2021-09-01 12:26 ` Greg Kroah-Hartman [this message]
2021-09-01 12:26 ` [PATCH 4.9 16/16] Revert "floppy: reintroduce O_NDELAY fix" Greg Kroah-Hartman
2021-09-01 15:45 ` [PATCH 4.9 00/16] 4.9.282-rc1 review Florian Fainelli
2021-09-01 19:22 ` Jon Hunter
2021-09-01 21:24 ` Shuah Khan
2021-09-02 16:10 ` Naresh Kamboju
2021-09-02 21:49 ` Guenter Roeck
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=20210901122249.394226550@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=stable@vger.kernel.org \
--cc=sudipm.mukherjee@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox