On 9/27/2017 5:42 PM, Govindarajulu Varadarajan wrote: > CPU0 CPU1 > --------------------------------------------------------------------- > __driver_attach() > device_lock(&dev->mutex) <--- device mutex lock here > driver_probe_device() > pci_enable_sriov() > pci_iov_add_virtfn() > pci_device_add() > aer_isr() <--- pci aer error > do_recovery() > broadcast_error_message() > pci_walk_bus() > down_read(&pci_bus_sem) <--- rd sem How about releasing the device_lock here on CPU0? or in other words keep device_lock as short as possible? > down_write(&pci_bus_sem) <-- stuck on wr sem > report_error_detected() > device_lock(&dev->mutex)<--- DEAD LOCK -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.