forked from Minki/linux
scsi: ipr: Format HCAM overlay ID 0x41
This patch adds formatting error overlay 0x41 to improve debug capabilities. Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com> Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
7931cd918f
commit
15c5a5e076
@ -2412,6 +2412,28 @@ static void ipr_log_sis64_fabric_error(struct ipr_ioa_cfg *ioa_cfg,
|
||||
ipr_log_hex_data(ioa_cfg, (__be32 *)fabric, add_len);
|
||||
}
|
||||
|
||||
/**
|
||||
* ipr_log_sis64_service_required_error - Log a sis64 service required error.
|
||||
* @ioa_cfg: ioa config struct
|
||||
* @hostrcb: hostrcb struct
|
||||
*
|
||||
* Return value:
|
||||
* none
|
||||
**/
|
||||
static void ipr_log_sis64_service_required_error(struct ipr_ioa_cfg *ioa_cfg,
|
||||
struct ipr_hostrcb *hostrcb)
|
||||
{
|
||||
struct ipr_hostrcb_type_41_error *error;
|
||||
|
||||
error = &hostrcb->hcam.u.error64.u.type_41_error;
|
||||
|
||||
error->failure_reason[sizeof(error->failure_reason) - 1] = '\0';
|
||||
ipr_err("Primary Failure Reason: %s\n", error->failure_reason);
|
||||
ipr_log_hex_data(ioa_cfg, error->data,
|
||||
be32_to_cpu(hostrcb->hcam.length) -
|
||||
(offsetof(struct ipr_hostrcb_error, u) +
|
||||
offsetof(struct ipr_hostrcb_type_41_error, data)));
|
||||
}
|
||||
/**
|
||||
* ipr_log_generic_error - Log an adapter error.
|
||||
* @ioa_cfg: ioa config struct
|
||||
@ -2587,6 +2609,9 @@ static void ipr_handle_log_data(struct ipr_ioa_cfg *ioa_cfg,
|
||||
case IPR_HOST_RCB_OVERLAY_ID_30:
|
||||
ipr_log_sis64_fabric_error(ioa_cfg, hostrcb);
|
||||
break;
|
||||
case IPR_HOST_RCB_OVERLAY_ID_41:
|
||||
ipr_log_sis64_service_required_error(ioa_cfg, hostrcb);
|
||||
break;
|
||||
case IPR_HOST_RCB_OVERLAY_ID_1:
|
||||
case IPR_HOST_RCB_OVERLAY_ID_DEFAULT:
|
||||
default:
|
||||
|
@ -1135,6 +1135,11 @@ struct ipr_hostrcb_type_30_error {
|
||||
struct ipr_hostrcb64_fabric_desc desc[1];
|
||||
}__attribute__((packed, aligned (4)));
|
||||
|
||||
struct ipr_hostrcb_type_41_error {
|
||||
u8 failure_reason[64];
|
||||
__be32 data[200];
|
||||
}__attribute__((packed, aligned (4)));
|
||||
|
||||
struct ipr_hostrcb_error {
|
||||
__be32 fd_ioasc;
|
||||
struct ipr_res_addr fd_res_addr;
|
||||
@ -1173,6 +1178,7 @@ struct ipr_hostrcb64_error {
|
||||
struct ipr_hostrcb_type_23_error type_23_error;
|
||||
struct ipr_hostrcb_type_24_error type_24_error;
|
||||
struct ipr_hostrcb_type_30_error type_30_error;
|
||||
struct ipr_hostrcb_type_41_error type_41_error;
|
||||
} u;
|
||||
}__attribute__((packed, aligned (8)));
|
||||
|
||||
@ -1218,6 +1224,7 @@ struct ipr_hcam {
|
||||
#define IPR_HOST_RCB_OVERLAY_ID_24 0x24
|
||||
#define IPR_HOST_RCB_OVERLAY_ID_26 0x26
|
||||
#define IPR_HOST_RCB_OVERLAY_ID_30 0x30
|
||||
#define IPR_HOST_RCB_OVERLAY_ID_41 0x41
|
||||
#define IPR_HOST_RCB_OVERLAY_ID_DEFAULT 0xFF
|
||||
|
||||
u8 reserved1[3];
|
||||
|
Loading…
Reference in New Issue
Block a user