• Eric Farman's avatar
    vfio-mdev: Wire in a request handler for mdev parent · a15ac665
    Eric Farman authored
    While performing some destructive tests with vfio-ccw, where the
    paths to a device are forcible removed and thus the device itself
    is unreachable, it is rather easy to end up in an endless loop in
    vfio_del_group_dev() due to the lack of a request callback for the
    associated device.
    
    In this example, one MDEV (77c) is used by a guest, while another
    (77b) is not. The symptom is that the iommu is detached from the
    mdev for 77b, but not 77c, until that guest is shutdown:
    
        [  238.794867] vfio_ccw 0.0.077b: MDEV: Unregistering
        [  238.794996] vfio_mdev 11f2d2bc-4083-431d-a023-eff72715c4f0: Removing from iommu group 2
        [  238.795001] vfio_mdev 11f2d2bc-4083-431d-a023-eff72715c4f0: MDEV: detaching iommu
        [  238.795036] vfio_ccw 0.0.077c: MDEV: Unregistering
        ...silence...
    
    Let's wire in the request call back to the mdev device, so that a
    device being physically removed from the host can be (gracefully?)
    handled by the parent device at the time the device is removed.
    
    Add a message when registering the device if a driver doesn't
    provide this callback, so a clue is given that this same loop
    may be encountered in a similar situation, and a message when
    this occurs instead of the awkward silence noted above.
    Signed-off-by: default avatarEric Farman <farman@linux.ibm.com>
    Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    a15ac665
mdev_core.c 9.18 KB