diff for duplicates of <202603241328.naBWhr1K-lkp@intel.com> diff --git a/a/1.txt b/N1/1.txt index b7c5e5e..ac3e838 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,16 +1,6 @@ -BCC: lkp@intel.com -CC: oe-kbuild-all@lists.linux.dev -CC: linux-kernel@vger.kernel.org -TO: Mahesh Rao <mahesh.rao@altera.com> -CC: Dinh Nguyen <dinguyen@kernel.org> -CC: Matthew Gerlach <matthew.gerlach@altera.com> - tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: c369299895a591d96745d6492d4888259b004a9e commit: bcb9f4f0706147afc62c48533276a18fe7b8f354 firmware: stratix10-svc: Add support for async communication -date: 4 months ago -:::::: branch date: 31 hours ago -:::::: commit date: 4 months ago config: arm64-randconfig-r072-20260324 (https://download.01.org/0day-ci/archive/20260324/202603241328.naBWhr1K-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 14.3.0 smatch: v0.5.0-9004-gb810ac53 @@ -18,13 +8,12 @@ smatch: v0.5.0-9004-gb810ac53 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> -| Reported-by: Dan Carpenter <error27@gmail.com> +| Reported-by: Dan Carpenter <dan.carpenter@linaro.org> | Closes: https://lore.kernel.org/r/202603241328.naBWhr1K-lkp@intel.com/ New smatch warnings: drivers/firmware/stratix10-svc.c:1119 stratix10_svc_add_async_client() error: Calling ida_alloc_max() with a 'max' argument which is a power of 2. -1 missing? drivers/firmware/stratix10-svc.c:1256 stratix10_svc_async_send() error: Calling ida_alloc_max() with a 'max' argument which is a power of 2. -1 missing? -drivers/firmware/stratix10-svc.c:1493 stratix10_svc_async_init() warn: always true condition '(res.a2 >= 0) => (0-u64max >= 0)' Old smatch warnings: drivers/firmware/stratix10-svc.c:1302 stratix10_svc_async_send() warn: inconsistent indenting @@ -32,26 +21,6 @@ drivers/firmware/stratix10-svc.c:1630 stratix10_svc_send() warn: inconsistent in vim +/max +1119 drivers/firmware/stratix10-svc.c -7ca5ce896524f52 Richard Gong 2018-11-13 1062 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1063 /** -bcb9f4f0706147a Mahesh Rao 2025-10-27 1064 * stratix10_svc_add_async_client - Add an asynchronous client to the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1065 * Stratix10 service channel. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1066 * @chan: Pointer to the Stratix10 service channel structure. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1067 * @use_unique_clientid: Boolean flag indicating whether to use a -bcb9f4f0706147a Mahesh Rao 2025-10-27 1068 * unique client ID. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1069 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1070 * This function adds an asynchronous client to the specified -bcb9f4f0706147a Mahesh Rao 2025-10-27 1071 * Stratix10 service channel. If the `use_unique_clientid` flag is -bcb9f4f0706147a Mahesh Rao 2025-10-27 1072 * set to true, a unique client ID is allocated for the asynchronous -bcb9f4f0706147a Mahesh Rao 2025-10-27 1073 * channel. Otherwise, a common asynchronous channel is used. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1074 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1075 * Return: 0 on success, or a negative error code on failure: -bcb9f4f0706147a Mahesh Rao 2025-10-27 1076 * -EINVAL if the channel is NULL or the async controller is -bcb9f4f0706147a Mahesh Rao 2025-10-27 1077 * not initialized. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1078 * -EALREADY if the async channel is already allocated. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1079 * -ENOMEM if memory allocation fails. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1080 * Other negative values if ID allocation fails. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1081 */ bcb9f4f0706147a Mahesh Rao 2025-10-27 1082 int stratix10_svc_add_async_client(struct stratix10_svc_chan *chan, bcb9f4f0706147a Mahesh Rao 2025-10-27 1083 bool use_unique_clientid) bcb9f4f0706147a Mahesh Rao 2025-10-27 1084 { @@ -90,6 +59,9 @@ bcb9f4f0706147a Mahesh Rao 2025-10-27 1116 bcb9f4f0706147a Mahesh Rao 2025-10-27 1117 ida_init(&achan->job_id_pool); bcb9f4f0706147a Mahesh Rao 2025-10-27 1118 bcb9f4f0706147a Mahesh Rao 2025-10-27 @1119 ret = ida_alloc_max(&actrl->async_id_pool, MAX_SDM_CLIENT_IDS, + ^^^^^^^^^^^^^^^^^^ +This should be "MAX_SDM_CLIENT_IDS - 1". + bcb9f4f0706147a Mahesh Rao 2025-10-27 1120 GFP_KERNEL); bcb9f4f0706147a Mahesh Rao 2025-10-27 1121 if (ret < 0) { bcb9f4f0706147a Mahesh Rao 2025-10-27 1122 dev_err(ctrl->dev, @@ -98,101 +70,9 @@ bcb9f4f0706147a Mahesh Rao 2025-10-27 1124 ida_destroy(&achan->job_id_pool bcb9f4f0706147a Mahesh Rao 2025-10-27 1125 kfree(achan); bcb9f4f0706147a Mahesh Rao 2025-10-27 1126 return ret; bcb9f4f0706147a Mahesh Rao 2025-10-27 1127 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1128 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1129 achan->async_client_id = ret; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1130 chan->async_chan = achan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1131 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1132 if (use_unique_clientid && -bcb9f4f0706147a Mahesh Rao 2025-10-27 1133 atomic_read(&actrl->common_achan_refcount) == 0) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1134 actrl->common_async_chan = achan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1135 atomic_inc(&actrl->common_achan_refcount); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1136 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1137 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1138 return 0; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1139 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1140 EXPORT_SYMBOL_GPL(stratix10_svc_add_async_client); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1141 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1142 /** -bcb9f4f0706147a Mahesh Rao 2025-10-27 1143 * stratix10_svc_remove_async_client - Remove an asynchronous client -bcb9f4f0706147a Mahesh Rao 2025-10-27 1144 * from the Stratix10 service -bcb9f4f0706147a Mahesh Rao 2025-10-27 1145 * channel. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1146 * @chan: Pointer to the Stratix10 service channel structure. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1147 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1148 * This function removes an asynchronous client associated with the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1149 * given service channel. It checks if the channel and the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1150 * asynchronous channel are valid, and then proceeds to decrement -bcb9f4f0706147a Mahesh Rao 2025-10-27 1151 * the reference count for the common asynchronous channel if -bcb9f4f0706147a Mahesh Rao 2025-10-27 1152 * applicable. If the reference count reaches zero, it destroys the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1153 * job ID pool and deallocates the asynchronous client ID. For -bcb9f4f0706147a Mahesh Rao 2025-10-27 1154 * non-common asynchronous channels, it directly destroys the job ID -bcb9f4f0706147a Mahesh Rao 2025-10-27 1155 * pool, deallocates the asynchronous client ID, and frees the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1156 * memory allocated for the asynchronous channel. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1157 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1158 * Return: 0 on success, -EINVAL if the channel or asynchronous -bcb9f4f0706147a Mahesh Rao 2025-10-27 1159 * channel is invalid. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1160 */ -bcb9f4f0706147a Mahesh Rao 2025-10-27 1161 int stratix10_svc_remove_async_client(struct stratix10_svc_chan *chan) -bcb9f4f0706147a Mahesh Rao 2025-10-27 1162 { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1163 struct stratix10_svc_controller *ctrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1164 struct stratix10_async_ctrl *actrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1165 struct stratix10_async_chan *achan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1166 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1167 if (!chan) -bcb9f4f0706147a Mahesh Rao 2025-10-27 1168 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1169 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1170 ctrl = chan->ctrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1171 actrl = &ctrl->actrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1172 achan = chan->async_chan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1173 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1174 if (!achan) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1175 dev_err(ctrl->dev, "async channel not allocated\n"); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1176 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1177 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1178 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1179 if (achan == actrl->common_async_chan) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1180 atomic_dec(&actrl->common_achan_refcount); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1181 if (atomic_read(&actrl->common_achan_refcount) == 0) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1182 ida_destroy(&achan->job_id_pool); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1183 ida_free(&actrl->async_id_pool, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1184 achan->async_client_id); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1185 kfree(achan); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1186 actrl->common_async_chan = NULL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1187 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1188 } else { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1189 ida_destroy(&achan->job_id_pool); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1190 ida_free(&actrl->async_id_pool, achan->async_client_id); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1191 kfree(achan); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1192 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1193 chan->async_chan = NULL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1194 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1195 return 0; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1196 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1197 EXPORT_SYMBOL_GPL(stratix10_svc_remove_async_client); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1198 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1199 /** -bcb9f4f0706147a Mahesh Rao 2025-10-27 1200 * stratix10_svc_async_send - Send an asynchronous message to the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1201 * Stratix10 service -bcb9f4f0706147a Mahesh Rao 2025-10-27 1202 * @chan: Pointer to the service channel structure -bcb9f4f0706147a Mahesh Rao 2025-10-27 1203 * @msg: Pointer to the message to be sent -bcb9f4f0706147a Mahesh Rao 2025-10-27 1204 * @handler: Pointer to the handler for the asynchronous message -bcb9f4f0706147a Mahesh Rao 2025-10-27 1205 * used by caller for later reference. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1206 * @cb: Callback function to be called upon completion -bcb9f4f0706147a Mahesh Rao 2025-10-27 1207 * @cb_arg: Argument to be passed to the callback function -bcb9f4f0706147a Mahesh Rao 2025-10-27 1208 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1209 * This function sends an asynchronous message to the SDM mailbox in -bcb9f4f0706147a Mahesh Rao 2025-10-27 1210 * EL3 secure firmware. It performs various checks and setups, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1211 * including allocating a job ID, setting up the transaction ID and -bcb9f4f0706147a Mahesh Rao 2025-10-27 1212 * packaging it to El3 firmware. The function handles different -bcb9f4f0706147a Mahesh Rao 2025-10-27 1213 * commands by setting up the appropriate arguments for the SMC call. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1214 * If the SMC call is successful, the handler is set up and the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1215 * function returns 0. If the SMC call fails, appropriate error -bcb9f4f0706147a Mahesh Rao 2025-10-27 1216 * handling is performed along with cleanup of resources. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1217 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1218 * Return: 0 on success, -EINVAL for invalid argument, -ENOMEM if -bcb9f4f0706147a Mahesh Rao 2025-10-27 1219 * memory is not available, -EAGAIN if EL3 firmware is busy, -EBADF -bcb9f4f0706147a Mahesh Rao 2025-10-27 1220 * if the message is rejected by EL3 firmware and -EIO on other -bcb9f4f0706147a Mahesh Rao 2025-10-27 1221 * errors from EL3 firmware. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1222 */ + +[ snip ] + bcb9f4f0706147a Mahesh Rao 2025-10-27 1223 int stratix10_svc_async_send(struct stratix10_svc_chan *chan, void *msg, bcb9f4f0706147a Mahesh Rao 2025-10-27 1224 void **handler, async_callback_t cb, void *cb_arg) bcb9f4f0706147a Mahesh Rao 2025-10-27 1225 { @@ -227,6 +107,9 @@ bcb9f4f0706147a Mahesh Rao 2025-10-27 1253 if (!handle) bcb9f4f0706147a Mahesh Rao 2025-10-27 1254 return -ENOMEM; bcb9f4f0706147a Mahesh Rao 2025-10-27 1255 bcb9f4f0706147a Mahesh Rao 2025-10-27 @1256 ret = ida_alloc_max(&achan->job_id_pool, MAX_SDM_JOB_IDS, + ^^^^^^^^^^^^^^^^^^ +"MAX_SDM_CLIENT_IDS - 1" as well. + bcb9f4f0706147a Mahesh Rao 2025-10-27 1257 GFP_KERNEL); bcb9f4f0706147a Mahesh Rao 2025-10-27 1258 if (ret < 0) { bcb9f4f0706147a Mahesh Rao 2025-10-27 1259 dev_err(ctrl->dev, "Failed to allocate job id\n"); @@ -272,6 +155,9 @@ bcb9f4f0706147a Mahesh Rao 2025-10-27 1298 dev_dbg(ctrl->dev, bcb9f4f0706147a Mahesh Rao 2025-10-27 1299 "Async message sent with transaction_id 0x%02x\n", bcb9f4f0706147a Mahesh Rao 2025-10-27 1300 handle->transaction_id); bcb9f4f0706147a Mahesh Rao 2025-10-27 1301 *handler = handle; + ^^^^^^^^^^^^^^^^^^ +This line is indented one tab too far. + bcb9f4f0706147a Mahesh Rao 2025-10-27 1302 return 0; bcb9f4f0706147a Mahesh Rao 2025-10-27 1303 case INTEL_SIP_SMC_STATUS_BUSY: bcb9f4f0706147a Mahesh Rao 2025-10-27 1304 dev_warn(ctrl->dev, "Mailbox is busy, try after some time\n"); @@ -280,98 +166,6 @@ bcb9f4f0706147a Mahesh Rao 2025-10-27 1306 break; bcb9f4f0706147a Mahesh Rao 2025-10-27 1307 case INTEL_SIP_SMC_STATUS_REJECTED: bcb9f4f0706147a Mahesh Rao 2025-10-27 1308 dev_err(ctrl->dev, "Async message rejected\n"); bcb9f4f0706147a Mahesh Rao 2025-10-27 1309 ret = -EBADF; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1310 break; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1311 default: -bcb9f4f0706147a Mahesh Rao 2025-10-27 1312 dev_err(ctrl->dev, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1313 "Failed to send async message ,got status as %ld\n", -bcb9f4f0706147a Mahesh Rao 2025-10-27 1314 res.a0); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1315 ret = -EIO; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1316 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1317 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1318 scoped_guard(spinlock_bh, &actrl->trx_list_lock) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1319 hash_del(&handle->next); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1320 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1321 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1322 deallocate_id: -bcb9f4f0706147a Mahesh Rao 2025-10-27 1323 ida_free(&achan->job_id_pool, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1324 STRATIX10_GET_JOBID(handle->transaction_id)); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1325 kfree(handle); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1326 return ret; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1327 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1328 EXPORT_SYMBOL_GPL(stratix10_svc_async_send); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1329 /** -bcb9f4f0706147a Mahesh Rao 2025-10-27 1330 * stratix10_svc_async_poll - Polls the status of an asynchronous -bcb9f4f0706147a Mahesh Rao 2025-10-27 1331 * transaction. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1332 * @chan: Pointer to the service channel structure. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1333 * @tx_handle: Handle to the transaction being polled. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1334 * @data: Pointer to the callback data structure. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1335 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1336 * This function polls the status of an asynchronous transaction -bcb9f4f0706147a Mahesh Rao 2025-10-27 1337 * identified by the given transaction handle. It ensures that the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1338 * necessary structures are initialized and valid before proceeding -bcb9f4f0706147a Mahesh Rao 2025-10-27 1339 * with the poll operation. The function sets up the necessary -bcb9f4f0706147a Mahesh Rao 2025-10-27 1340 * arguments for the SMC call, invokes the call, and prepares the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1341 * response data if the call is successful. If the call fails, the -bcb9f4f0706147a Mahesh Rao 2025-10-27 1342 * function returns the error mapped to the SVC status error. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1343 * -bcb9f4f0706147a Mahesh Rao 2025-10-27 1344 * Return: 0 on success, -EINVAL if any input parameter is invalid, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1345 * -EAGAIN if the transaction is still in progress, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1346 * -EPERM if the command is invalid, or other negative -bcb9f4f0706147a Mahesh Rao 2025-10-27 1347 * error codes on failure. -bcb9f4f0706147a Mahesh Rao 2025-10-27 1348 */ -bcb9f4f0706147a Mahesh Rao 2025-10-27 1349 int stratix10_svc_async_poll(struct stratix10_svc_chan *chan, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1350 void *tx_handle, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1351 struct stratix10_svc_cb_data *data) -bcb9f4f0706147a Mahesh Rao 2025-10-27 1352 { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1353 struct stratix10_svc_async_handler *handle; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1354 struct arm_smccc_1_2_regs args = { 0 }; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1355 struct stratix10_svc_controller *ctrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1356 struct stratix10_async_ctrl *actrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1357 struct stratix10_async_chan *achan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1358 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1359 if (!chan || !tx_handle || !data) -bcb9f4f0706147a Mahesh Rao 2025-10-27 1360 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1361 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1362 ctrl = chan->ctrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1363 actrl = &ctrl->actrl; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1364 achan = chan->async_chan; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1365 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1366 if (!achan) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1367 dev_err(ctrl->dev, "Async channel not allocated\n"); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1368 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1369 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1370 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1371 handle = (struct stratix10_svc_async_handler *)tx_handle; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1372 scoped_guard(spinlock_bh, &actrl->trx_list_lock) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1373 if (!hash_hashed(&handle->next)) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1374 dev_err(ctrl->dev, "Invalid transaction handler"); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1375 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1376 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1377 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1378 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1379 args.a0 = INTEL_SIP_SMC_ASYNC_POLL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1380 args.a1 = -bcb9f4f0706147a Mahesh Rao 2025-10-27 1381 STRATIX10_SIP_SMC_SET_TRANSACTIONID_X1(handle->transaction_id); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1382 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1383 actrl->invoke_fn(actrl, &args, &handle->res); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1384 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1385 /*clear data for response*/ -bcb9f4f0706147a Mahesh Rao 2025-10-27 1386 memset(data, 0, sizeof(*data)); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1387 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1388 if (handle->res.a0 == INTEL_SIP_SMC_STATUS_OK) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1389 return 0; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1390 } else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY) { -bcb9f4f0706147a Mahesh Rao 2025-10-27 1391 dev_dbg(ctrl->dev, "async message is still in progress\n"); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1392 return -EAGAIN; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1393 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1394 -bcb9f4f0706147a Mahesh Rao 2025-10-27 1395 dev_err(ctrl->dev, -bcb9f4f0706147a Mahesh Rao 2025-10-27 1396 "Failed to poll async message ,got status as %ld\n", -bcb9f4f0706147a Mahesh Rao 2025-10-27 1397 handle->res.a0); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1398 return -EINVAL; -bcb9f4f0706147a Mahesh Rao 2025-10-27 1399 } -bcb9f4f0706147a Mahesh Rao 2025-10-27 1400 EXPORT_SYMBOL_GPL(stratix10_svc_async_poll); -bcb9f4f0706147a Mahesh Rao 2025-10-27 1401 -- 0-DAY CI Kernel Test Service diff --git a/a/content_digest b/N1/content_digest index 602983f..2eea9cc 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,24 +1,18 @@ - "From\0kernel test robot <lkp@intel.com>\0" + "From\0Dan Carpenter <dan.carpenter@linaro.org>\0" "Subject\0drivers/firmware/stratix10-svc.c:1119 stratix10_svc_add_async_client() error: Calling ida_alloc_max() with a 'max' argument which is a power of 2. -1 missing?\0" - "Date\0Tue, 24 Mar 2026 13:14:38 +0800\0" - "To\0oe-kbuild@lists.linux.dev\0" + "Date\0Tue, 24 Mar 2026 09:51:39 +0300\0" + "To\0oe-kbuild@lists.linux.dev" + " Mahesh Rao <mahesh.rao@altera.com>\0" "Cc\0lkp@intel.com" - " Dan Carpenter <error27@gmail.com>\0" + oe-kbuild-all@lists.linux.dev + linux-kernel@vger.kernel.org + Dinh Nguyen <dinguyen@kernel.org> + " Matthew Gerlach <matthew.gerlach@altera.com>\0" "\00:1\0" "b\0" - "BCC: lkp@intel.com\n" - "CC: oe-kbuild-all@lists.linux.dev\n" - "CC: linux-kernel@vger.kernel.org\n" - "TO: Mahesh Rao <mahesh.rao@altera.com>\n" - "CC: Dinh Nguyen <dinguyen@kernel.org>\n" - "CC: Matthew Gerlach <matthew.gerlach@altera.com>\n" - "\n" "tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master\n" "head: c369299895a591d96745d6492d4888259b004a9e\n" "commit: bcb9f4f0706147afc62c48533276a18fe7b8f354 firmware: stratix10-svc: Add support for async communication\n" - "date: 4 months ago\n" - ":::::: branch date: 31 hours ago\n" - ":::::: commit date: 4 months ago\n" "config: arm64-randconfig-r072-20260324 (https://download.01.org/0day-ci/archive/20260324/202603241328.naBWhr1K-lkp@intel.com/config)\n" "compiler: aarch64-linux-gcc (GCC) 14.3.0\n" "smatch: v0.5.0-9004-gb810ac53\n" @@ -26,13 +20,12 @@ "If you fix the issue in a separate patch/commit (i.e. not just a new version of\n" "the same patch/commit), kindly add following tags\n" "| Reported-by: kernel test robot <lkp@intel.com>\n" - "| Reported-by: Dan Carpenter <error27@gmail.com>\n" + "| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>\n" "| Closes: https://lore.kernel.org/r/202603241328.naBWhr1K-lkp@intel.com/\n" "\n" "New smatch warnings:\n" "drivers/firmware/stratix10-svc.c:1119 stratix10_svc_add_async_client() error: Calling ida_alloc_max() with a 'max' argument which is a power of 2. -1 missing?\n" "drivers/firmware/stratix10-svc.c:1256 stratix10_svc_async_send() error: Calling ida_alloc_max() with a 'max' argument which is a power of 2. -1 missing?\n" - "drivers/firmware/stratix10-svc.c:1493 stratix10_svc_async_init() warn: always true condition '(res.a2 >= 0) => (0-u64max >= 0)'\n" "\n" "Old smatch warnings:\n" "drivers/firmware/stratix10-svc.c:1302 stratix10_svc_async_send() warn: inconsistent indenting\n" @@ -40,26 +33,6 @@ "\n" "vim +/max +1119 drivers/firmware/stratix10-svc.c\n" "\n" - "7ca5ce896524f52 Richard Gong 2018-11-13 1062 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1063 /**\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1064 * stratix10_svc_add_async_client - Add an asynchronous client to the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1065 * Stratix10 service channel.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1066 * @chan: Pointer to the Stratix10 service channel structure.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1067 * @use_unique_clientid: Boolean flag indicating whether to use a\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1068 * unique client ID.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1069 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1070 * This function adds an asynchronous client to the specified\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1071 * Stratix10 service channel. If the `use_unique_clientid` flag is\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1072 * set to true, a unique client ID is allocated for the asynchronous\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1073 * channel. Otherwise, a common asynchronous channel is used.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1074 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1075 * Return: 0 on success, or a negative error code on failure:\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1076 * -EINVAL if the channel is NULL or the async controller is\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1077 * not initialized.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1078 * -EALREADY if the async channel is already allocated.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1079 * -ENOMEM if memory allocation fails.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1080 * Other negative values if ID allocation fails.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1081 */\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1082 int stratix10_svc_add_async_client(struct stratix10_svc_chan *chan,\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1083 \t\t\t\t bool use_unique_clientid)\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1084 {\n" @@ -98,6 +71,9 @@ "bcb9f4f0706147a Mahesh Rao 2025-10-27 1117 \tida_init(&achan->job_id_pool);\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1118 \n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 @1119 \tret = ida_alloc_max(&actrl->async_id_pool, MAX_SDM_CLIENT_IDS,\n" + " ^^^^^^^^^^^^^^^^^^\n" + "This should be \"MAX_SDM_CLIENT_IDS - 1\".\n" + "\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1120 \t\t\t GFP_KERNEL);\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1121 \tif (ret < 0) {\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1122 \t\tdev_err(ctrl->dev,\n" @@ -106,101 +82,9 @@ "bcb9f4f0706147a Mahesh Rao 2025-10-27 1125 \t\tkfree(achan);\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1126 \t\treturn ret;\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1127 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1128 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1129 \tachan->async_client_id = ret;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1130 \tchan->async_chan = achan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1131 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1132 \tif (use_unique_clientid &&\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1133 \t atomic_read(&actrl->common_achan_refcount) == 0) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1134 \t\tactrl->common_async_chan = achan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1135 \t\tatomic_inc(&actrl->common_achan_refcount);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1136 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1137 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1138 \treturn 0;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1139 }\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1140 EXPORT_SYMBOL_GPL(stratix10_svc_add_async_client);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1141 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1142 /**\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1143 * stratix10_svc_remove_async_client - Remove an asynchronous client\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1144 * from the Stratix10 service\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1145 * channel.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1146 * @chan: Pointer to the Stratix10 service channel structure.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1147 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1148 * This function removes an asynchronous client associated with the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1149 * given service channel. It checks if the channel and the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1150 * asynchronous channel are valid, and then proceeds to decrement\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1151 * the reference count for the common asynchronous channel if\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1152 * applicable. If the reference count reaches zero, it destroys the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1153 * job ID pool and deallocates the asynchronous client ID. For\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1154 * non-common asynchronous channels, it directly destroys the job ID\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1155 * pool, deallocates the asynchronous client ID, and frees the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1156 * memory allocated for the asynchronous channel.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1157 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1158 * Return: 0 on success, -EINVAL if the channel or asynchronous\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1159 * channel is invalid.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1160 */\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1161 int stratix10_svc_remove_async_client(struct stratix10_svc_chan *chan)\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1162 {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1163 \tstruct stratix10_svc_controller *ctrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1164 \tstruct stratix10_async_ctrl *actrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1165 \tstruct stratix10_async_chan *achan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1166 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1167 \tif (!chan)\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1168 \t\treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1169 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1170 \tctrl = chan->ctrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1171 \tactrl = &ctrl->actrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1172 \tachan = chan->async_chan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1173 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1174 \tif (!achan) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1175 \t\tdev_err(ctrl->dev, \"async channel not allocated\\n\");\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1176 \t\treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1177 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1178 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1179 \tif (achan == actrl->common_async_chan) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1180 \t\tatomic_dec(&actrl->common_achan_refcount);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1181 \t\tif (atomic_read(&actrl->common_achan_refcount) == 0) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1182 \t\t\tida_destroy(&achan->job_id_pool);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1183 \t\t\tida_free(&actrl->async_id_pool,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1184 \t\t\t\t achan->async_client_id);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1185 \t\t\tkfree(achan);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1186 \t\t\tactrl->common_async_chan = NULL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1187 \t\t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1188 \t} else {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1189 \t\tida_destroy(&achan->job_id_pool);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1190 \t\tida_free(&actrl->async_id_pool, achan->async_client_id);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1191 \t\tkfree(achan);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1192 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1193 \tchan->async_chan = NULL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1194 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1195 \treturn 0;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1196 }\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1197 EXPORT_SYMBOL_GPL(stratix10_svc_remove_async_client);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1198 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1199 /**\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1200 * stratix10_svc_async_send - Send an asynchronous message to the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1201 * Stratix10 service\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1202 * @chan: Pointer to the service channel structure\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1203 * @msg: Pointer to the message to be sent\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1204 * @handler: Pointer to the handler for the asynchronous message\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1205 * used by caller for later reference.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1206 * @cb: Callback function to be called upon completion\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1207 * @cb_arg: Argument to be passed to the callback function\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1208 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1209 * This function sends an asynchronous message to the SDM mailbox in\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1210 * EL3 secure firmware. It performs various checks and setups,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1211 * including allocating a job ID, setting up the transaction ID and\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1212 * packaging it to El3 firmware. The function handles different\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1213 * commands by setting up the appropriate arguments for the SMC call.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1214 * If the SMC call is successful, the handler is set up and the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1215 * function returns 0. If the SMC call fails, appropriate error\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1216 * handling is performed along with cleanup of resources.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1217 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1218 * Return: 0 on success, -EINVAL for invalid argument, -ENOMEM if\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1219 * memory is not available, -EAGAIN if EL3 firmware is busy, -EBADF\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1220 * if the message is rejected by EL3 firmware and -EIO on other\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1221 * errors from EL3 firmware.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1222 */\n" + "\n" + "[ snip ]\n" + "\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1223 int stratix10_svc_async_send(struct stratix10_svc_chan *chan, void *msg,\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1224 \t\t\t void **handler, async_callback_t cb, void *cb_arg)\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1225 {\n" @@ -235,6 +119,9 @@ "bcb9f4f0706147a Mahesh Rao 2025-10-27 1254 \t\treturn -ENOMEM;\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1255 \n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 @1256 \tret = ida_alloc_max(&achan->job_id_pool, MAX_SDM_JOB_IDS,\n" + " ^^^^^^^^^^^^^^^^^^\n" + "\"MAX_SDM_CLIENT_IDS - 1\" as well.\n" + "\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1257 \t\t\t GFP_KERNEL);\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1258 \tif (ret < 0) {\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1259 \t\tdev_err(ctrl->dev, \"Failed to allocate job id\\n\");\n" @@ -280,6 +167,9 @@ "bcb9f4f0706147a Mahesh Rao 2025-10-27 1299 \t\t\t\"Async message sent with transaction_id 0x%02x\\n\",\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1300 \t\t\thandle->transaction_id);\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1301 \t\t\t*handler = handle;\n" + " ^^^^^^^^^^^^^^^^^^\n" + "This line is indented one tab too far.\n" + "\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1302 \t\treturn 0;\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1303 \tcase INTEL_SIP_SMC_STATUS_BUSY:\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1304 \t\tdev_warn(ctrl->dev, \"Mailbox is busy, try after some time\\n\");\n" @@ -288,101 +178,9 @@ "bcb9f4f0706147a Mahesh Rao 2025-10-27 1307 \tcase INTEL_SIP_SMC_STATUS_REJECTED:\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1308 \t\tdev_err(ctrl->dev, \"Async message rejected\\n\");\n" "bcb9f4f0706147a Mahesh Rao 2025-10-27 1309 \t\tret = -EBADF;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1310 \t\tbreak;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1311 \tdefault:\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1312 \t\tdev_err(ctrl->dev,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1313 \t\t\t\"Failed to send async message ,got status as %ld\\n\",\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1314 \t\t\tres.a0);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1315 \t\tret = -EIO;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1316 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1317 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1318 \tscoped_guard(spinlock_bh, &actrl->trx_list_lock) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1319 \t\thash_del(&handle->next);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1320 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1321 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1322 deallocate_id:\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1323 \tida_free(&achan->job_id_pool,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1324 \t\t STRATIX10_GET_JOBID(handle->transaction_id));\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1325 \tkfree(handle);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1326 \treturn ret;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1327 }\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1328 EXPORT_SYMBOL_GPL(stratix10_svc_async_send);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1329 /**\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1330 * stratix10_svc_async_poll - Polls the status of an asynchronous\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1331 * transaction.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1332 * @chan: Pointer to the service channel structure.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1333 * @tx_handle: Handle to the transaction being polled.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1334 * @data: Pointer to the callback data structure.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1335 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1336 * This function polls the status of an asynchronous transaction\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1337 * identified by the given transaction handle. It ensures that the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1338 * necessary structures are initialized and valid before proceeding\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1339 * with the poll operation. The function sets up the necessary\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1340 * arguments for the SMC call, invokes the call, and prepares the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1341 * response data if the call is successful. If the call fails, the\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1342 * function returns the error mapped to the SVC status error.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1343 *\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1344 * Return: 0 on success, -EINVAL if any input parameter is invalid,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1345 * -EAGAIN if the transaction is still in progress,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1346 * -EPERM if the command is invalid, or other negative\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1347 * error codes on failure.\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1348 */\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1349 int stratix10_svc_async_poll(struct stratix10_svc_chan *chan,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1350 \t\t\t void *tx_handle,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1351 \t\t\t struct stratix10_svc_cb_data *data)\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1352 {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1353 \tstruct stratix10_svc_async_handler *handle;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1354 \tstruct arm_smccc_1_2_regs args = { 0 };\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1355 \tstruct stratix10_svc_controller *ctrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1356 \tstruct stratix10_async_ctrl *actrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1357 \tstruct stratix10_async_chan *achan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1358 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1359 \tif (!chan || !tx_handle || !data)\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1360 \t\treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1361 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1362 \tctrl = chan->ctrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1363 \tactrl = &ctrl->actrl;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1364 \tachan = chan->async_chan;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1365 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1366 \tif (!achan) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1367 \t\tdev_err(ctrl->dev, \"Async channel not allocated\\n\");\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1368 \t\treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1369 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1370 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1371 \thandle = (struct stratix10_svc_async_handler *)tx_handle;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1372 \tscoped_guard(spinlock_bh, &actrl->trx_list_lock) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1373 \t\tif (!hash_hashed(&handle->next)) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1374 \t\t\tdev_err(ctrl->dev, \"Invalid transaction handler\");\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1375 \t\t\treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1376 \t\t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1377 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1378 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1379 \targs.a0 = INTEL_SIP_SMC_ASYNC_POLL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1380 \targs.a1 =\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1381 \t\tSTRATIX10_SIP_SMC_SET_TRANSACTIONID_X1(handle->transaction_id);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1382 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1383 \tactrl->invoke_fn(actrl, &args, &handle->res);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1384 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1385 \t/*clear data for response*/\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1386 \tmemset(data, 0, sizeof(*data));\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1387 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1388 \tif (handle->res.a0 == INTEL_SIP_SMC_STATUS_OK) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1389 \t\treturn 0;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1390 \t} else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY) {\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1391 \t\tdev_dbg(ctrl->dev, \"async message is still in progress\\n\");\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1392 \t\treturn -EAGAIN;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1393 \t}\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1394 \n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1395 \tdev_err(ctrl->dev,\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1396 \t\t\"Failed to poll async message ,got status as %ld\\n\",\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1397 \t\thandle->res.a0);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1398 \treturn -EINVAL;\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1399 }\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1400 EXPORT_SYMBOL_GPL(stratix10_svc_async_poll);\n" - "bcb9f4f0706147a Mahesh Rao 2025-10-27 1401 \n" "\n" "-- \n" "0-DAY CI Kernel Test Service\n" https://github.com/intel/lkp-tests/wiki -43a3d570f1a666e6b5a7362389bdb39bfd80fe5e0c5686b7c27477d6dbbd9b96 +a79998f15b0f7959a90bbd5045d1661e29eb2bb462dd178c23b7e0b52d4b04a4
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.