Skip to content
Permalink
Browse files
KVM: TDX: Add load_mmu_pgd method for TDX
Set shared EPT pointer value for the TDX guest to initialize TDX MMU.

Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
  • Loading branch information
yamahata committed Dec 15, 2021
1 parent 79fad28 commit f1849f253c0fb86f0b08b979afc907b445858372
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 1 deletion.
@@ -110,6 +110,15 @@ static void vt_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
return vmx_vcpu_reset(vcpu, init_event);
}

static void vt_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa,
int pgd_level)
{
if (is_td_vcpu(vcpu))
return tdx_load_mmu_pgd(vcpu, root_hpa, pgd_level);

vmx_load_mmu_pgd(vcpu, root_hpa, pgd_level);
}

static int vt_mem_enc_op_dev(void __user *argp)
{
if (!enable_tdx)
@@ -232,7 +241,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = {
.write_tsc_offset = vmx_write_tsc_offset,
.write_tsc_multiplier = vmx_write_tsc_multiplier,

.load_mmu_pgd = vmx_load_mmu_pgd,
.load_mmu_pgd = vt_load_mmu_pgd,

.check_intercept = vmx_check_intercept,
.handle_exit_irqoff = vmx_handle_exit_irqoff,
@@ -499,6 +499,11 @@ void tdx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
vcpu->kvm->vm_bugged = true;
}

void tdx_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa, int pgd_level)
{
td_vmcs_write64(to_tdx(vcpu), SHARED_EPT_POINTER, root_hpa & PAGE_MASK);
}

int tdx_dev_ioctl(void __user *argp)
{
struct kvm_tdx_capabilities __user *user_caps;
@@ -14,3 +14,5 @@ void tdx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event) {}
int tdx_dev_ioctl(void __user *argp) { return -EOPNOTSUPP; }
int tdx_vm_ioctl(struct kvm *kvm, void __user *argp) { return -EOPNOTSUPP; }
int tdx_vcpu_ioctl(struct kvm_vcpu *vcpu, void __user *argp) { return -ENOPNOTSUPP; }

void tdx_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa, int root_level) {}
@@ -140,4 +140,6 @@ int tdx_dev_ioctl(void __user *argp);
int tdx_vm_ioctl(struct kvm *kvm, void __user *argp);
int tdx_vcpu_ioctl(struct kvm_vcpu *vcpu, void __user *argp);

void tdx_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa, int root_level);

#endif /* __KVM_X86_VMX_X86_OPS_H */

0 comments on commit f1849f2

Please sign in to comment.