Messages in this thread | | | Date | Wed, 21 Jul 2021 12:08:18 +0100 | From | Marc Zyngier <> | Subject | Re: [PATCHv2 4/4] arm64: add host pv-vcpu-state support |
| |
On Wed, 21 Jul 2021 11:38:40 +0100, Sergey Senozhatsky <senozhatsky@chromium.org> wrote: > > On (21/07/21 09:40), Marc Zyngier wrote: > > > > > > Can that be cured by just checking vcpu->preempted before calling > > > kvm_update_vcpu_preempted() ? > > > > It isn't obvious to me that this is the right thing to do. > > vcpu->preempted is always updated on sched-out from the preempt > > notifier if the vcpu was on the run-queue, so my guess is that it will > > always be set when switching to another task. > > > > What you probably want is to check whether the vcpu is blocked by > > introspecting the wait-queue with: > > > > scuwait_active(kvm_arch_vcpu_get_wait(vcpu) > > > > which will tell you whether you are blocking or not. We are already > > using a similar construct for arming a background timer in this case. > > Can we examine if vcpu->run->exit_reason == WFE/WFI and avoid setting > preempted state if so?
We never go back to userspace for WFI/WFE, so no reason to populate the run structure.
Checking for the blocked state is the right thing to do, and we already have the primitive for this. Just use it.
M.
-- Without deviation from the norm, progress is not possible.
| |