diff options
author | Bjorn Andersson <bjorn.andersson@linaro.org> | 2017-12-12 18:58:55 -0500 |
---|---|---|
committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2017-12-19 00:50:05 -0500 |
commit | eb114f27fd3a6fd5005e07818043993bda67d8d1 (patch) | |
tree | 5985649e6d4c8e99bcb6a1aaf76d9678dd574545 /drivers/rpmsg | |
parent | c12fc4519f607f83b6874a5388bb4df0759f687c (diff) |
rpmsg: smd: Wake up all waiters
It's possible to have multiple contexts waiting for new channel events
and with an upcoming change it's possible to have multiple contexts
waiting for a full FIFO. As such we need to wake them all up.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/rpmsg')
-rw-r--r-- | drivers/rpmsg/qcom_smd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c index 1beddea6f087..0993e95bf0f5 100644 --- a/drivers/rpmsg/qcom_smd.c +++ b/drivers/rpmsg/qcom_smd.c | |||
@@ -579,7 +579,7 @@ static bool qcom_smd_channel_intr(struct qcom_smd_channel *channel) | |||
579 | 579 | ||
580 | /* Signal waiting qcom_smd_send() about the interrupt */ | 580 | /* Signal waiting qcom_smd_send() about the interrupt */ |
581 | if (!GET_TX_CHANNEL_FLAG(channel, fBLOCKREADINTR)) | 581 | if (!GET_TX_CHANNEL_FLAG(channel, fBLOCKREADINTR)) |
582 | wake_up_interruptible(&channel->fblockread_event); | 582 | wake_up_interruptible_all(&channel->fblockread_event); |
583 | 583 | ||
584 | /* Don't consume any data until we've opened the channel */ | 584 | /* Don't consume any data until we've opened the channel */ |
585 | if (channel->state != SMD_CHANNEL_OPENED) | 585 | if (channel->state != SMD_CHANNEL_OPENED) |
@@ -1191,7 +1191,7 @@ static void qcom_channel_scan_worker(struct work_struct *work) | |||
1191 | dev_dbg(&edge->dev, "new channel found: '%s'\n", channel->name); | 1191 | dev_dbg(&edge->dev, "new channel found: '%s'\n", channel->name); |
1192 | set_bit(i, edge->allocated[tbl]); | 1192 | set_bit(i, edge->allocated[tbl]); |
1193 | 1193 | ||
1194 | wake_up_interruptible(&edge->new_channel_event); | 1194 | wake_up_interruptible_all(&edge->new_channel_event); |
1195 | } | 1195 | } |
1196 | } | 1196 | } |
1197 | 1197 | ||