• Vijay Mohan Pandarathil's avatar
    PCI/AER: Report success only when every device has AER-aware driver · 918b4053
    Vijay Mohan Pandarathil authored
    When an error is detected on a PCIe device which does not have an
    AER-aware driver, prevent AER infrastructure from reporting
    successful error recovery.
    
    This is because the report_error_detected() function that gets
    called in the first phase of recovery process allows forward
    progress even when the driver for the device does not have AER
    capabilities. It seems that all callbacks (in pci_error_handlers
    structure) registered by drivers that gets called during error
    recovery are not mandatory. So the intention of the infrastructure
    design seems to be to allow forward progress even when a specific
    callback has not been registered by a driver. However, if error
    handler structure itself has not been registered, it doesn't make
    sense to allow forward progress.
    
    As a result of the current design, in the case of a single device
    having an AER-unaware driver or in the case of any function in a
    multi-function card having an AER-unaware driver, a successful
    recovery is reported.
    
    Typical scenario this happens is when a PCI device is detached
    from a KVM host and the pci-stub driver on the host claims the
    device. The pci-stub driver does not have error handling capabilities
    but the AER infrastructure still reports that the device recovered
    successfully.
    
    The changes proposed here leaves the device(s)in an unrecovered state
    if the driver for the device or for any device in the subtree
    does not have error handler structure registered. This reflects
    the true state of the device and prevents any partial recovery (or no
    recovery at all) reported as successful.
    
    [bhelgaas: changelog]
    Signed-off-by: default avatarVijay Mohan Pandarathil <vijaymohan.pandarathil@hp.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarLinas Vepstas <linasvepstas@gmail.com>
    Reviewed-by: default avatarMyron Stowe <myron.stowe@redhat.com>
    918b4053
aerdrv.h 3.47 KB