Re: [PATCH 17/25] KVM: TDX: create/free TDX vcpu structure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 






On 8/13/2024 6:48 AM, Rick Edgecombe wrote:
From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>

Implement vcpu related stubs for TDX for create, reset and free.

For now, create only the features that do not require the TDX SEAMCALL.
The TDX specific vcpu initialization will be handled by KVM_TDX_INIT_VCPU.

Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>
Signed-off-by: Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx>
---
uAPI breakout v1:
  - Dropped unnecessary WARN_ON_ONCE() in tdx_vcpu_create().
    WARN_ON_ONCE(vcpu->arch.cpuid_entries),
    WARN_ON_ONCE(vcpu->arch.cpuid_nent)
  - Use kvm_tdx instead of to_kvm_tdx() in tdx_vcpu_create() (Chao)

v19:
  - removed stale comment in tdx_vcpu_create().

v18:
  - update commit log to use create instead of allocate because the patch
    doesn't newly allocate memory for TDX vcpu.

v16:
  - Add AMX support as the KVM upstream supports it.
--
2.46.0
---
  arch/x86/kvm/vmx/main.c    | 44 ++++++++++++++++++++++++++++++++++----
  arch/x86/kvm/vmx/tdx.c     | 41 +++++++++++++++++++++++++++++++++++
  arch/x86/kvm/vmx/x86_ops.h | 10 +++++++++
  arch/x86/kvm/x86.c         |  2 ++
  4 files changed, 93 insertions(+), 4 deletions(-)

[...]
+
+static void vt_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
+{
+	if (is_td_vcpu(vcpu)) {
+		tdx_vcpu_reset(vcpu, init_event);
+		return;
+	}
+
+	vmx_vcpu_reset(vcpu, init_event);
+}
+
[...]
+
+void tdx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
+{
+
+	/* Ignore INIT silently because TDX doesn't support INIT event. */
+	if (init_event)
+		return;
+
+	/* This is stub for now. More logic will come here. */
+}
+
For TDX, it actually doesn't do any thing meaningful in vcpu reset.
Maybe we can drop the helper and move the comments to vt_vcpu_reset()?

#endif /* __KVM_X86_VMX_X86_OPS_H */
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index ce2ef63f30f2..9cee326f5e7a 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -488,6 +488,7 @@ int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
  	kvm_recalculate_apic_map(vcpu->kvm);
  	return 0;
  }
+EXPORT_SYMBOL_GPL(kvm_set_apic_base);
/*
   * Handle a fault on a hardware virtualization (VMX or SVM) instruction.
@@ -12630,6 +12631,7 @@ bool kvm_vcpu_is_reset_bsp(struct kvm_vcpu *vcpu)
  {
  	return vcpu->kvm->arch.bsp_vcpu_id == vcpu->vcpu_id;
  }
+EXPORT_SYMBOL_GPL(kvm_vcpu_is_reset_bsp);
bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu)
  {

kvm_set_apic_base() and kvm_vcpu_is_reset_bsp() is not used in
this patch. The symbol export should move to the next patch, which
uses them.





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux