From: Joao Martins <joao.m.martins@oracle.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
"Radim Krčmář" <rkrcmar@redhat.com>,
"Sean Christopherson" <sean.j.christopherson@intel.com>,
"Vitaly Kuznetsov" <vkuznets@redhat.com>,
"Wanpeng Li" <wanpengli@tencent.com>,
"Jim Mattson" <jmattson@google.com>,
"Joerg Roedel" <joro@8bytes.org>,
"Liran Alon" <liran.alon@oracle.com>,
"Jag Raman" <jag.raman@oracle.com>
Subject: Re: [PATCH v1 2/3] KVM: VMX: Do not change PID.NDST when loading a blocked vCPU
Date: Mon, 11 Nov 2019 14:48:44 +0000 [thread overview]
Message-ID: <314a4120-036c-e954-bc9f-e57dee3bbb7c@oracle.com> (raw)
In-Reply-To: <15c8c821-25ff-eb62-abd3-8d7d69650744@redhat.com>
On 11/11/19 2:39 PM, Paolo Bonzini wrote:
> On 06/11/19 18:56, Joao Martins wrote:
>> When vCPU enters block phase, pi_pre_block() inserts vCPU to a per pCPU
>> linked list of all vCPUs that are blocked on this pCPU. Afterwards, it
>> changes PID.NV to POSTED_INTR_WAKEUP_VECTOR which its handler
>> (wakeup_handler()) is responsible to kick (unblock) any vCPU on that
>> linked list that now has pending posted interrupts.
>>
>> While vCPU is blocked (in kvm_vcpu_block()), it may be preempted which
>> will cause vmx_vcpu_pi_put() to set PID.SN. If later the vCPU will be
>> scheduled to run on a different pCPU, vmx_vcpu_pi_load() will clear
>> PID.SN but will also *overwrite PID.NDST to this different pCPU*.
>> Instead of keeping it with original pCPU which vCPU had entered block
>> phase on.
>>
>> This results in an issue because when a posted interrupt is delivered,
>> the wakeup_handler() will be executed and fail to find blocked vCPU on
>> its per pCPU linked list of all vCPUs that are blocked on this pCPU.
>> Which is due to the vCPU being placed on a *different* per pCPU
>> linked list than the original pCPU that it had entered block phase.
>>
>> The regression is introduced by commit c112b5f50232 ("KVM: x86:
>> Recompute PID.ON when clearing PID.SN"). Therefore, partially revert
>> it and reintroduce the condition in vmx_vcpu_pi_load() responsible for
>> avoiding changing PID.NDST when loading a blocked vCPU.
>>
>> Fixes: c112b5f50232 ("KVM: x86: Recompute PID.ON when clearing PID.SN")
>> Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
>> Signed-off-by: Liran Alon <liran.alon@oracle.com>
>
> Something wrong in the SoB line?
>
I can't spot any mistake; at least it looks chained correctly for me. What's the
issue you see with the Sob line?
The only thing I forgot was a:
Tested-by: Nathan Ni <nathan.ni@oracle.com>
> Otherwise looks good.
If you want I can resubmit the series with the Tb and Jag Rb, unless you think
it's OK doing on commit? Otherwise I can resubmit.
Joao
next prev parent reply other threads:[~2019-11-11 14:50 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 17:55 [PATCH v1 0/3] KVM: VMX: Posted Interrupts fixes Joao Martins
2019-11-06 17:56 ` [PATCH v1 1/3] KVM: VMX: Consider PID.PIR to determine if vCPU has pending interrupts Joao Martins
2019-11-07 16:00 ` Jag Raman
2019-11-11 14:46 ` Paolo Bonzini
2019-11-11 14:59 ` Joao Martins
2019-11-11 15:58 ` Paolo Bonzini
2019-11-06 17:56 ` [PATCH v1 2/3] KVM: VMX: Do not change PID.NDST when loading a blocked vCPU Joao Martins
2019-11-06 21:54 ` Joao Martins
2019-11-11 14:39 ` Paolo Bonzini
2019-11-11 14:48 ` Joao Martins [this message]
2019-11-11 14:50 ` Paolo Bonzini
2019-11-11 14:56 ` Joao Martins
2019-11-11 14:59 ` Liran Alon
2019-11-11 15:53 ` Sean Christopherson
2019-11-11 17:27 ` Joao Martins
2019-11-06 17:56 ` [PATCH v1 3/3] KVM: VMX: Introduce pi_is_pir_empty() helper Joao Martins
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=314a4120-036c-e954-bc9f-e57dee3bbb7c@oracle.com \
--to=joao.m.martins@oracle.com \
--cc=jag.raman@oracle.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liran.alon@oracle.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=sean.j.christopherson@intel.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.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.