From: Rick Edgecombe <rick.p.edgecombe@intel.com>
To: seanjc@google.com, pbonzini@redhat.com, kvm@vger.kernel.org
Cc: kai.huang@intel.com, isaku.yamahata@gmail.com,
tony.lindgren@linux.intel.com, xiaoyao.li@intel.com,
linux-kernel@vger.kernel.org, rick.p.edgecombe@intel.com
Subject: [PATCH 23/25] KVM: x86/mmu: Taking guest pa into consideration when calculate tdp level
Date: Mon, 12 Aug 2024 15:48:18 -0700 [thread overview]
Message-ID: <20240812224820.34826-24-rick.p.edgecombe@intel.com> (raw)
In-Reply-To: <20240812224820.34826-1-rick.p.edgecombe@intel.com>
From: Xiaoyao Li <xiaoyao.li@intel.com>
For TDX, the maxpa (CPUID.0x80000008.EAX[7:0]) is fixed as native and
the max_gpa (CPUID.0x80000008.EAX[23:16]) is configurable and used
to configure the EPT level and GPAW.
Use max_gpa to determine the TDP level.
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
---
uAPI breakout v1:
- New patch
---
arch/x86/kvm/cpuid.c | 14 ++++++++++++++
arch/x86/kvm/cpuid.h | 1 +
arch/x86/kvm/mmu/mmu.c | 10 +++++++++-
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 499479c769d8..ebebff0dbd3b 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -423,6 +423,20 @@ int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu)
return 36;
}
+int cpuid_query_maxguestphyaddr(struct kvm_vcpu *vcpu)
+{
+ struct kvm_cpuid_entry2 *best;
+
+ best = kvm_find_cpuid_entry(vcpu, 0x80000000);
+ if (!best || best->eax < 0x80000008)
+ goto not_found;
+ best = kvm_find_cpuid_entry(vcpu, 0x80000008);
+ if (best)
+ return (best->eax >> 16) & 0xff;
+not_found:
+ return 0;
+}
+
/*
* This "raw" version returns the reserved GPA bits without any adjustments for
* encryption technologies that usurp bits. The raw mask should be used if and
diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
index 5cc13d1b7991..2db458e4c450 100644
--- a/arch/x86/kvm/cpuid.h
+++ b/arch/x86/kvm/cpuid.h
@@ -39,6 +39,7 @@ bool kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx,
u32 xstate_required_size(u64 xstate_bv, bool compacted);
int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
+int cpuid_query_maxguestphyaddr(struct kvm_vcpu *vcpu);
u64 kvm_vcpu_reserved_gpa_bits_raw(struct kvm_vcpu *vcpu);
static inline int cpuid_maxphyaddr(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 3a00bf062a46..694edcb7ef46 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -5440,12 +5440,20 @@ void __kvm_mmu_refresh_passthrough_bits(struct kvm_vcpu *vcpu,
static inline int kvm_mmu_get_tdp_level(struct kvm_vcpu *vcpu)
{
+ int maxpa = 0;
+
+ if (vcpu->kvm->arch.vm_type == KVM_X86_TDX_VM)
+ maxpa = cpuid_query_maxguestphyaddr(vcpu);
+
+ if (!maxpa)
+ maxpa = cpuid_maxphyaddr(vcpu);
+
/* tdp_root_level is architecture forced level, use it if nonzero */
if (tdp_root_level)
return tdp_root_level;
/* Use 5-level TDP if and only if it's useful/necessary. */
- if (max_tdp_level == 5 && cpuid_maxphyaddr(vcpu) <= 48)
+ if (max_tdp_level == 5 && maxpa <= 48)
return 4;
return max_tdp_level;
--
2.34.1
next prev parent reply other threads:[~2024-08-12 22:48 UTC|newest]
Thread overview: 191+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-12 22:47 [PATCH 00/25] TDX vCPU/VM creation Rick Edgecombe
2024-08-12 22:47 ` [PATCH 01/25] KVM: TDX: Add placeholders for TDX VM/vCPU structures Rick Edgecombe
2024-09-10 16:00 ` Paolo Bonzini
2024-08-12 22:47 ` [PATCH 02/25] KVM: TDX: Define TDX architectural definitions Rick Edgecombe
2024-08-29 13:25 ` Xiaoyao Li
2024-08-29 19:46 ` Edgecombe, Rick P
2024-08-30 1:29 ` Xiaoyao Li
2024-08-30 4:45 ` Tony Lindgren
2024-09-10 16:21 ` Paolo Bonzini
2024-09-10 17:49 ` Sean Christopherson
2024-08-12 22:47 ` [PATCH 03/25] KVM: TDX: Add TDX "architectural" error codes Rick Edgecombe
2024-08-13 6:08 ` Binbin Wu
2024-08-29 5:24 ` Tony Lindgren
2024-08-30 5:52 ` Tony Lindgren
2024-09-10 16:22 ` Paolo Bonzini
2024-09-11 5:58 ` Tony Lindgren
2024-08-12 22:47 ` [PATCH 04/25] KVM: TDX: Add C wrapper functions for SEAMCALLs to the TDX module Rick Edgecombe
2024-08-12 22:48 ` [PATCH 05/25] KVM: TDX: Add helper functions to print TDX SEAMCALL error Rick Edgecombe
2024-08-13 16:32 ` Isaku Yamahata
2024-08-13 22:34 ` Huang, Kai
2024-08-14 0:31 ` Isaku Yamahata
2024-08-30 5:56 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 06/25] x86/virt/tdx: Export TDX KeyID information Rick Edgecombe
2024-08-30 18:45 ` Dave Hansen
2024-08-30 19:16 ` Edgecombe, Rick P
2024-08-30 21:18 ` Dave Hansen
2024-09-10 16:26 ` Paolo Bonzini
2024-08-12 22:48 ` [PATCH 07/25] KVM: TDX: Add helper functions to allocate/free TDX private host key id Rick Edgecombe
2024-09-10 16:27 ` Paolo Bonzini
2024-09-10 16:39 ` Edgecombe, Rick P
2024-09-10 16:42 ` Paolo Bonzini
2024-09-10 16:43 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 08/25] KVM: TDX: Add place holder for TDX VM specific mem_enc_op ioctl Rick Edgecombe
2024-08-13 6:25 ` Binbin Wu
2024-08-13 16:37 ` Isaku Yamahata
2024-08-30 6:00 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 09/25] KVM: TDX: Get system-wide info about TDX module on initialization Rick Edgecombe
2024-08-13 6:47 ` Binbin Wu
2024-08-30 6:59 ` Tony Lindgren
2024-08-14 6:18 ` Binbin Wu
2024-08-21 0:11 ` Edgecombe, Rick P
2024-08-21 6:14 ` Tony Lindgren
2024-08-15 7:59 ` Xu Yilun
2024-08-30 7:21 ` Tony Lindgren
2024-09-02 1:25 ` Xu Yilun
2024-09-02 5:05 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 10/25] KVM: TDX: Initialize KVM supported capabilities when module setup Rick Edgecombe
2024-08-13 3:25 ` Chao Gao
2024-08-13 5:26 ` Huang, Kai
2024-08-30 8:44 ` Tony Lindgren
2024-08-13 7:24 ` Binbin Wu
2024-08-14 0:26 ` Chao Gao
2024-08-14 2:36 ` Binbin Wu
2024-08-30 8:34 ` Tony Lindgren
2024-09-10 16:58 ` Paolo Bonzini
2024-09-11 11:07 ` Tony Lindgren
2024-09-03 16:53 ` Edgecombe, Rick P
2024-08-19 1:33 ` Tao Su
2024-08-29 13:28 ` Xiaoyao Li
2024-08-26 11:04 ` Nikolay Borisov
2024-08-29 4:51 ` Tony Lindgren
2024-09-10 17:15 ` Paolo Bonzini
2024-09-11 11:04 ` Tony Lindgren
2024-10-10 8:25 ` Xiaoyao Li
2024-10-10 9:49 ` Tony Lindgren
2024-09-04 11:58 ` Nikolay Borisov
2024-09-05 13:36 ` Xiaoyao Li
2024-09-12 8:04 ` Nikolay Borisov
2024-09-12 8:37 ` Xiaoyao Li
2024-09-12 8:43 ` Nikolay Borisov
2024-09-12 9:07 ` Xiaoyao Li
2024-09-12 15:12 ` Edgecombe, Rick P
2024-09-12 15:18 ` Nikolay Borisov
2024-08-12 22:48 ` [PATCH 11/25] KVM: TDX: Report kvm_tdx_caps in KVM_TDX_CAPABILITIES Rick Edgecombe
2024-08-13 3:35 ` Chao Gao
2024-08-19 10:24 ` Nikolay Borisov
2024-08-21 0:06 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 12/25] KVM: TDX: Allow userspace to configure maximum vCPUs for TDX guests Rick Edgecombe
2024-08-19 1:17 ` Tao Su
2024-08-21 0:12 ` Edgecombe, Rick P
2024-08-30 8:53 ` Tony Lindgren
2024-09-30 2:14 ` Xiaoyao Li
2024-08-12 22:48 ` [PATCH 13/25] KVM: TDX: create/destroy VM structure Rick Edgecombe
2024-08-14 3:08 ` Yuan Yao
2024-08-21 6:13 ` Tony Lindgren
2024-08-16 7:31 ` Xu Yilun
2024-08-30 9:26 ` Tony Lindgren
2024-08-19 15:09 ` Nikolay Borisov
2024-08-21 0:23 ` Edgecombe, Rick P
2024-08-21 5:39 ` Tony Lindgren
2024-08-21 16:52 ` Edgecombe, Rick P
2024-08-30 9:40 ` Tony Lindgren
2024-09-02 9:22 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 14/25] KVM: TDX: initialize VM with TDX specific parameters Rick Edgecombe
2024-08-19 15:35 ` Nikolay Borisov
2024-08-21 0:01 ` Edgecombe, Rick P
2024-08-29 6:27 ` Yan Zhao
2024-09-02 10:31 ` Tony Lindgren
2024-09-05 6:59 ` Yan Zhao
2024-09-05 9:27 ` Tony Lindgren
2024-09-06 4:05 ` Yan Zhao
2024-09-06 4:32 ` Tony Lindgren
2024-09-06 13:52 ` Wang, Wei W
2024-09-03 2:58 ` Chenyi Qiang
2024-09-03 5:44 ` Tony Lindgren
2024-09-03 8:04 ` Chenyi Qiang
2024-09-05 9:31 ` Tony Lindgren
2024-10-01 20:45 ` Edgecombe, Rick P
2024-10-02 23:39 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 15/25] KVM: TDX: Make pmu_intel.c ignore guest TD case Rick Edgecombe
2024-09-10 17:23 ` Paolo Bonzini
2024-10-01 10:23 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 16/25] KVM: TDX: Don't offline the last cpu of one package when there's TDX guest Rick Edgecombe
2024-08-13 8:37 ` Binbin Wu
2024-08-12 22:48 ` [PATCH 17/25] KVM: TDX: create/free TDX vcpu structure Rick Edgecombe
2024-08-13 9:15 ` Binbin Wu
2024-09-02 10:50 ` Tony Lindgren
2024-08-19 16:46 ` Nikolay Borisov
2024-08-29 5:00 ` Tony Lindgren
2024-08-29 6:41 ` Yan Zhao
2024-08-12 22:48 ` [PATCH 18/25] KVM: TDX: Do TDX specific vcpu initialization Rick Edgecombe
2024-08-13 8:00 ` Yuan Yao
2024-08-13 17:21 ` Isaku Yamahata
2024-08-14 1:20 ` Yuan Yao
2024-08-15 0:47 ` Isaku Yamahata
2024-09-03 5:23 ` Tony Lindgren
2024-10-09 15:01 ` Adrian Hunter
2024-10-16 17:42 ` Edgecombe, Rick P
2024-10-18 2:21 ` Xiaoyao Li
2024-10-18 14:20 ` Edgecombe, Rick P
2024-10-21 8:35 ` Xiaoyao Li
2024-10-26 1:12 ` Edgecombe, Rick P
2024-08-28 14:34 ` Edgecombe, Rick P
2024-09-03 5:34 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 19/25] KVM: X86: Introduce kvm_get_supported_cpuid_internal() Rick Edgecombe
2024-08-12 22:48 ` [PATCH 20/25] KVM: X86: Introduce tdx_get_kvm_supported_cpuid() Rick Edgecombe
2024-08-12 22:48 ` [PATCH 21/25] KVM: x86: Introduce KVM_TDX_GET_CPUID Rick Edgecombe
2024-08-19 2:59 ` Tao Su
2024-09-03 6:21 ` Tony Lindgren
2024-09-10 17:27 ` Paolo Bonzini
2024-08-19 5:02 ` Xu Yilun
2024-09-03 7:19 ` Tony Lindgren
2024-09-10 17:29 ` Paolo Bonzini
2024-09-11 11:11 ` Tony Lindgren
2024-08-26 14:09 ` Nikolay Borisov
2024-08-26 17:46 ` Edgecombe, Rick P
2024-08-27 12:19 ` Nikolay Borisov
2024-08-27 20:40 ` Edgecombe, Rick P
2024-09-30 6:26 ` Xiaoyao Li
2024-09-30 16:22 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 22/25] KVM: TDX: Use guest physical address to configure EPT level and GPAW Rick Edgecombe
2024-09-10 17:31 ` Paolo Bonzini
2024-10-10 9:13 ` Xiaoyao Li
2024-10-10 10:36 ` Tony Lindgren
2024-08-12 22:48 ` Rick Edgecombe [this message]
2024-09-10 17:33 ` [PATCH 23/25] KVM: x86/mmu: Taking guest pa into consideration when calculate tdp level Paolo Bonzini
2024-08-12 22:48 ` [PATCH 24/25] KVM: x86: Filter directly configurable TDX CPUID bits Rick Edgecombe
2024-08-19 5:02 ` Xu Yilun
2024-09-03 7:51 ` Tony Lindgren
2024-09-10 17:36 ` Paolo Bonzini
2024-08-12 22:48 ` [PATCH 25/25] KVM: x86: Add CPUID bits missing from KVM_GET_SUPPORTED_CPUID Rick Edgecombe
2024-08-13 11:34 ` Chao Gao
2024-08-13 15:14 ` Xiaoyao Li
2024-08-14 0:47 ` Chao Gao
2024-08-14 1:16 ` Sean Christopherson
2024-08-14 10:46 ` Chao Gao
2024-08-14 13:35 ` Sean Christopherson
2024-08-14 17:35 ` Edgecombe, Rick P
2024-08-14 21:22 ` Sean Christopherson
2024-08-13 18:45 ` Edgecombe, Rick P
2024-08-14 1:10 ` Sean Christopherson
2024-08-14 11:36 ` Chao Gao
2024-08-14 17:17 ` Edgecombe, Rick P
2024-09-10 17:52 ` Paolo Bonzini
2024-09-12 7:48 ` Xiaoyao Li
2024-09-12 14:09 ` Paolo Bonzini
2024-09-12 14:45 ` Xiaoyao Li
2024-09-12 14:48 ` Paolo Bonzini
2024-09-12 15:26 ` Xiaoyao Li
2024-09-12 16:42 ` Sean Christopherson
2024-09-12 18:29 ` Paolo Bonzini
2024-09-12 18:41 ` Sean Christopherson
2024-09-13 3:54 ` Xiaoyao Li
2024-09-12 18:42 ` Edgecombe, Rick P
2024-09-13 3:57 ` Xiaoyao Li
2024-09-12 15:07 ` Edgecombe, Rick P
2024-09-12 15:37 ` Paolo Bonzini
2024-09-12 16:38 ` Edgecombe, Rick P
2024-08-15 5:20 ` [PATCH 00/25] TDX vCPU/VM creation Tony Lindgren
2024-08-15 23:46 ` Edgecombe, Rick P
2024-08-16 5:18 ` Tony Lindgren
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=20240812224820.34826-24-rick.p.edgecombe@intel.com \
--to=rick.p.edgecombe@intel.com \
--cc=isaku.yamahata@gmail.com \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=tony.lindgren@linux.intel.com \
--cc=xiaoyao.li@intel.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®