Re: KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Sebastian Andrzej Siewior
On 2019-06-04 13:58:51 [+0100], Julien Grall wrote: > Hi, Hi, > 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 ca

Re: KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Steven Rostedt
On Tue, 4 Jun 2019 14:53:26 +0100 Marc Zyngier wrote: > 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

Re: KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Marc Zyngier
On 04/06/2019 14:53, Marc Zyngier wrote: > On 04/06/2019 14:16, Steven Rostedt wrote: >> On Tue, 4 Jun 2019 13:58:51 +0100 >> Julien Grall 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 eventf

Re: KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Marc Zyngier
On 04/06/2019 14:16, Steven Rostedt wrote: > On Tue, 4 Jun 2019 13:58:51 +0100 > Julien Grall 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 f

Re: KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Steven Rostedt
On Tue, 4 Jun 2019 13:58:51 +0100 Julien Grall 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 >

KVM Arm Device passthrough and linux-rt

2019-06-04 Thread Julien Grall
Hi, While trying device passthrough on Linux-rt with KVM Arm, I had the following splat. [ 363.410141] 000: BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974 [ 363.410150] 000: in_atomic(): 0, irqs_disabled(): 128, pid: 2916, name: qemu-system-aar [ 363.41015