]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
vfio: Introduce interface to flush virqfd inject workqueue
authorAlex Williamson <alex.williamson@redhat.com>
Fri, 8 Mar 2024 23:05:24 +0000 (16:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Apr 2024 13:28:49 +0000 (15:28 +0200)
commit2ee432d740436be525d5c62d1e98009fb25b5856
treeb629e1a59d7f04e41497273d523862ea45df10af
parentded566b4637f1b6b4c9ba74e7d0b8493e93f19cf
vfio: Introduce interface to flush virqfd inject workqueue

commit b620ecbd17a03cacd06f014a5d3f3a11285ce053 upstream.

In order to synchronize changes that can affect the thread callback,
introduce an interface to force a flush of the inject workqueue.  The
irqfd pointer is only valid under spinlock, but the workqueue cannot
be flushed under spinlock.  Therefore the flush work for the irqfd is
queued under spinlock.  The vfio_irqfd_cleanup_wq workqueue is re-used
for queuing this work such that flushing the workqueue is also ordered
relative to shutdown.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Link: https://lore.kernel.org/r/20240308230557.805580-4-alex.williamson@redhat.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Stable-dep-of: 18c198c96a81 ("vfio/pci: Create persistent INTx handler")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/vfio/virqfd.c
include/linux/vfio.h