* drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
@ 2022-05-30 2:46 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-05-30 2:46 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 18070 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Kashyap Desai <kashyap.desai@broadcom.com>
CC: "Martin K. Petersen" <martin.petersen@oracle.com>
CC: Hannes Reinecke <hare@suse.de>
CC: Tomas Henzl <thenzl@redhat.com>
CC: Himanshu Madhani <himanshu.madhani@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: b00ed48bb0a7c295facf9036135a573a5cdbe7de
commit: c9566231cfaf448dd281cd7c516012a7e1c7e448 scsi: mpi3mr: Create operational request and reply queue pair
date: 12 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 12 months ago
config: microblaze-randconfig-m031-20220529 (https://download.01.org/0day-ci/archive/20220530/202205301009.QQK5A93y-lkp(a)intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
drivers/scsi/mpi3mr/mpi3mr_fw.c:1184 mpi3mr_create_op_req_q() error: we previously assumed 'op_req_q->q_segments' could be null (see line 1157)
Old smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:2380 mpi3mr_cleanup_ioc() warn: inconsistent indenting
vim +1077 drivers/scsi/mpi3mr/mpi3mr_fw.c
c9566231cfaf44 Kashyap Desai 2021-05-20 1013
c9566231cfaf44 Kashyap Desai 2021-05-20 1014 /**
c9566231cfaf44 Kashyap Desai 2021-05-20 1015 * mpi3mr_create_op_reply_q - create operational reply queue
c9566231cfaf44 Kashyap Desai 2021-05-20 1016 * @mrioc: Adapter instance reference
c9566231cfaf44 Kashyap Desai 2021-05-20 1017 * @qidx: operational reply queue index
c9566231cfaf44 Kashyap Desai 2021-05-20 1018 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1019 * Create operatinal reply queue by issuing MPI request
c9566231cfaf44 Kashyap Desai 2021-05-20 1020 * through admin queue.
c9566231cfaf44 Kashyap Desai 2021-05-20 1021 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1022 * Return: 0 on success, non-zero on failure.
c9566231cfaf44 Kashyap Desai 2021-05-20 1023 */
c9566231cfaf44 Kashyap Desai 2021-05-20 1024 static int mpi3mr_create_op_reply_q(struct mpi3mr_ioc *mrioc, u16 qidx)
c9566231cfaf44 Kashyap Desai 2021-05-20 1025 {
c9566231cfaf44 Kashyap Desai 2021-05-20 1026 struct mpi3_create_reply_queue_request create_req;
c9566231cfaf44 Kashyap Desai 2021-05-20 1027 struct op_reply_qinfo *op_reply_q = mrioc->op_reply_qinfo + qidx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1028 int retval = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1029 u16 reply_qid = 0, midx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1030
c9566231cfaf44 Kashyap Desai 2021-05-20 1031 reply_qid = op_reply_q->qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1032
c9566231cfaf44 Kashyap Desai 2021-05-20 1033 midx = REPLY_QUEUE_IDX_TO_MSIX_IDX(qidx, mrioc->op_reply_q_offset);
c9566231cfaf44 Kashyap Desai 2021-05-20 1034
c9566231cfaf44 Kashyap Desai 2021-05-20 1035 if (reply_qid) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1036 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1037 ioc_err(mrioc, "CreateRepQ: called for duplicate qid %d\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1038 reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1039
c9566231cfaf44 Kashyap Desai 2021-05-20 1040 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1041 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1042
c9566231cfaf44 Kashyap Desai 2021-05-20 1043 reply_qid = qidx + 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1044 op_reply_q->num_replies = MPI3MR_OP_REP_Q_QD;
c9566231cfaf44 Kashyap Desai 2021-05-20 1045 op_reply_q->ci = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1046 op_reply_q->ephase = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1047
c9566231cfaf44 Kashyap Desai 2021-05-20 @1048 if (!op_reply_q->q_segments) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1049 retval = mpi3mr_alloc_op_reply_q_segments(mrioc, qidx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1050 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1051 mpi3mr_free_op_reply_q_segments(mrioc, qidx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1052 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1053 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1054 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1055
c9566231cfaf44 Kashyap Desai 2021-05-20 1056 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf44 Kashyap Desai 2021-05-20 1057 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1058 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1059 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1060 ioc_err(mrioc, "CreateRepQ: Init command is in use\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1061 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1062 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1063 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf44 Kashyap Desai 2021-05-20 1064 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1065 mrioc->init_cmds.callback = NULL;
c9566231cfaf44 Kashyap Desai 2021-05-20 1066 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf44 Kashyap Desai 2021-05-20 1067 create_req.function = MPI3_FUNCTION_CREATE_REPLY_QUEUE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1068 create_req.queue_id = cpu_to_le16(reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1069 create_req.flags = MPI3_CREATE_REPLY_QUEUE_FLAGS_INT_ENABLE_ENABLE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1070 create_req.msix_index = cpu_to_le16(mrioc->intr_info[midx].msix_index);
c9566231cfaf44 Kashyap Desai 2021-05-20 1071 if (mrioc->enable_segqueue) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1072 create_req.flags |=
c9566231cfaf44 Kashyap Desai 2021-05-20 1073 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1074 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1075 op_reply_q->q_segment_list_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1076 } else
c9566231cfaf44 Kashyap Desai 2021-05-20 @1077 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1078 op_reply_q->q_segments[0].segment_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1079
c9566231cfaf44 Kashyap Desai 2021-05-20 1080 create_req.size = cpu_to_le16(op_reply_q->num_replies);
c9566231cfaf44 Kashyap Desai 2021-05-20 1081
c9566231cfaf44 Kashyap Desai 2021-05-20 1082 init_completion(&mrioc->init_cmds.done);
c9566231cfaf44 Kashyap Desai 2021-05-20 1083 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf44 Kashyap Desai 2021-05-20 1084 sizeof(create_req), 1);
c9566231cfaf44 Kashyap Desai 2021-05-20 1085 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1086 ioc_err(mrioc, "CreateRepQ: Admin Post failed\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1087 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1088 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1089 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf44 Kashyap Desai 2021-05-20 1090 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf44 Kashyap Desai 2021-05-20 1091 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1092 ioc_err(mrioc, "CreateRepQ: command timed out\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1093 mpi3mr_set_diagsave(mrioc);
c9566231cfaf44 Kashyap Desai 2021-05-20 1094 mpi3mr_issue_reset(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1095 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf44 Kashyap Desai 2021-05-20 1096 MPI3MR_RESET_FROM_CREATEREPQ_TIMEOUT);
c9566231cfaf44 Kashyap Desai 2021-05-20 1097 mrioc->unrecoverable = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1098 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1099 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1100 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1101 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf44 Kashyap Desai 2021-05-20 1102 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1103 ioc_err(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1104 "CreateRepQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1105 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf44 Kashyap Desai 2021-05-20 1106 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf44 Kashyap Desai 2021-05-20 1107 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1108 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1109 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1110 op_reply_q->qid = reply_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1111 mrioc->intr_info[midx].op_reply_q = op_reply_q;
c9566231cfaf44 Kashyap Desai 2021-05-20 1112
c9566231cfaf44 Kashyap Desai 2021-05-20 1113 out_unlock:
c9566231cfaf44 Kashyap Desai 2021-05-20 1114 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1115 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1116 out:
c9566231cfaf44 Kashyap Desai 2021-05-20 1117
c9566231cfaf44 Kashyap Desai 2021-05-20 1118 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1119 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1120
c9566231cfaf44 Kashyap Desai 2021-05-20 1121 /**
c9566231cfaf44 Kashyap Desai 2021-05-20 1122 * mpi3mr_create_op_req_q - create operational request queue
c9566231cfaf44 Kashyap Desai 2021-05-20 1123 * @mrioc: Adapter instance reference
c9566231cfaf44 Kashyap Desai 2021-05-20 1124 * @idx: operational request queue index
c9566231cfaf44 Kashyap Desai 2021-05-20 1125 * @reply_qid: Reply queue ID
c9566231cfaf44 Kashyap Desai 2021-05-20 1126 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1127 * Create operatinal request queue by issuing MPI request
c9566231cfaf44 Kashyap Desai 2021-05-20 1128 * through admin queue.
c9566231cfaf44 Kashyap Desai 2021-05-20 1129 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1130 * Return: 0 on success, non-zero on failure.
c9566231cfaf44 Kashyap Desai 2021-05-20 1131 */
c9566231cfaf44 Kashyap Desai 2021-05-20 1132 static int mpi3mr_create_op_req_q(struct mpi3mr_ioc *mrioc, u16 idx,
c9566231cfaf44 Kashyap Desai 2021-05-20 1133 u16 reply_qid)
c9566231cfaf44 Kashyap Desai 2021-05-20 1134 {
c9566231cfaf44 Kashyap Desai 2021-05-20 1135 struct mpi3_create_request_queue_request create_req;
c9566231cfaf44 Kashyap Desai 2021-05-20 1136 struct op_req_qinfo *op_req_q = mrioc->req_qinfo + idx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1137 int retval = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1138 u16 req_qid = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1139
c9566231cfaf44 Kashyap Desai 2021-05-20 1140 req_qid = op_req_q->qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1141
c9566231cfaf44 Kashyap Desai 2021-05-20 1142 if (req_qid) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1143 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1144 ioc_err(mrioc, "CreateReqQ: called for duplicate qid %d\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1145 req_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1146
c9566231cfaf44 Kashyap Desai 2021-05-20 1147 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1148 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1149 req_qid = idx + 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1150
c9566231cfaf44 Kashyap Desai 2021-05-20 1151 op_req_q->num_requests = MPI3MR_OP_REQ_Q_QD;
c9566231cfaf44 Kashyap Desai 2021-05-20 1152 op_req_q->ci = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1153 op_req_q->pi = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1154 op_req_q->reply_qid = reply_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1155 spin_lock_init(&op_req_q->q_lock);
c9566231cfaf44 Kashyap Desai 2021-05-20 1156
c9566231cfaf44 Kashyap Desai 2021-05-20 @1157 if (!op_req_q->q_segments) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1158 retval = mpi3mr_alloc_op_req_q_segments(mrioc, idx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1159 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1160 mpi3mr_free_op_req_q_segments(mrioc, idx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1161 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1162 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1163 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1164
c9566231cfaf44 Kashyap Desai 2021-05-20 1165 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf44 Kashyap Desai 2021-05-20 1166 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1167 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1168 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1169 ioc_err(mrioc, "CreateReqQ: Init command is in use\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1170 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1171 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1172 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf44 Kashyap Desai 2021-05-20 1173 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1174 mrioc->init_cmds.callback = NULL;
c9566231cfaf44 Kashyap Desai 2021-05-20 1175 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf44 Kashyap Desai 2021-05-20 1176 create_req.function = MPI3_FUNCTION_CREATE_REQUEST_QUEUE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1177 create_req.queue_id = cpu_to_le16(req_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1178 if (mrioc->enable_segqueue) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1179 create_req.flags =
c9566231cfaf44 Kashyap Desai 2021-05-20 1180 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1181 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1182 op_req_q->q_segment_list_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1183 } else
c9566231cfaf44 Kashyap Desai 2021-05-20 @1184 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1185 op_req_q->q_segments[0].segment_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1186 create_req.reply_queue_id = cpu_to_le16(reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1187 create_req.size = cpu_to_le16(op_req_q->num_requests);
c9566231cfaf44 Kashyap Desai 2021-05-20 1188
c9566231cfaf44 Kashyap Desai 2021-05-20 1189 init_completion(&mrioc->init_cmds.done);
c9566231cfaf44 Kashyap Desai 2021-05-20 1190 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf44 Kashyap Desai 2021-05-20 1191 sizeof(create_req), 1);
c9566231cfaf44 Kashyap Desai 2021-05-20 1192 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1193 ioc_err(mrioc, "CreateReqQ: Admin Post failed\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1194 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1195 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1196 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf44 Kashyap Desai 2021-05-20 1197 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf44 Kashyap Desai 2021-05-20 1198 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1199 ioc_err(mrioc, "CreateReqQ: command timed out\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1200 mpi3mr_set_diagsave(mrioc);
c9566231cfaf44 Kashyap Desai 2021-05-20 1201 if (mpi3mr_issue_reset(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1202 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf44 Kashyap Desai 2021-05-20 1203 MPI3MR_RESET_FROM_CREATEREQQ_TIMEOUT))
c9566231cfaf44 Kashyap Desai 2021-05-20 1204 mrioc->unrecoverable = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1205 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1206 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1207 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1208 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf44 Kashyap Desai 2021-05-20 1209 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1210 ioc_err(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1211 "CreateReqQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1212 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf44 Kashyap Desai 2021-05-20 1213 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf44 Kashyap Desai 2021-05-20 1214 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1215 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1216 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1217 op_req_q->qid = req_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1218
c9566231cfaf44 Kashyap Desai 2021-05-20 1219 out_unlock:
c9566231cfaf44 Kashyap Desai 2021-05-20 1220 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1221 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1222 out:
c9566231cfaf44 Kashyap Desai 2021-05-20 1223
c9566231cfaf44 Kashyap Desai 2021-05-20 1224 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1225 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1226
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 3+ messages in thread
* drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
@ 2022-06-01 4:42 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-06-01 4:42 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 18284 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Kashyap Desai <kashyap.desai@broadcom.com>
CC: "Martin K. Petersen" <martin.petersen@oracle.com>
CC: Hannes Reinecke <hare@suse.de>
CC: Tomas Henzl <thenzl@redhat.com>
CC: Himanshu Madhani <himanshu.madhani@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 700170bf6b4d773e328fa54ebb70ba444007c702
commit: c9566231cfaf448dd281cd7c516012a7e1c7e448 scsi: mpi3mr: Create operational request and reply queue pair
date: 12 months ago
:::::: branch date: 5 hours ago
:::::: commit date: 12 months ago
config: microblaze-randconfig-m031-20220529 (https://download.01.org/0day-ci/archive/20220601/202206011203.FAowiEzV-lkp(a)intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
drivers/scsi/mpi3mr/mpi3mr_fw.c:1184 mpi3mr_create_op_req_q() error: we previously assumed 'op_req_q->q_segments' could be null (see line 1157)
Old smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:2380 mpi3mr_cleanup_ioc() warn: inconsistent indenting
vim +1077 drivers/scsi/mpi3mr/mpi3mr_fw.c
c9566231cfaf448 Kashyap Desai 2021-05-20 1013
c9566231cfaf448 Kashyap Desai 2021-05-20 1014 /**
c9566231cfaf448 Kashyap Desai 2021-05-20 1015 * mpi3mr_create_op_reply_q - create operational reply queue
c9566231cfaf448 Kashyap Desai 2021-05-20 1016 * @mrioc: Adapter instance reference
c9566231cfaf448 Kashyap Desai 2021-05-20 1017 * @qidx: operational reply queue index
c9566231cfaf448 Kashyap Desai 2021-05-20 1018 *
c9566231cfaf448 Kashyap Desai 2021-05-20 1019 * Create operatinal reply queue by issuing MPI request
c9566231cfaf448 Kashyap Desai 2021-05-20 1020 * through admin queue.
c9566231cfaf448 Kashyap Desai 2021-05-20 1021 *
c9566231cfaf448 Kashyap Desai 2021-05-20 1022 * Return: 0 on success, non-zero on failure.
c9566231cfaf448 Kashyap Desai 2021-05-20 1023 */
c9566231cfaf448 Kashyap Desai 2021-05-20 1024 static int mpi3mr_create_op_reply_q(struct mpi3mr_ioc *mrioc, u16 qidx)
c9566231cfaf448 Kashyap Desai 2021-05-20 1025 {
c9566231cfaf448 Kashyap Desai 2021-05-20 1026 struct mpi3_create_reply_queue_request create_req;
c9566231cfaf448 Kashyap Desai 2021-05-20 1027 struct op_reply_qinfo *op_reply_q = mrioc->op_reply_qinfo + qidx;
c9566231cfaf448 Kashyap Desai 2021-05-20 1028 int retval = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1029 u16 reply_qid = 0, midx;
c9566231cfaf448 Kashyap Desai 2021-05-20 1030
c9566231cfaf448 Kashyap Desai 2021-05-20 1031 reply_qid = op_reply_q->qid;
c9566231cfaf448 Kashyap Desai 2021-05-20 1032
c9566231cfaf448 Kashyap Desai 2021-05-20 1033 midx = REPLY_QUEUE_IDX_TO_MSIX_IDX(qidx, mrioc->op_reply_q_offset);
c9566231cfaf448 Kashyap Desai 2021-05-20 1034
c9566231cfaf448 Kashyap Desai 2021-05-20 1035 if (reply_qid) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1036 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1037 ioc_err(mrioc, "CreateRepQ: called for duplicate qid %d\n",
c9566231cfaf448 Kashyap Desai 2021-05-20 1038 reply_qid);
c9566231cfaf448 Kashyap Desai 2021-05-20 1039
c9566231cfaf448 Kashyap Desai 2021-05-20 1040 return retval;
c9566231cfaf448 Kashyap Desai 2021-05-20 1041 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1042
c9566231cfaf448 Kashyap Desai 2021-05-20 1043 reply_qid = qidx + 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1044 op_reply_q->num_replies = MPI3MR_OP_REP_Q_QD;
c9566231cfaf448 Kashyap Desai 2021-05-20 1045 op_reply_q->ci = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1046 op_reply_q->ephase = 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1047
c9566231cfaf448 Kashyap Desai 2021-05-20 @1048 if (!op_reply_q->q_segments) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1049 retval = mpi3mr_alloc_op_reply_q_segments(mrioc, qidx);
c9566231cfaf448 Kashyap Desai 2021-05-20 1050 if (retval) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1051 mpi3mr_free_op_reply_q_segments(mrioc, qidx);
c9566231cfaf448 Kashyap Desai 2021-05-20 1052 goto out;
c9566231cfaf448 Kashyap Desai 2021-05-20 1053 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1054 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1055
c9566231cfaf448 Kashyap Desai 2021-05-20 1056 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf448 Kashyap Desai 2021-05-20 1057 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf448 Kashyap Desai 2021-05-20 1058 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1059 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1060 ioc_err(mrioc, "CreateRepQ: Init command is in use\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1061 goto out;
c9566231cfaf448 Kashyap Desai 2021-05-20 1062 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1063 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf448 Kashyap Desai 2021-05-20 1064 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1065 mrioc->init_cmds.callback = NULL;
c9566231cfaf448 Kashyap Desai 2021-05-20 1066 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf448 Kashyap Desai 2021-05-20 1067 create_req.function = MPI3_FUNCTION_CREATE_REPLY_QUEUE;
c9566231cfaf448 Kashyap Desai 2021-05-20 1068 create_req.queue_id = cpu_to_le16(reply_qid);
c9566231cfaf448 Kashyap Desai 2021-05-20 1069 create_req.flags = MPI3_CREATE_REPLY_QUEUE_FLAGS_INT_ENABLE_ENABLE;
c9566231cfaf448 Kashyap Desai 2021-05-20 1070 create_req.msix_index = cpu_to_le16(mrioc->intr_info[midx].msix_index);
c9566231cfaf448 Kashyap Desai 2021-05-20 1071 if (mrioc->enable_segqueue) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1072 create_req.flags |=
c9566231cfaf448 Kashyap Desai 2021-05-20 1073 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf448 Kashyap Desai 2021-05-20 1074 create_req.base_address = cpu_to_le64(
c9566231cfaf448 Kashyap Desai 2021-05-20 1075 op_reply_q->q_segment_list_dma);
c9566231cfaf448 Kashyap Desai 2021-05-20 1076 } else
c9566231cfaf448 Kashyap Desai 2021-05-20 @1077 create_req.base_address = cpu_to_le64(
c9566231cfaf448 Kashyap Desai 2021-05-20 1078 op_reply_q->q_segments[0].segment_dma);
c9566231cfaf448 Kashyap Desai 2021-05-20 1079
c9566231cfaf448 Kashyap Desai 2021-05-20 1080 create_req.size = cpu_to_le16(op_reply_q->num_replies);
c9566231cfaf448 Kashyap Desai 2021-05-20 1081
c9566231cfaf448 Kashyap Desai 2021-05-20 1082 init_completion(&mrioc->init_cmds.done);
c9566231cfaf448 Kashyap Desai 2021-05-20 1083 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf448 Kashyap Desai 2021-05-20 1084 sizeof(create_req), 1);
c9566231cfaf448 Kashyap Desai 2021-05-20 1085 if (retval) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1086 ioc_err(mrioc, "CreateRepQ: Admin Post failed\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1087 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1088 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1089 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf448 Kashyap Desai 2021-05-20 1090 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf448 Kashyap Desai 2021-05-20 1091 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1092 ioc_err(mrioc, "CreateRepQ: command timed out\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1093 mpi3mr_set_diagsave(mrioc);
c9566231cfaf448 Kashyap Desai 2021-05-20 1094 mpi3mr_issue_reset(mrioc,
c9566231cfaf448 Kashyap Desai 2021-05-20 1095 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf448 Kashyap Desai 2021-05-20 1096 MPI3MR_RESET_FROM_CREATEREPQ_TIMEOUT);
c9566231cfaf448 Kashyap Desai 2021-05-20 1097 mrioc->unrecoverable = 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1098 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1099 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1100 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1101 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf448 Kashyap Desai 2021-05-20 1102 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1103 ioc_err(mrioc,
c9566231cfaf448 Kashyap Desai 2021-05-20 1104 "CreateRepQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf448 Kashyap Desai 2021-05-20 1105 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf448 Kashyap Desai 2021-05-20 1106 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf448 Kashyap Desai 2021-05-20 1107 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1108 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1109 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1110 op_reply_q->qid = reply_qid;
c9566231cfaf448 Kashyap Desai 2021-05-20 1111 mrioc->intr_info[midx].op_reply_q = op_reply_q;
c9566231cfaf448 Kashyap Desai 2021-05-20 1112
c9566231cfaf448 Kashyap Desai 2021-05-20 1113 out_unlock:
c9566231cfaf448 Kashyap Desai 2021-05-20 1114 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf448 Kashyap Desai 2021-05-20 1115 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf448 Kashyap Desai 2021-05-20 1116 out:
c9566231cfaf448 Kashyap Desai 2021-05-20 1117
c9566231cfaf448 Kashyap Desai 2021-05-20 1118 return retval;
c9566231cfaf448 Kashyap Desai 2021-05-20 1119 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1120
c9566231cfaf448 Kashyap Desai 2021-05-20 1121 /**
c9566231cfaf448 Kashyap Desai 2021-05-20 1122 * mpi3mr_create_op_req_q - create operational request queue
c9566231cfaf448 Kashyap Desai 2021-05-20 1123 * @mrioc: Adapter instance reference
c9566231cfaf448 Kashyap Desai 2021-05-20 1124 * @idx: operational request queue index
c9566231cfaf448 Kashyap Desai 2021-05-20 1125 * @reply_qid: Reply queue ID
c9566231cfaf448 Kashyap Desai 2021-05-20 1126 *
c9566231cfaf448 Kashyap Desai 2021-05-20 1127 * Create operatinal request queue by issuing MPI request
c9566231cfaf448 Kashyap Desai 2021-05-20 1128 * through admin queue.
c9566231cfaf448 Kashyap Desai 2021-05-20 1129 *
c9566231cfaf448 Kashyap Desai 2021-05-20 1130 * Return: 0 on success, non-zero on failure.
c9566231cfaf448 Kashyap Desai 2021-05-20 1131 */
c9566231cfaf448 Kashyap Desai 2021-05-20 1132 static int mpi3mr_create_op_req_q(struct mpi3mr_ioc *mrioc, u16 idx,
c9566231cfaf448 Kashyap Desai 2021-05-20 1133 u16 reply_qid)
c9566231cfaf448 Kashyap Desai 2021-05-20 1134 {
c9566231cfaf448 Kashyap Desai 2021-05-20 1135 struct mpi3_create_request_queue_request create_req;
c9566231cfaf448 Kashyap Desai 2021-05-20 1136 struct op_req_qinfo *op_req_q = mrioc->req_qinfo + idx;
c9566231cfaf448 Kashyap Desai 2021-05-20 1137 int retval = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1138 u16 req_qid = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1139
c9566231cfaf448 Kashyap Desai 2021-05-20 1140 req_qid = op_req_q->qid;
c9566231cfaf448 Kashyap Desai 2021-05-20 1141
c9566231cfaf448 Kashyap Desai 2021-05-20 1142 if (req_qid) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1143 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1144 ioc_err(mrioc, "CreateReqQ: called for duplicate qid %d\n",
c9566231cfaf448 Kashyap Desai 2021-05-20 1145 req_qid);
c9566231cfaf448 Kashyap Desai 2021-05-20 1146
c9566231cfaf448 Kashyap Desai 2021-05-20 1147 return retval;
c9566231cfaf448 Kashyap Desai 2021-05-20 1148 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1149 req_qid = idx + 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1150
c9566231cfaf448 Kashyap Desai 2021-05-20 1151 op_req_q->num_requests = MPI3MR_OP_REQ_Q_QD;
c9566231cfaf448 Kashyap Desai 2021-05-20 1152 op_req_q->ci = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1153 op_req_q->pi = 0;
c9566231cfaf448 Kashyap Desai 2021-05-20 1154 op_req_q->reply_qid = reply_qid;
c9566231cfaf448 Kashyap Desai 2021-05-20 1155 spin_lock_init(&op_req_q->q_lock);
c9566231cfaf448 Kashyap Desai 2021-05-20 1156
c9566231cfaf448 Kashyap Desai 2021-05-20 @1157 if (!op_req_q->q_segments) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1158 retval = mpi3mr_alloc_op_req_q_segments(mrioc, idx);
c9566231cfaf448 Kashyap Desai 2021-05-20 1159 if (retval) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1160 mpi3mr_free_op_req_q_segments(mrioc, idx);
c9566231cfaf448 Kashyap Desai 2021-05-20 1161 goto out;
c9566231cfaf448 Kashyap Desai 2021-05-20 1162 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1163 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1164
c9566231cfaf448 Kashyap Desai 2021-05-20 1165 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf448 Kashyap Desai 2021-05-20 1166 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf448 Kashyap Desai 2021-05-20 1167 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1168 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1169 ioc_err(mrioc, "CreateReqQ: Init command is in use\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1170 goto out;
c9566231cfaf448 Kashyap Desai 2021-05-20 1171 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1172 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf448 Kashyap Desai 2021-05-20 1173 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1174 mrioc->init_cmds.callback = NULL;
c9566231cfaf448 Kashyap Desai 2021-05-20 1175 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf448 Kashyap Desai 2021-05-20 1176 create_req.function = MPI3_FUNCTION_CREATE_REQUEST_QUEUE;
c9566231cfaf448 Kashyap Desai 2021-05-20 1177 create_req.queue_id = cpu_to_le16(req_qid);
c9566231cfaf448 Kashyap Desai 2021-05-20 1178 if (mrioc->enable_segqueue) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1179 create_req.flags =
c9566231cfaf448 Kashyap Desai 2021-05-20 1180 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf448 Kashyap Desai 2021-05-20 1181 create_req.base_address = cpu_to_le64(
c9566231cfaf448 Kashyap Desai 2021-05-20 1182 op_req_q->q_segment_list_dma);
c9566231cfaf448 Kashyap Desai 2021-05-20 1183 } else
c9566231cfaf448 Kashyap Desai 2021-05-20 @1184 create_req.base_address = cpu_to_le64(
c9566231cfaf448 Kashyap Desai 2021-05-20 1185 op_req_q->q_segments[0].segment_dma);
c9566231cfaf448 Kashyap Desai 2021-05-20 1186 create_req.reply_queue_id = cpu_to_le16(reply_qid);
c9566231cfaf448 Kashyap Desai 2021-05-20 1187 create_req.size = cpu_to_le16(op_req_q->num_requests);
c9566231cfaf448 Kashyap Desai 2021-05-20 1188
c9566231cfaf448 Kashyap Desai 2021-05-20 1189 init_completion(&mrioc->init_cmds.done);
c9566231cfaf448 Kashyap Desai 2021-05-20 1190 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf448 Kashyap Desai 2021-05-20 1191 sizeof(create_req), 1);
c9566231cfaf448 Kashyap Desai 2021-05-20 1192 if (retval) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1193 ioc_err(mrioc, "CreateReqQ: Admin Post failed\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1194 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1195 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1196 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf448 Kashyap Desai 2021-05-20 1197 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf448 Kashyap Desai 2021-05-20 1198 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1199 ioc_err(mrioc, "CreateReqQ: command timed out\n");
c9566231cfaf448 Kashyap Desai 2021-05-20 1200 mpi3mr_set_diagsave(mrioc);
c9566231cfaf448 Kashyap Desai 2021-05-20 1201 if (mpi3mr_issue_reset(mrioc,
c9566231cfaf448 Kashyap Desai 2021-05-20 1202 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf448 Kashyap Desai 2021-05-20 1203 MPI3MR_RESET_FROM_CREATEREQQ_TIMEOUT))
c9566231cfaf448 Kashyap Desai 2021-05-20 1204 mrioc->unrecoverable = 1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1205 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1206 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1207 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1208 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf448 Kashyap Desai 2021-05-20 1209 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf448 Kashyap Desai 2021-05-20 1210 ioc_err(mrioc,
c9566231cfaf448 Kashyap Desai 2021-05-20 1211 "CreateReqQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf448 Kashyap Desai 2021-05-20 1212 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf448 Kashyap Desai 2021-05-20 1213 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf448 Kashyap Desai 2021-05-20 1214 retval = -1;
c9566231cfaf448 Kashyap Desai 2021-05-20 1215 goto out_unlock;
c9566231cfaf448 Kashyap Desai 2021-05-20 1216 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1217 op_req_q->qid = req_qid;
c9566231cfaf448 Kashyap Desai 2021-05-20 1218
c9566231cfaf448 Kashyap Desai 2021-05-20 1219 out_unlock:
c9566231cfaf448 Kashyap Desai 2021-05-20 1220 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf448 Kashyap Desai 2021-05-20 1221 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf448 Kashyap Desai 2021-05-20 1222 out:
c9566231cfaf448 Kashyap Desai 2021-05-20 1223
c9566231cfaf448 Kashyap Desai 2021-05-20 1224 return retval;
c9566231cfaf448 Kashyap Desai 2021-05-20 1225 }
c9566231cfaf448 Kashyap Desai 2021-05-20 1226
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 3+ messages in thread
* drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
@ 2022-03-29 8:24 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-03-29 8:24 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 18056 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Kashyap Desai <kashyap.desai@broadcom.com>
CC: "Martin K. Petersen" <martin.petersen@oracle.com>
CC: Hannes Reinecke <hare@suse.de>
CC: Tomas Henzl <thenzl@redhat.com>
CC: Himanshu Madhani <himanshu.madhani@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 1930a6e739c4b4a654a69164dbe39e554d228915
commit: c9566231cfaf448dd281cd7c516012a7e1c7e448 scsi: mpi3mr: Create operational request and reply queue pair
date: 10 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 10 months ago
config: csky-randconfig-m031-20220327 (https://download.01.org/0day-ci/archive/20220329/202203291613.Ribfe4dz-lkp(a)intel.com/config)
compiler: csky-linux-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048)
drivers/scsi/mpi3mr/mpi3mr_fw.c:1184 mpi3mr_create_op_req_q() error: we previously assumed 'op_req_q->q_segments' could be null (see line 1157)
Old smatch warnings:
drivers/scsi/mpi3mr/mpi3mr_fw.c:2380 mpi3mr_cleanup_ioc() warn: inconsistent indenting
vim +1077 drivers/scsi/mpi3mr/mpi3mr_fw.c
c9566231cfaf44 Kashyap Desai 2021-05-20 1013
c9566231cfaf44 Kashyap Desai 2021-05-20 1014 /**
c9566231cfaf44 Kashyap Desai 2021-05-20 1015 * mpi3mr_create_op_reply_q - create operational reply queue
c9566231cfaf44 Kashyap Desai 2021-05-20 1016 * @mrioc: Adapter instance reference
c9566231cfaf44 Kashyap Desai 2021-05-20 1017 * @qidx: operational reply queue index
c9566231cfaf44 Kashyap Desai 2021-05-20 1018 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1019 * Create operatinal reply queue by issuing MPI request
c9566231cfaf44 Kashyap Desai 2021-05-20 1020 * through admin queue.
c9566231cfaf44 Kashyap Desai 2021-05-20 1021 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1022 * Return: 0 on success, non-zero on failure.
c9566231cfaf44 Kashyap Desai 2021-05-20 1023 */
c9566231cfaf44 Kashyap Desai 2021-05-20 1024 static int mpi3mr_create_op_reply_q(struct mpi3mr_ioc *mrioc, u16 qidx)
c9566231cfaf44 Kashyap Desai 2021-05-20 1025 {
c9566231cfaf44 Kashyap Desai 2021-05-20 1026 struct mpi3_create_reply_queue_request create_req;
c9566231cfaf44 Kashyap Desai 2021-05-20 1027 struct op_reply_qinfo *op_reply_q = mrioc->op_reply_qinfo + qidx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1028 int retval = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1029 u16 reply_qid = 0, midx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1030
c9566231cfaf44 Kashyap Desai 2021-05-20 1031 reply_qid = op_reply_q->qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1032
c9566231cfaf44 Kashyap Desai 2021-05-20 1033 midx = REPLY_QUEUE_IDX_TO_MSIX_IDX(qidx, mrioc->op_reply_q_offset);
c9566231cfaf44 Kashyap Desai 2021-05-20 1034
c9566231cfaf44 Kashyap Desai 2021-05-20 1035 if (reply_qid) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1036 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1037 ioc_err(mrioc, "CreateRepQ: called for duplicate qid %d\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1038 reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1039
c9566231cfaf44 Kashyap Desai 2021-05-20 1040 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1041 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1042
c9566231cfaf44 Kashyap Desai 2021-05-20 1043 reply_qid = qidx + 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1044 op_reply_q->num_replies = MPI3MR_OP_REP_Q_QD;
c9566231cfaf44 Kashyap Desai 2021-05-20 1045 op_reply_q->ci = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1046 op_reply_q->ephase = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1047
c9566231cfaf44 Kashyap Desai 2021-05-20 @1048 if (!op_reply_q->q_segments) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1049 retval = mpi3mr_alloc_op_reply_q_segments(mrioc, qidx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1050 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1051 mpi3mr_free_op_reply_q_segments(mrioc, qidx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1052 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1053 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1054 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1055
c9566231cfaf44 Kashyap Desai 2021-05-20 1056 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf44 Kashyap Desai 2021-05-20 1057 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1058 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1059 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1060 ioc_err(mrioc, "CreateRepQ: Init command is in use\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1061 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1062 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1063 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf44 Kashyap Desai 2021-05-20 1064 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1065 mrioc->init_cmds.callback = NULL;
c9566231cfaf44 Kashyap Desai 2021-05-20 1066 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf44 Kashyap Desai 2021-05-20 1067 create_req.function = MPI3_FUNCTION_CREATE_REPLY_QUEUE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1068 create_req.queue_id = cpu_to_le16(reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1069 create_req.flags = MPI3_CREATE_REPLY_QUEUE_FLAGS_INT_ENABLE_ENABLE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1070 create_req.msix_index = cpu_to_le16(mrioc->intr_info[midx].msix_index);
c9566231cfaf44 Kashyap Desai 2021-05-20 1071 if (mrioc->enable_segqueue) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1072 create_req.flags |=
c9566231cfaf44 Kashyap Desai 2021-05-20 1073 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1074 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1075 op_reply_q->q_segment_list_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1076 } else
c9566231cfaf44 Kashyap Desai 2021-05-20 @1077 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1078 op_reply_q->q_segments[0].segment_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1079
c9566231cfaf44 Kashyap Desai 2021-05-20 1080 create_req.size = cpu_to_le16(op_reply_q->num_replies);
c9566231cfaf44 Kashyap Desai 2021-05-20 1081
c9566231cfaf44 Kashyap Desai 2021-05-20 1082 init_completion(&mrioc->init_cmds.done);
c9566231cfaf44 Kashyap Desai 2021-05-20 1083 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf44 Kashyap Desai 2021-05-20 1084 sizeof(create_req), 1);
c9566231cfaf44 Kashyap Desai 2021-05-20 1085 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1086 ioc_err(mrioc, "CreateRepQ: Admin Post failed\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1087 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1088 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1089 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf44 Kashyap Desai 2021-05-20 1090 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf44 Kashyap Desai 2021-05-20 1091 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1092 ioc_err(mrioc, "CreateRepQ: command timed out\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1093 mpi3mr_set_diagsave(mrioc);
c9566231cfaf44 Kashyap Desai 2021-05-20 1094 mpi3mr_issue_reset(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1095 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf44 Kashyap Desai 2021-05-20 1096 MPI3MR_RESET_FROM_CREATEREPQ_TIMEOUT);
c9566231cfaf44 Kashyap Desai 2021-05-20 1097 mrioc->unrecoverable = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1098 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1099 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1100 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1101 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf44 Kashyap Desai 2021-05-20 1102 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1103 ioc_err(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1104 "CreateRepQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1105 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf44 Kashyap Desai 2021-05-20 1106 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf44 Kashyap Desai 2021-05-20 1107 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1108 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1109 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1110 op_reply_q->qid = reply_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1111 mrioc->intr_info[midx].op_reply_q = op_reply_q;
c9566231cfaf44 Kashyap Desai 2021-05-20 1112
c9566231cfaf44 Kashyap Desai 2021-05-20 1113 out_unlock:
c9566231cfaf44 Kashyap Desai 2021-05-20 1114 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1115 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1116 out:
c9566231cfaf44 Kashyap Desai 2021-05-20 1117
c9566231cfaf44 Kashyap Desai 2021-05-20 1118 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1119 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1120
c9566231cfaf44 Kashyap Desai 2021-05-20 1121 /**
c9566231cfaf44 Kashyap Desai 2021-05-20 1122 * mpi3mr_create_op_req_q - create operational request queue
c9566231cfaf44 Kashyap Desai 2021-05-20 1123 * @mrioc: Adapter instance reference
c9566231cfaf44 Kashyap Desai 2021-05-20 1124 * @idx: operational request queue index
c9566231cfaf44 Kashyap Desai 2021-05-20 1125 * @reply_qid: Reply queue ID
c9566231cfaf44 Kashyap Desai 2021-05-20 1126 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1127 * Create operatinal request queue by issuing MPI request
c9566231cfaf44 Kashyap Desai 2021-05-20 1128 * through admin queue.
c9566231cfaf44 Kashyap Desai 2021-05-20 1129 *
c9566231cfaf44 Kashyap Desai 2021-05-20 1130 * Return: 0 on success, non-zero on failure.
c9566231cfaf44 Kashyap Desai 2021-05-20 1131 */
c9566231cfaf44 Kashyap Desai 2021-05-20 1132 static int mpi3mr_create_op_req_q(struct mpi3mr_ioc *mrioc, u16 idx,
c9566231cfaf44 Kashyap Desai 2021-05-20 1133 u16 reply_qid)
c9566231cfaf44 Kashyap Desai 2021-05-20 1134 {
c9566231cfaf44 Kashyap Desai 2021-05-20 1135 struct mpi3_create_request_queue_request create_req;
c9566231cfaf44 Kashyap Desai 2021-05-20 1136 struct op_req_qinfo *op_req_q = mrioc->req_qinfo + idx;
c9566231cfaf44 Kashyap Desai 2021-05-20 1137 int retval = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1138 u16 req_qid = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1139
c9566231cfaf44 Kashyap Desai 2021-05-20 1140 req_qid = op_req_q->qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1141
c9566231cfaf44 Kashyap Desai 2021-05-20 1142 if (req_qid) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1143 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1144 ioc_err(mrioc, "CreateReqQ: called for duplicate qid %d\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1145 req_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1146
c9566231cfaf44 Kashyap Desai 2021-05-20 1147 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1148 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1149 req_qid = idx + 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1150
c9566231cfaf44 Kashyap Desai 2021-05-20 1151 op_req_q->num_requests = MPI3MR_OP_REQ_Q_QD;
c9566231cfaf44 Kashyap Desai 2021-05-20 1152 op_req_q->ci = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1153 op_req_q->pi = 0;
c9566231cfaf44 Kashyap Desai 2021-05-20 1154 op_req_q->reply_qid = reply_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1155 spin_lock_init(&op_req_q->q_lock);
c9566231cfaf44 Kashyap Desai 2021-05-20 1156
c9566231cfaf44 Kashyap Desai 2021-05-20 @1157 if (!op_req_q->q_segments) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1158 retval = mpi3mr_alloc_op_req_q_segments(mrioc, idx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1159 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1160 mpi3mr_free_op_req_q_segments(mrioc, idx);
c9566231cfaf44 Kashyap Desai 2021-05-20 1161 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1162 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1163 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1164
c9566231cfaf44 Kashyap Desai 2021-05-20 1165 memset(&create_req, 0, sizeof(create_req));
c9566231cfaf44 Kashyap Desai 2021-05-20 1166 mutex_lock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1167 if (mrioc->init_cmds.state & MPI3MR_CMD_PENDING) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1168 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1169 ioc_err(mrioc, "CreateReqQ: Init command is in use\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1170 goto out;
c9566231cfaf44 Kashyap Desai 2021-05-20 1171 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1172 mrioc->init_cmds.state = MPI3MR_CMD_PENDING;
c9566231cfaf44 Kashyap Desai 2021-05-20 1173 mrioc->init_cmds.is_waiting = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1174 mrioc->init_cmds.callback = NULL;
c9566231cfaf44 Kashyap Desai 2021-05-20 1175 create_req.host_tag = cpu_to_le16(MPI3MR_HOSTTAG_INITCMDS);
c9566231cfaf44 Kashyap Desai 2021-05-20 1176 create_req.function = MPI3_FUNCTION_CREATE_REQUEST_QUEUE;
c9566231cfaf44 Kashyap Desai 2021-05-20 1177 create_req.queue_id = cpu_to_le16(req_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1178 if (mrioc->enable_segqueue) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1179 create_req.flags =
c9566231cfaf44 Kashyap Desai 2021-05-20 1180 MPI3_CREATE_REQUEST_QUEUE_FLAGS_SEGMENTED_SEGMENTED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1181 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1182 op_req_q->q_segment_list_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1183 } else
c9566231cfaf44 Kashyap Desai 2021-05-20 @1184 create_req.base_address = cpu_to_le64(
c9566231cfaf44 Kashyap Desai 2021-05-20 1185 op_req_q->q_segments[0].segment_dma);
c9566231cfaf44 Kashyap Desai 2021-05-20 1186 create_req.reply_queue_id = cpu_to_le16(reply_qid);
c9566231cfaf44 Kashyap Desai 2021-05-20 1187 create_req.size = cpu_to_le16(op_req_q->num_requests);
c9566231cfaf44 Kashyap Desai 2021-05-20 1188
c9566231cfaf44 Kashyap Desai 2021-05-20 1189 init_completion(&mrioc->init_cmds.done);
c9566231cfaf44 Kashyap Desai 2021-05-20 1190 retval = mpi3mr_admin_request_post(mrioc, &create_req,
c9566231cfaf44 Kashyap Desai 2021-05-20 1191 sizeof(create_req), 1);
c9566231cfaf44 Kashyap Desai 2021-05-20 1192 if (retval) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1193 ioc_err(mrioc, "CreateReqQ: Admin Post failed\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1194 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1195 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1196 wait_for_completion_timeout(&mrioc->init_cmds.done,
c9566231cfaf44 Kashyap Desai 2021-05-20 1197 (MPI3MR_INTADMCMD_TIMEOUT * HZ));
c9566231cfaf44 Kashyap Desai 2021-05-20 1198 if (!(mrioc->init_cmds.state & MPI3MR_CMD_COMPLETE)) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1199 ioc_err(mrioc, "CreateReqQ: command timed out\n");
c9566231cfaf44 Kashyap Desai 2021-05-20 1200 mpi3mr_set_diagsave(mrioc);
c9566231cfaf44 Kashyap Desai 2021-05-20 1201 if (mpi3mr_issue_reset(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1202 MPI3_SYSIF_HOST_DIAG_RESET_ACTION_DIAG_FAULT,
c9566231cfaf44 Kashyap Desai 2021-05-20 1203 MPI3MR_RESET_FROM_CREATEREQQ_TIMEOUT))
c9566231cfaf44 Kashyap Desai 2021-05-20 1204 mrioc->unrecoverable = 1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1205 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1206 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1207 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1208 if ((mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
c9566231cfaf44 Kashyap Desai 2021-05-20 1209 != MPI3_IOCSTATUS_SUCCESS) {
c9566231cfaf44 Kashyap Desai 2021-05-20 1210 ioc_err(mrioc,
c9566231cfaf44 Kashyap Desai 2021-05-20 1211 "CreateReqQ: Failed ioc_status(0x%04x) Loginfo(0x%08x)\n",
c9566231cfaf44 Kashyap Desai 2021-05-20 1212 (mrioc->init_cmds.ioc_status & MPI3_IOCSTATUS_STATUS_MASK),
c9566231cfaf44 Kashyap Desai 2021-05-20 1213 mrioc->init_cmds.ioc_loginfo);
c9566231cfaf44 Kashyap Desai 2021-05-20 1214 retval = -1;
c9566231cfaf44 Kashyap Desai 2021-05-20 1215 goto out_unlock;
c9566231cfaf44 Kashyap Desai 2021-05-20 1216 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1217 op_req_q->qid = req_qid;
c9566231cfaf44 Kashyap Desai 2021-05-20 1218
c9566231cfaf44 Kashyap Desai 2021-05-20 1219 out_unlock:
c9566231cfaf44 Kashyap Desai 2021-05-20 1220 mrioc->init_cmds.state = MPI3MR_CMD_NOTUSED;
c9566231cfaf44 Kashyap Desai 2021-05-20 1221 mutex_unlock(&mrioc->init_cmds.mutex);
c9566231cfaf44 Kashyap Desai 2021-05-20 1222 out:
c9566231cfaf44 Kashyap Desai 2021-05-20 1223
c9566231cfaf44 Kashyap Desai 2021-05-20 1224 return retval;
c9566231cfaf44 Kashyap Desai 2021-05-20 1225 }
c9566231cfaf44 Kashyap Desai 2021-05-20 1226
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-06-01 4:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-30 2:46 drivers/scsi/mpi3mr/mpi3mr_fw.c:1077 mpi3mr_create_op_reply_q() error: we previously assumed 'op_reply_q->q_segments' could be null (see line 1048) kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-06-01 4:42 kernel test robot
2022-03-29 8:24 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.