On Tue, 11 Jul 2023 08:26:54 +0100, Oliver Upton <oliver.upton@xxxxxxxxx> wrote: > > On Tue, Jul 11, 2023 at 08:23:25AM +0100, Marc Zyngier wrote: > > On Mon, 10 Jul 2023 18:55:53 +0100, > > Oliver Upton <oliver.upton@xxxxxxxxx> wrote: > > > > > > Xiang reports that VMs occasionally fail to boot on GICv4.1 systems when > > > running a preemptible kernel, as it is possible that a vCPU is blocked > > > without requesting a doorbell interrupt. > > > > > > The issue is that any preemption that occurs between vgic_v4_put() and > > > schedule() on the block path will mark the vPE as nonresident and *not* > > > request a doorbell irq. > > > > It'd be worth spelling out. You need to go via *three* schedule() > > calls: one to be preempted (with DB set), one to be made resident > > again, and then the final one in kvm_vcpu_halt(), clearing the DB on > > vcpu_put() due to the bug. > > Yeah, a bit lazy in the wording. What I had meant to imply was > preemption happening after the doorbell is set up and before the thread > has an opportunity to explicitly schedule out. Perhaps I should just say > that. Yup. And it is the transition via a new 'resident' state that blows it. No need to repost for that, just amend it locally. Thanks, M. -- Without deviation from the norm, progress is not possible.