Browse Source

spu-kernel: spcom: update to non-interruptible completion

Preventing RX failures due to unwanted signals.

Change-Id: If901e615702cde7387b7ca28b8972fe9d66da087
Signed-off-by: Souvik Pal <[email protected]>
Souvik Pal 9 tháng trước cách đây
mục cha
commit
a4c719e3cd
1 tập tin đã thay đổi với 7 bổ sung7 xóa
  1. 7 7
      drivers/spcom.c

+ 7 - 7
drivers/spcom.c

@@ -33,8 +33,8 @@
  * to use a dedicated logical channel for HLOS and SP Application-Pair.
  *
  * Each HLOS/SP Application can be either Client or Server or both,
- * Messaging is allways point-to-point between 2 HLOS<=>SP applications.
- * Each channel exclusevly used by single Client or Server.
+ * Messaging is always point-to-point between 2 HLOS<=>SP applications.
+ * Each channel exclusively used by single Client or Server.
  *
  * User Space Request & Response are synchronous.
  * read() & write() operations are blocking until completed or terminated.
@@ -524,10 +524,10 @@ static int spcom_rx(struct spcom_channel *ch,
 		mutex_unlock(&ch->lock); /* unlock while waiting */
 		/* wait for rx response */
 		if (timeout_msec)
-			timeleft = wait_for_completion_interruptible_timeout(
+			timeleft = wait_for_completion_killable_timeout(
 						     &ch->rx_done, jiffies);
 		else
-			ret = wait_for_completion_interruptible(&ch->rx_done);
+			ret = wait_for_completion_killable(&ch->rx_done);
 		mutex_lock(&ch->lock);
 
 		if (timeout_msec && timeleft == 0) {
@@ -541,7 +541,7 @@ static int spcom_rx(struct spcom_channel *ch,
 			ret = -ERESTART;
 			goto exit_err;
 		} else if (ret < 0 || timeleft < 0) {
-			spcom_pr_err("rx wait was interrupted!");
+			spcom_pr_err("rx wait was interrupted! PID: %d", current_pid());
 			ret = -EINTR; /* abort, not restartable */
 			goto exit_err;
 		} else if (ch->actual_rx_size) {
@@ -3038,8 +3038,8 @@ static int spcom_ioctl_handle_poll_event(struct spcom_ioctl_poll_event *arg, int
 				&spcom_dev->rpmsg_state_change);
 
 			if (ret) {/* wait was interrupted */
-				spcom_pr_info("Wait for link state change interrupted, ret[%d]\n",
-						ret);
+				spcom_pr_info("Wait for link state change interrupted, ret[%d], pid: %d\n",
+						ret, current_pid());
 				return -EINTR;
 			}
 		}