]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: pm8001: Fix bogus FW crash for maxcpus=1
authorJohn Garry <john.garry@huawei.com>
Tue, 18 Jan 2022 12:15:05 +0000 (20:15 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 25 Jan 2022 04:30:27 +0000 (23:30 -0500)
commitaf4f3b83b99acb7ad74f313a5687fa0a3134414a
treec472ddb97d05d6f8d098f2e9a94ba8815f8dc253
parent16c042fc914a45cef3016d47a03dde84124213ca
scsi: pm8001: Fix bogus FW crash for maxcpus=1

According to the comment in check_fw_ready() we should not check the
IOP1_READY field in register SCRATCH_PAD_1 for 8008 or 8009 controllers.

However we check this very field in process_oq() for processing the highest
index interrupt vector. The highest interrupt vector is checked as the FW
is programmed to signal fatal errors through this irq.

Change that function to not check IOP1_READY for those mentioned
controllers, but do check ILA_READY in both cases.

The reason I assume that this was not hit earlier was because we always
allocated 64 MSI(X), and just did not pass the vector index check in
process_oq(), i.e.  the handler never ran for vector index 63.

Link: https://lore.kernel.org/r/1642508105-95432-1-git-send-email-john.garry@huawei.com
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/pm8001/pm80xx_hwi.c
drivers/scsi/pm8001/pm80xx_hwi.h