On Thu, 12 May 2022 11:31:08 +0800 Jason Wang <jasowang at redhat.com> wrote:> > > It looks to me we need to use write_lock_irq()/write_unlock_irq() to > > > do the synchronization. > > > > > > And we probably need to keep the > > > read_lock_irqsave()/read_lock_irqrestore() logic since I can see the > > > virtio_ccw_int_handler() to be called from process context (e.g from > > > the io_subchannel_quiesce()). > > > > > > > Sounds correct. > > As Cornelia and Vineeth pointed out, all the paths the vring_interrupt > is called with irq disabled. > > So I will use spin_lock()/spin_unlock() in the next version.Can we do some sort of an assertion that if the kernel is built with the corresponding debug features will make sure this assumption holds (and warn if it does not)? That assertion would also document the fact. If an assertion is not possible, I think we should at least place a strategic comment that documents our assumption. Regards, Halil> > Thanks
Michael S. Tsirkin
2022-May-16 14:25 UTC
[PATCH V4 0/9] rework on the IRQ hardening of virtio
On Mon, May 16, 2022 at 01:20:06PM +0200, Halil Pasic wrote:> On Thu, 12 May 2022 11:31:08 +0800 > Jason Wang <jasowang at redhat.com> wrote: > > > > > It looks to me we need to use write_lock_irq()/write_unlock_irq() to > > > > do the synchronization. > > > > > > > > And we probably need to keep the > > > > read_lock_irqsave()/read_lock_irqrestore() logic since I can see the > > > > virtio_ccw_int_handler() to be called from process context (e.g from > > > > the io_subchannel_quiesce()). > > > > > > > > > > Sounds correct. > > > > As Cornelia and Vineeth pointed out, all the paths the vring_interrupt > > is called with irq disabled. > > > > So I will use spin_lock()/spin_unlock() in the next version. > > Can we do some sort of an assertion that if the kernel is built with > the corresponding debug features will make sure this assumption holds > (and warn if it does not)? That assertion would also document the fact.Lockdep will do this automatically if you get it wrong, just like it did here.> If an assertion is not possible, I think we should at least place a > strategic comment that documents our assumption.That can't hurt.> Regards, > Halil > > > > > Thanks