On 04/06/2019 14:16, Steven Rostedt wrote: > On Tue, 4 Jun 2019 13:58:51 +0100 > Julien Grall <julien.grall@xxxxxxx> wrote: > >> This is happening because vgic_v2_fold_lr_state() is expected >> to be called with interrupt disabled. However, some of the path >> (e.g eventfd) will take a spinlock. >> >> The spinlock is from the waitqueue, so using a raw_spin_lock cannot >> even be considered. >> >> Do you have any input on how this could be solved? > > What's the reason that vgic_v2_fold_lr_state() expects interrupts to be > disabled? That's to prevent the injection of an interrupt firing on the same CPU while we're saving the corresponding vcpu interrupt context, among other things (the whole guest exit path runs with interrupt disabled in order to avoid this kind of thing). One possibility would be to accumulate the set of interrupt that require resampling (which is bound to be small, the number of LRs at most) and call kvm_notify_acked_irq on that set once interrupts are re-enabled. I'll have a look... M. -- Jazz is not dead. It just smells funny... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm