• Eli Cohen's avatar
    vdpa/mlx5: Avoid destroying MR on empty iotlb · 08dbd566
    Eli Cohen authored
    The current code treats an empty iotlb provdied in set_map() as a
    special case and destroy the memory region object. This must not be done
    since the virtqueue objects reference this MR. Doing so will cause the
    driver unload to emit errors and log timeouts caused by the firmware
    complaining on busy resources.
    
    This patch treats an empty iotlb as any other change of mapping. In this
    case, mlx5_vdpa_create_mr() will fail and the entire set_map() call to
    fail.
    
    This issue has not been encountered before but was seen to occur in a
    non-official version of qemu. Since qemu is a userspace program, the
    driver must protect against such case.
    
    Fixes: 94abbccd ("vdpa/mlx5: Add shared memory registration code")
    Signed-off-by: default avatarEli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210811053713.66658-1-elic@nvidia.comSigned-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    08dbd566
mr.c 12.7 KB