lkml.org 
[lkml]   [2024]   [Apr]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v19 098/130] KVM: TDX: Add a place holder to handle TDX VM exit
    From


    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?

    > + */
    >

    \
     
     \ /
      Last update: 2024-05-27 16:30    [W:2.448 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site