scsi: hisi_sas: Keep controller active between ISR of phyup and the event being processed
authorXiang Chen <chenxiang66@hisilicon.com>
Mon, 20 Dec 2021 11:21:36 +0000 (19:21 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 23 Dec 2021 04:38:31 +0000 (23:38 -0500)
commitae9b69e85eb7ecb32ddce7c04a10a3c69ad60e52
tree6548d6e7619ef3d85f7fba7e532947292ec5ca60
parentbf19aea4607cb5f4a652ab70d8d8035a72a6b8da
scsi: hisi_sas: Keep controller active between ISR of phyup and the event being processed

It is possible that controller may become suspended between processing a
phyup interrupt and the event being processed by libsas. As such, we can't
ensure the controller is active when processing the phyup event - this may
cause the phyup event to be lost or other issues.  To avoid any possible
issues, add pm_runtime_get_noresume() in phyup interrupt handler and
pm_runtime_put_sync() in the work handler exit to ensure that we stay
always active. Since we only want to call pm_runtime_get_noresume() for v3
hw, signal this will a new event, HISI_PHYE_PHY_UP_PM.

Link: https://lore.kernel.org/r/1639999298-244569-14-git-send-email-chenxiang66@hisilicon.com
Acked-by: John Garry <john.garry@huawei.com>
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas.h
drivers/scsi/hisi_sas/hisi_sas_main.c
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c