• Andrew Donnellan's avatar
    Revert "powerpc/eeh: Don't unfreeze PHB PE after reset" · dc9c41bd
    Andrew Donnellan authored
    This reverts commit 527d10ef.
    
    The reverted commit breaks cxlflash devices following an EEH reset (and
    possibly other cxl devices, however this has not been tested).
    
    The reverted commit changed the behaviour of eeh_reset_device() so that PHB
    PEs are not unfrozen following the completion of the reset. This should not
    be problematic, as no device resources should have been associated with the
    PHB PE.
    
    However, when attempting to load the cxlflash driver after a reset, the
    driver attempts to read Vital Product Data through a call to
    pci_read_vpd() (which is called on the physical cxl device, not on the
    virtual AFU device). pci_read_vpd() in turn attempts to read from the cxl
    device's config space. This fails, as the PE it's trying to read from is
    still frozen. In turn, the driver gets an -ENODEV and fails to initialise.
    
    It appears this issue only affects some parts of the VPD area, as "lspci
    -vvv", which only reads a subset of the VPD bytes, is not broken by the
    original patch.
    
    At this stage, we don't fully understand why we're trying to read a frozen
    PE, and we don't know how this affects other cxl devices. It is possible
    that there is an underlying bug in the cxl driver or the powerpc CAPI
    support code, or alternatively a bug in the PCI resource allocation/mapping
    code that is incorrectly mapping resources to PE#0.
    
    As such, this fix is incomplete, however it is necessary to prevent a
    serious regression in CAPI support.
    
    In the meantime, revert the commit, especially as it was intended to be a
    non-functional change.
    
    Cc: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Cc: Ian Munsie <imunsie@au1.ibm.com>
    Cc: Daniel Axtens <dja@axtens.net>
    Signed-off-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    dc9c41bd
eeh_driver.c 24.2 KB