• Alex Williamson's avatar
    PCI: Always allow probing with driver_override · 2d2f4273
    Alex Williamson authored
    Commit 0e7df224 ("PCI: Add sysfs sriov_drivers_autoprobe to control
    VF driver binding") introduced the sriov_drivers_autoprobe attribute
    which allows users to prevent the kernel from automatically probing a
    driver for new VFs as they are created.  This allows VFs to be spawned
    without automatically binding the new device to a host driver, such as
    in cases where the user intends to use the device only with a meta
    driver like vfio-pci.  However, the current implementation prevents any
    use of drivers_probe with the VF while sriov_drivers_autoprobe=0.  This
    blocks the now current general practice of setting driver_override
    followed by using drivers_probe to bind a device to a specified driver.
    
    The kernel never automatically sets a driver_override therefore it seems
    we can assume a driver_override reflects the intent of the user.  Also,
    probing a device using a driver_override match seems outside the scope
    of the 'auto' part of sriov_drivers_autoprobe.  Therefore, let's allow
    driver_override matches regardless of sriov_drivers_autoprobe, which we
    can do by simply testing if a driver_override is set for a device as a
    'can probe' condition.
    
    Fixes: 0e7df224 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding")
    Link: https://lore.kernel.org/lkml/155742996741.21878.569845487290798703.stgit@gimli.home
    Link: https://lore.kernel.org/linux-pci/155672991496.20698.4279330795743262888.stgit@gimli.home/T/#uSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    2d2f4273
pci-driver.c 41.4 KB