• Oliver O'Halloran's avatar
    powerpc/eeh_sysfs: Make clearing EEH_DEV_SYSFS saner · 3489cdc4
    Oliver O'Halloran authored
    The eeh_sysfs_remove_device() function is supposed to clear the
    EEH_DEV_SYSFS flag since it indicates the EEH sysfs entries have been added
    for a pci_dev.
    
    When the sysfs files are removed eeh_remove_device() the eeh_dev and the
    pci_dev have already been de-associated. This then causes the
    pci_dev_to_eeh_dev() call in eeh_sysfs_remove_device() to return NULL so
    the flag can't be cleared from the still-live eeh_dev. This problem is
    worked around in the caller by clearing the flag manually. However, this
    behaviour doesn't make a whole lot of sense, so this patch fixes it by:
    
    a) Re-ordering eeh_remove_device() so that eeh_sysfs_remove_device() is
       called before de-associating the pci_dev and eeh_dev.
    
    b) Making eeh_sysfs_remove_device() emit a warning if there's no
       corresponding eeh_dev for a pci_dev. The paths where the sysfs
       files are only reachable if EEH was setup for the device
       for the device in the first place so hitting this warning
       indicates a programming error.
    Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
    Reviewed-by: default avatarSam Bobroff <sbobroff@linux.ibm.com>
    Tested-by: default avatarSam Bobroff <sbobroff@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190715085612.8802-6-oohall@gmail.com
    3489cdc4
eeh.c 54.3 KB