• Niklas Schnelle's avatar
    PCI: Clean up pci_scan_slot() · c3df83e0
    Niklas Schnelle authored
    While determining the next PCI function is factored out of pci_scan_slot()
    into next_fn(), the former still handles the first function as a special
    case, which duplicates the code from the scan loop.
    
    Furthermore the non-ARI branch of next_fn() is generally hard to understand
    and especially the check for multifunction devices is hidden in the
    handling of NULL devices for non-contiguous multifunction. It also signals
    that no further functions need to be scanned by returning 0 via wraparound
    and this is a valid function number.
    
    Improve upon this by transforming the conditions in next_fn() to be easier
    to understand.
    
    By changing next_fn() to return -ENODEV instead of 0 when there is no next
    function we can then handle the initial function inside the loop and
    deduplicate the shared handling. This also makes it more explicit that only
    function 0 must exist.
    
    No functional change is intended.
    
    Link: https://lore.kernel.org/r/20220628143100.3228092-2-schnelle@linux.ibm.comSigned-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: Jan Kiszka <jan.kiszka@siemens.com>
    c3df83e0
probe.c 85.8 KB