Skip to content

Commit 72b737f

Browse files
David Strahanmartinkpetersen
authored andcommitted
scsi: smartpqi: Enhance controller offline notification
Add a description for the reason the controller has been taken off-line. Reviewed-by: Scott Benesh <scott.benesh@microchip.com> Reviewed-by: Scott Teel <scott.teel@microchip.com> Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com> Signed-off-by: David Strahan <David.Strahan@microchip.com> Signed-off-by: Don Brace <don.brace@microchip.com> Link: https://lore.kernel.org/r/20230824155812.789913-7-don.brace@microchip.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 276395d commit 72b737f

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

drivers/scsi/smartpqi/smartpqi_init.c

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9003,6 +9003,52 @@ static void pqi_ctrl_offline_worker(struct work_struct *work)
90039003
pqi_take_ctrl_offline_deferred(ctrl_info);
90049004
}
90059005

9006+
static char *pqi_ctrl_shutdown_reason_to_string(enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason)
9007+
{
9008+
char *string;
9009+
9010+
switch (ctrl_shutdown_reason) {
9011+
case PQI_IQ_NOT_DRAINED_TIMEOUT:
9012+
string = "inbound queue not drained timeout";
9013+
break;
9014+
case PQI_LUN_RESET_TIMEOUT:
9015+
string = "LUN reset timeout";
9016+
break;
9017+
case PQI_IO_PENDING_POST_LUN_RESET_TIMEOUT:
9018+
string = "I/O pending timeout after LUN reset";
9019+
break;
9020+
case PQI_NO_HEARTBEAT:
9021+
string = "no controller heartbeat detected";
9022+
break;
9023+
case PQI_FIRMWARE_KERNEL_NOT_UP:
9024+
string = "firmware kernel not ready";
9025+
break;
9026+
case PQI_OFA_RESPONSE_TIMEOUT:
9027+
string = "OFA response timeout";
9028+
break;
9029+
case PQI_INVALID_REQ_ID:
9030+
string = "invalid request ID";
9031+
break;
9032+
case PQI_UNMATCHED_REQ_ID:
9033+
string = "unmatched request ID";
9034+
break;
9035+
case PQI_IO_PI_OUT_OF_RANGE:
9036+
string = "I/O queue producer index out of range";
9037+
break;
9038+
case PQI_EVENT_PI_OUT_OF_RANGE:
9039+
string = "event queue producer index out of range";
9040+
break;
9041+
case PQI_UNEXPECTED_IU_TYPE:
9042+
string = "unexpected IU type";
9043+
break;
9044+
default:
9045+
string = "unknown reason";
9046+
break;
9047+
}
9048+
9049+
return string;
9050+
}
9051+
90069052
static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info,
90079053
enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason)
90089054
{
@@ -9015,7 +9061,9 @@ static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info,
90159061
if (!pqi_disable_ctrl_shutdown)
90169062
sis_shutdown_ctrl(ctrl_info, ctrl_shutdown_reason);
90179063
pci_disable_device(ctrl_info->pci_dev);
9018-
dev_err(&ctrl_info->pci_dev->dev, "controller offline\n");
9064+
dev_err(&ctrl_info->pci_dev->dev,
9065+
"controller offline: reason code 0x%x (%s)\n",
9066+
ctrl_shutdown_reason, pqi_ctrl_shutdown_reason_to_string(ctrl_shutdown_reason));
90199067
schedule_work(&ctrl_info->ctrl_offline_work);
90209068
}
90219069

0 commit comments

Comments
 (0)