• Yishai Hadas's avatar
    vfio: Split migration ops from main device ops · 6e97eba8
    Yishai Hadas authored
    vfio core checks whether the driver sets some migration op (e.g.
    set_state/get_state) and accordingly calls its op.
    
    However, currently mlx5 driver sets the above ops without regards to its
    migration caps.
    
    This might lead to unexpected usage/Oops if user space may call to the
    above ops even if the driver doesn't support migration. As for example,
    the migration state_mutex is not initialized in that case.
    
    The cleanest way to manage that seems to split the migration ops from
    the main device ops, this will let the driver setting them separately
    from the main ops when it's applicable.
    
    As part of that, validate ops construction on registration and include a
    check for VFIO_MIGRATION_STOP_COPY since the uAPI claims it must be set
    in migration_flags.
    
    HISI driver was changed as well to match this scheme.
    
    This scheme may enable down the road to come with some extra group of
    ops (e.g. DMA log) that can be set without regards to the other options
    based on driver caps.
    
    Fixes: 6fadb021 ("vfio/mlx5: Implement vfio_pci driver for mlx5 devices")
    Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
    Signed-off-by: default avatarYishai Hadas <yishaih@nvidia.com>
    Link: https://lore.kernel.org/r/20220628155910.171454-3-yishaih@nvidia.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    6e97eba8
hisi_acc_vfio_pci.c 33.5 KB