• Sam Bobroff's avatar
    powerpc/eeh: Clean up pci_ers_result handling · 30424e38
    Sam Bobroff authored
    As EEH event handling progresses, a cumulative result of type
    pci_ers_result is built up by (some of) the eeh_report_*() functions
    using either:
    	if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;
    	if (*res == PCI_ERS_RESULT_NONE) *res = rc;
    or:
    	if ((*res == PCI_ERS_RESULT_NONE) ||
    	    (*res == PCI_ERS_RESULT_RECOVERED)) *res = rc;
    	if (*res == PCI_ERS_RESULT_DISCONNECT &&
    	    rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;
    (Where *res is the accumulator.)
    
    However, the intent is not immediately clear and the result in some
    situations is order dependent.
    
    Address this by assigning a priority to each result value, and always
    merging to the highest priority. This renders the intent clear, and
    provides a stable value for all orderings.
    Signed-off-by: default avatarSam Bobroff <sbobroff@linux.ibm.com>
    [mpe: Minor formatting (clang-format)]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    30424e38
eeh_driver.c 27.7 KB