• Vaibhav Jain's avatar
    cxl: Force context lock during EEH flow · ea9a26d1
    Vaibhav Jain authored
    During an eeh event when the cxl card is fenced and card sysfs attr
    perst_reloads_same_image is set following warning message is seen in the
    kernel logs:
    
      Adapter context unlocked with 0 active contexts
      ------------[ cut here ]------------
      WARNING: CPU: 12 PID: 627 at
      ../drivers/misc/cxl/main.c:325 cxl_adapter_context_unlock+0x60/0x80 [cxl]
    
    Even though this warning is harmless, it clutters the kernel log
    during an eeh event. This warning is triggered as the EEH callback
    cxl_pci_error_detected doesn't obtain a context-lock before forcibly
    detaching all active context and when context-lock is released during
    call to cxl_configure_adapter from cxl_pci_slot_reset, a warning in
    cxl_adapter_context_unlock is triggered.
    
    To fix this warning, we acquire the adapter context-lock via
    cxl_adapter_context_lock() in the eeh callback
    cxl_pci_error_detected() once all the virtual AFU PHBs are notified
    and their contexts detached. The context-lock is released in
    cxl_pci_slot_reset() after the adapter is successfully reconfigured
    and before the we call the slot_reset callback on slice attached
    device-drivers.
    
    Fixes: 70b565bb ("cxl: Prevent adapter reset if an active context exists")
    Cc: stable@vger.kernel.org # v4.9+
    Reported-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: default avatarVaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Acked-by: default avatarFrederic Barrat <fbarrat@linux.vnet.ibm.com>
    Reviewed-by: default avatarMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
    Tested-by: default avatarUma Krishnan <ukrishn@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    ea9a26d1
pci.c 64.9 KB