All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Hao Xiang <hao.xiang@linux.alibaba.com>, kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, chenyi.qiang@intel.com,
	sean.j.christopherson@intel.com, shannon.zhao@linux.alibaba.com
Subject: Re: [PATCH] KVM: VMX: Check if bus lock vmexit was preempted
Date: Wed, 22 Sep 2021 12:02:42 +0200	[thread overview]
Message-ID: <87b411c3-da75-e074-91a4-a73891f9f5f8@redhat.com> (raw)
In-Reply-To: <1631964600-73707-1-git-send-email-hao.xiang@linux.alibaba.com>

On 18/09/21 13:30, Hao Xiang wrote:
> exit_reason.bus_lock_detected is not only set when bus lock VM exit
> was preempted, in fact, this bit is always set if bus locks are
> detected no matter what the exit_reason.basic is.
> 
> So the bus_lock_vmexit handling in vmx_handle_exit should be duplicated
> when exit_reason.basic is EXIT_REASON_BUS_LOCK(74). We can avoid it by
> checking if bus lock vmexit was preempted in vmx_handle_exit.

I don't understand, does this mean that bus_lock_detected=1 if 
basic=EXIT_REASON_BUS_LOCK?  If so, can we instead replace the contents 
of handle_bus_lock_vmexit with

	/* Do nothing and let vmx_handle_exit exit to userspace.  */
	WARN_ON(!to_vmx(vcpu)->exit_reason.bus_lock_detected);
	return 0;

?

That would be doable only if this is architectural behavior and not a 
processor erratum, of course.

Thanks,

Paolo

> Signed-off-by: Hao Xiang <hao.xiang@linux.alibaba.com>
> ---
>   arch/x86/kvm/vmx/vmx.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
> index 0c2c0d5..5ddf1df 100644
> --- a/arch/x86/kvm/vmx/vmx.c
> +++ b/arch/x86/kvm/vmx/vmx.c
> @@ -6054,7 +6054,8 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
>   	 * still need to exit to user space when bus lock detected to inform
>   	 * that there is a bus lock in guest.
>   	 */
> -	if (to_vmx(vcpu)->exit_reason.bus_lock_detected) {
> +	if (to_vmx(vcpu)->exit_reason.bus_lock_detected &&
> +			to_vmx(vcpu)->exit_reason.basic != EXIT_REASON_BUS_LOCK) {
>   		if (ret > 0)
>   			vcpu->run->exit_reason = KVM_EXIT_X86_BUS_LOCK;
>   
> 


  reply	other threads:[~2021-09-22 10:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-18 11:30 [PATCH] KVM: VMX: Check if bus lock vmexit was preempted Hao Xiang
2021-09-22 10:02 ` Paolo Bonzini [this message]
2021-09-22 10:32   ` Xiaoyao Li
2021-09-22 12:40     ` Paolo Bonzini
2021-09-23  0:59       ` Hao Xiang
2021-09-23  6:37         ` Paolo Bonzini
2021-09-22 14:58     ` Sean Christopherson
2021-09-23  7:15       ` Hao Xiang

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=87b411c3-da75-e074-91a4-a73891f9f5f8@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=chenyi.qiang@intel.com \
    --cc=hao.xiang@linux.alibaba.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sean.j.christopherson@intel.com \
    --cc=shannon.zhao@linux.alibaba.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.