• Oliver O'Halloran's avatar
    powerpc/eeh: Fix eeh_dev_check_failure() for PE#0 · 99f6e979
    Oliver O'Halloran authored
    In commit 269e5833 ("powerpc/eeh: Delete eeh_pe->config_addr") the
    following simplification was made:
    
    -       if (!pe->addr && !pe->config_addr) {
    +       if (!pe->addr) {
                    eeh_stats.no_cfg_addr++;
                    return 0;
            }
    
    This introduced a bug which causes EEH checking to be skipped for
    devices in PE#0.
    
    Before the change above the check would always pass since at least one
    of the two PE addresses would be non-zero in all circumstances. On
    PowerNV pe->config_addr would be the BDFN of the first device added to
    the PE. The zero BDFN is reserved for the PHB's root port, but this is
    fine since for obscure platform reasons the root port is never
    assigned to PE#0.
    
    Similarly, on pseries pe->addr has always been non-zero for the
    reasons outlined in commit 42de19d5 ("powerpc/pseries/eeh: Allow
    zero to be a valid PE configuration address").
    
    We can fix the problem by deleting the block entirely The original
    purpose of this test was to avoid performing EEH checks on devices
    that were not on an EEH capable bus. In modern Linux the edev->pe
    pointer will be NULL for devices that are not on an EEH capable bus.
    The code block immediately above this one already checks for the
    edev->pe == NULL case so this test (new and old) is entirely
    redundant.
    
    Ideally we'd delete eeh_stats.no_cfg_addr too since nothing increments
    it any more. Unfortunately, that information is exposed via
    /proc/powerpc/eeh which means it's technically ABI. We could make it
    hard-coded, but that's a change for another patch.
    
    Fixes: 269e5833 ("powerpc/eeh: Delete eeh_pe->config_addr")
    Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20201021232554.1434687-1-oohall@gmail.com
    99f6e979
eeh.c 48.8 KB