Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 9 Apr 2024 18:36:01 +0800 | Subject | Re: [PATCH v19 098/130] KVM: TDX: Add a place holder to handle TDX VM exit | From | Binbin Wu <> |
| |
On 2/26/2024 4:26 PM, isaku.yamahata@intel.com wrote: > From: Isaku Yamahata <isaku.yamahata@intel.com> > > Wire up handle_exit and handle_exit_irqoff methods
This patch also wires up get_exit_info.
> and add a place holder > to handle VM exit. Add helper functions to get exit info, exit > qualification, etc. > > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > --- > arch/x86/kvm/vmx/main.c | 37 ++++++++++++- > arch/x86/kvm/vmx/tdx.c | 110 +++++++++++++++++++++++++++++++++++++ > arch/x86/kvm/vmx/x86_ops.h | 10 ++++ > 3 files changed, 154 insertions(+), 3 deletions(-) > [...] > @@ -562,7 +593,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = { > > .vcpu_pre_run = vt_vcpu_pre_run, > .vcpu_run = vt_vcpu_run, > - .handle_exit = vmx_handle_exit, > + .handle_exit = vt_handle_exit, > .skip_emulated_instruction = vmx_skip_emulated_instruction, > .update_emulated_instruction = vmx_update_emulated_instruction, > .set_interrupt_shadow = vt_set_interrupt_shadow, > @@ -597,7 +628,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = { > .set_identity_map_addr = vmx_set_identity_map_addr, > .get_mt_mask = vt_get_mt_mask, > > - .get_exit_info = vmx_get_exit_info, > + .get_exit_info = vt_get_exit_info, > > .vcpu_after_set_cpuid = vmx_vcpu_after_set_cpuid, > > @@ -611,7 +642,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = { > .load_mmu_pgd = vt_load_mmu_pgd, > > .check_intercept = vmx_check_intercept, > - .handle_exit_irqoff = vmx_handle_exit_irqoff, > + .handle_exit_irqoff = vt_handle_exit_irqoff, > > .request_immediate_exit = vt_request_immediate_exit, > [...] > > +int tdx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t fastpath) > +{ > + union tdx_exit_reason exit_reason = to_tdx(vcpu)->exit_reason; > + > + /* See the comment of tdh_sept_seamcall(). */
Should be tdx_seamcall_sept().
> + if (unlikely(exit_reason.full == (TDX_OPERAND_BUSY | TDX_OPERAND_ID_SEPT)))
Can use "TDX_ERROR_SEPT_BUSY" instead.
> + return 1; > + > + /* > + * TDH.VP.ENTRY
"TDH.VP.ENTRY" -> "TDH.VP.ENTER"
> checks TD EPOCH which contend with TDH.MEM.TRACK and > + * vcpu TDH.VP.ENTER. Do you mean TDH.VP.ENTER on one vcpu can contend with TDH.MEM.TRACK and TDH.VP.ENTER on another vcpu?
> + */ >
| ![\](/images/icornerr.gif) |