All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiaoyao Li <xiaoyao.li@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Hao Xiang <hao.xiang@linux.alibaba.com>,
	kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, chenyi.qiang@intel.com,
	shannon.zhao@linux.alibaba.com,
	Sean Christopherson <seanjc@google.com>
Subject: Re: [PATCH] KVM: VMX: Check if bus lock vmexit was preempted
Date: Wed, 22 Sep 2021 18:32:22 +0800	[thread overview]
Message-ID: <57597778-836c-7bac-7f1d-bcdae0cd6ac4@intel.com> (raw)
In-Reply-To: <87b411c3-da75-e074-91a4-a73891f9f5f8@redhat.com>

On 9/22/2021 6:02 PM, Paolo Bonzini wrote:
> 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.

EXIT_REASON.bus_lock_detected may or may not be set when exit reason == 
EXIT_REASON_BUS_LOCK. Intel will update ISE or SDM to state it.

Maybe we can do below in handle_bus_lock_vmexit handler:

	if (!to_vmx(vcpu)->exit_reason.bus_lock_detected)
		to_vmx(vcpu)->exit_reason.bus_lock_detected = 1;

But is manually changing the hardware reported value for software 
purpose a good thing?


> 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:32 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
2021-09-22 10:32   ` Xiaoyao Li [this message]
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=57597778-836c-7bac-7f1d-bcdae0cd6ac4@intel.com \
    --to=xiaoyao.li@intel.com \
    --cc=chenyi.qiang@intel.com \
    --cc=hao.xiang@linux.alibaba.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.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.