• A
    PCI: unconditionally clear AER uncorr status register during cleanup · 6cdfd995
    Andrew Patterson 提交于
    The current implementation of pci_cleanup_aer_uncorrect_error_status
    only clears either fatal or non-fatal error status bits depending
    on the state of the I/O channel. This implementation will then often
    leave some bits set after PCI error recovery completes.  The uncleared bit
    settings will then be falsely reported the next time an AER interrupt is
    generated for that hierarchy. An easy way to illustrate this issue is to
    use the aer-inject module to simultaneously inject both an uncorrectable
    non-fatal and uncorrectable fatal error.  One of the errors will not be
    cleared.
    
    This patch resolves this issue by unconditionally clearing all bits in
    the AER uncorrectable status register. All settings and corrective action
    strategies are saved and determined before
    pci_cleanup_aer_uncorrect_error_status is called, so this change should not
    affect errory handling functionality.
    Signed-off-by: NAndrew Patterson <andrew.patterson@hp.com>
    Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    6cdfd995
aerdrv_core.c 23.0 KB