All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	mlevitsk@redhat.com, vkuznets@redhat.com
Subject: Re: [PATCH v2 6/9] KVM: x86: make vendor code check for all nested events
Date: Tue, 16 Aug 2022 23:47:11 +0000	[thread overview]
Message-ID: <Yvwsf61D8wbwkAh7@google.com> (raw)
In-Reply-To: <20220811210605.402337-7-pbonzini@redhat.com>

On Thu, Aug 11, 2022, Paolo Bonzini wrote:
> Interrupts, NMIs etc. sent while in guest mode are already handled
> properly by the *_interrupt_allowed callbacks, but other events can
> cause a vCPU to be runnable that are specific to guest mode.
> 
> In the case of VMX there are two, the preemption timer and the
> monitor trap.  The VMX preemption timer is already special cased via
> the hv_timer_pending callback, but the purpose of the callback can be
> easily extended to MTF or in fact any other event that can occur only
> in guest mode.
> 
> Rename the callback and add an MTF check; kvm_arch_vcpu_runnable()
> now will return true if an MTF is pending, without relying on
> kvm_vcpu_running()'s call to kvm_check_nested_events().  Until that call
> is removed, however, the patch introduces no functional change.
> 
> Reported-by: Maxim Levitsky <mlevitsk@redhat.com>
> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  arch/x86/include/asm/kvm_host.h | 2 +-
>  arch/x86/kvm/vmx/nested.c       | 9 ++++++++-
>  arch/x86/kvm/x86.c              | 8 ++++----
>  3 files changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index 5ffa578cafe1..293ff678fff5 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -1636,7 +1636,7 @@ struct kvm_x86_nested_ops {
>  	int (*check_events)(struct kvm_vcpu *vcpu);
>  	bool (*handle_page_fault_workaround)(struct kvm_vcpu *vcpu,
>  					     struct x86_exception *fault);
> -	bool (*hv_timer_pending)(struct kvm_vcpu *vcpu);
> +	bool (*has_events)(struct kvm_vcpu *vcpu);
>  	void (*triple_fault)(struct kvm_vcpu *vcpu);
>  	int (*get_state)(struct kvm_vcpu *vcpu,
>  			 struct kvm_nested_state __user *user_kvm_nested_state,
> diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
> index ddd4367d4826..9631cdcdd058 100644
> --- a/arch/x86/kvm/vmx/nested.c
> +++ b/arch/x86/kvm/vmx/nested.c
> @@ -3876,6 +3876,13 @@ static bool nested_vmx_preemption_timer_pending(struct kvm_vcpu *vcpu)
>  	       to_vmx(vcpu)->nested.preemption_timer_expired;
>  }
>  
> +static bool vmx_has_nested_events(struct kvm_vcpu *vcpu)
> +{
> +	struct vcpu_vmx *vmx = to_vmx(vcpu);
> +
> +	return nested_vmx_preemption_timer_pending(vcpu) || vmx->nested.mtf_pending;

How about:

	return nested_vmx_preemption_timer_pending(vcpu) ||
	       to_vmx(vcpu)->nested.mtf_pending;

to use less lines and honor the 80 char soft-limit?

  reply	other threads:[~2022-08-16 23:47 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-11 21:05 [PATCH v2 0/9] KVM: x86: never write to memory from kvm_vcpu_check_block Paolo Bonzini
2022-08-11 21:05 ` [PATCH v2 1/9] KVM: x86: check validity of argument to KVM_SET_MP_STATE Paolo Bonzini
2022-08-15 13:31   ` Maxim Levitsky
2022-08-16 22:50     ` Sean Christopherson
2022-08-11 21:05 ` [PATCH v2 2/9] KVM: x86: remove return value of kvm_vcpu_block Paolo Bonzini
2022-08-16 23:34   ` Sean Christopherson
2022-08-17 14:10     ` Maxim Levitsky
2022-08-17 15:31     ` Paolo Bonzini
2022-08-17 16:41       ` Sean Christopherson
2022-08-17 16:49         ` Paolo Bonzini
2022-09-20  0:42         ` Sean Christopherson
2022-08-11 21:05 ` [PATCH v2 3/9] KVM: x86: make kvm_vcpu_{block,halt} return whether vCPU is runnable Paolo Bonzini
2022-08-11 21:06 ` [PATCH v2 4/9] KVM: mips, x86: do not rely on KVM_REQ_UNHALT Paolo Bonzini
2022-08-11 21:06 ` [PATCH v2 5/9] KVM: remove KVM_REQ_UNHALT Paolo Bonzini
2022-08-11 21:06 ` [PATCH v2 6/9] KVM: x86: make vendor code check for all nested events Paolo Bonzini
2022-08-16 23:47   ` Sean Christopherson [this message]
2022-08-17 14:10   ` Maxim Levitsky
2022-08-11 21:06 ` [PATCH v2 7/9] KVM: nVMX: Make an event request when pending an MTF nested VM-Exit Paolo Bonzini
2022-08-17 14:11   ` Maxim Levitsky
2022-08-11 21:06 ` [PATCH v2 8/9] KVM: x86: lapic does not have to process INIT if it is blocked Paolo Bonzini
2022-08-17  0:07   ` Sean Christopherson
2022-08-17 14:11     ` Maxim Levitsky
2022-08-17 15:33       ` Paolo Bonzini
2022-08-11 21:06 ` [PATCH v2 9/9] KVM: x86: never write to memory from kvm_vcpu_check_block Paolo Bonzini
2022-08-16 23:45   ` Sean Christopherson
2022-08-17 14:11     ` Maxim Levitsky
2022-09-20  0:32   ` Sean Christopherson
2022-09-20  0:55   ` Sean Christopherson

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=Yvwsf61D8wbwkAh7@google.com \
    --to=seanjc@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mlevitsk@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=vkuznets@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.