From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <seanjc@google.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>,
Michael Kelley <mikelley@microsoft.com>,
linux-hyperv@vger.kernel.org,
Siddharth Chandrasekaran <sidcha@amazon.de>,
linux-kernel@vger.kernel.org
Subject: [PATCH 05/31] KVM: x86: Prepare kvm_hv_flush_tlb() to handle L2's GPAs
Date: Fri, 11 Mar 2022 16:49:17 +0100 [thread overview]
Message-ID: <20220311154943.2299191-6-vkuznets@redhat.com> (raw)
In-Reply-To: <20220311154943.2299191-1-vkuznets@redhat.com>
To handle Direct TLB flush requests from L2, KVM needs to translate the
specified L2 GPA to L1 GPA to read hypercall arguments from there.
No fucntional change as KVM doesn't handle VMCALL/VMMCALL from L2 yet.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
arch/x86/kvm/hyperv.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
index f619acccbb6d..53eb9540494b 100644
--- a/arch/x86/kvm/hyperv.c
+++ b/arch/x86/kvm/hyperv.c
@@ -23,6 +23,7 @@
#include "ioapic.h"
#include "cpuid.h"
#include "hyperv.h"
+#include "mmu.h"
#include "xen.h"
#include <linux/cpu.h>
@@ -1969,6 +1970,12 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)
*/
BUILD_BUG_ON(KVM_HV_MAX_SPARSE_VCPU_SET_BITS > 64);
+ if (!hc->fast && is_guest_mode(vcpu)) {
+ hc->ingpa = translate_nested_gpa(vcpu, hc->ingpa, 0, NULL);
+ if (unlikely(hc->ingpa == UNMAPPED_GVA))
+ return HV_STATUS_INVALID_HYPERCALL_INPUT;
+ }
+
if (hc->code == HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST ||
hc->code == HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE) {
if (hc->fast) {
--
2.35.1
next prev parent reply other threads:[~2022-03-11 15:50 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-11 15:49 [PATCH 00/31] KVM: x86: hyper-v: Fine-grained TLB flush + Direct TLB flush feature Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 01/31] KVM: x86: hyper-v: Resurrect dedicated KVM_REQ_HV_TLB_FLUSH flag Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 02/31] KVM: x86: hyper-v: Introduce TLB flush ring Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 03/31] KVM: x86: hyper-v: Handle HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST{,EX} calls gently Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 04/31] KVM: x86: hyper-v: Expose support for extended gva ranges for flush hypercalls Vitaly Kuznetsov
2022-03-11 15:49 ` Vitaly Kuznetsov [this message]
2022-03-11 15:49 ` [PATCH 06/31] KVM: x86: hyper-v: Don't use sparse_set_to_vcpu_mask() in kvm_hv_send_ipi() Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 07/31] KVM: x86: hyper-v: Create a separate ring for Direct TLB flush Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 08/31] KVM: x86: hyper-v: Use preallocated buffer in 'struct kvm_vcpu_hv' instead of on-stack 'sparse_banks' Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 09/31] KVM: nVMX: Keep track of hv_vm_id/hv_vp_id when eVMCS is in use Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 10/31] KVM: nSVM: Keep track of Hyper-V hv_vm_id/hv_vp_id Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 11/31] KVM: x86: Introduce .post_hv_direct_flush() nested hook Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 12/31] KVM: x86: hyper-v: Introduce kvm_hv_is_tlb_flush_hcall() Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 13/31] KVM: x86: hyper-v: Direct TLB flush Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 14/31] KVM: x86: hyper-v: Introduce fast kvm_hv_direct_tlb_flush_exposed() check Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 15/31] x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 16/31] KVM: nVMX: hyper-v: Direct TLB flush Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 17/31] KVM: x86: KVM_REQ_TLB_FLUSH_CURRENT is a superset of KVM_REQ_HV_TLB_FLUSH too Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 18/31] KVM: nSVM: hyper-v: Direct TLB flush Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 19/31] KVM: x86: Expose Hyper-V Direct TLB flush feature Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 20/31] KVM: selftests: Add hyperv_svm_test to .gitignore Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 21/31] KVM: selftests: Better XMM read/write helpers Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 22/31] KVM: selftests: Hyper-V PV IPI selftest Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 23/31] KVM: selftests: Make it possible to replace PTEs with __virt_pg_map() Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 24/31] KVM: selftests: Hyper-V PV TLB flush selftest Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 25/31] KVM: selftests: Sync 'struct hv_enlightened_vmcs' definition with hyperv-tlfs.h Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 26/31] KVM: selftests: nVMX: Allocate Hyper-V partition assist page Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 27/31] KVM: selftests: nSVM: Allocate Hyper-V partition assist and VP assist pages Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 28/31] KVM: selftests: Sync 'struct hv_vp_assist_page' definition with hyperv-tlfs.h Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 29/31] KVM: selftests: evmcs_test: Direct TLB flush test Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 30/31] KVM: selftests: Move Hyper-V VP assist page enablement out of evmcs.h Vitaly Kuznetsov
2022-03-11 15:49 ` [PATCH 31/31] KVM: selftests: hyperv_svm_test: Add Direct TLB flush test Vitaly Kuznetsov
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=20220311154943.2299191-6-vkuznets@redhat.com \
--to=vkuznets@redhat.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikelley@microsoft.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=sidcha@amazon.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®