@@ -9003,6 +9003,52 @@ static void pqi_ctrl_offline_worker(struct work_struct *work)
9003
9003
pqi_take_ctrl_offline_deferred (ctrl_info );
9004
9004
}
9005
9005
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
+
9006
9052
static void pqi_take_ctrl_offline (struct pqi_ctrl_info * ctrl_info ,
9007
9053
enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason )
9008
9054
{
@@ -9015,7 +9061,9 @@ static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info,
9015
9061
if (!pqi_disable_ctrl_shutdown )
9016
9062
sis_shutdown_ctrl (ctrl_info , ctrl_shutdown_reason );
9017
9063
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 ));
9019
9067
schedule_work (& ctrl_info -> ctrl_offline_work );
9020
9068
}
9021
9069
0 commit comments