• Alex Williamson's avatar
    vfio/mtty: Overhaul mtty interrupt handling · 293fbc28
    Alex Williamson authored
    The mtty driver does not currently conform to the vfio SET_IRQS uAPI.
    For example, it claims to support mask and unmask of INTx, but actually
    does nothing.  It claims to support AUTOMASK for INTx, but doesn't.  It
    fails to teardown eventfds under the full semantics specified by the
    SET_IRQS ioctl.  It also fails to teardown eventfds when the device is
    closed, leading to memory leaks.  It claims to support the request IRQ,
    but doesn't.
    
    Fix all these.
    
    A side effect of this is that QEMU will now report a warning:
    
    vfio <uuid>: Failed to set up UNMASK eventfd signaling for interrupt \
    INTX-0: VFIO_DEVICE_SET_IRQS failure: Inappropriate ioctl for device
    
    The fact is that the unmask eventfd was never supported but quietly
    failed.  mtty never honored the AUTOMASK behavior, therefore there
    was nothing to unmask.  QEMU is verbose about the failure, but
    properly falls back to userspace unmasking.
    
    Fixes: 9d1a546c ("docs: Sample driver to demonstrate how to use Mediated device framework.")
    Reviewed-by: default avatarCédric Le Goater <clg@redhat.com>
    Link: https://lore.kernel.org/r/20231016224736.2575718-2-alex.williamson@redhat.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    293fbc28
mtty.c 33.4 KB