mirror of https://gitee.com/openkylin/linux.git
mmc: sdhci: Do not allow tuning procedure to be interrupted
wait_event_interruptible_timeout() will return early if the blocked process receives a signal, causing the driver to abort the tuning procedure and possibly leaving the controller in a bad state. Since the tuning command is expected to complete quickly (<50ms) and we've set a timeout, use wait_event_timeout() instead. Signed-off-by: Christopher Freeman <cfreeman@nvidia.com> Tested-by: Robert Foss <robert.foss@collabora.com> Signed-off-by: Robert Foss <robert.foss@collabora.com> Reviewed-by: Benson Leung <bleung@chromium.org> Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
2fb0b02b79
commit
622b5f35da
|
@ -2062,7 +2062,7 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&host->lock, flags);
|
spin_unlock_irqrestore(&host->lock, flags);
|
||||||
/* Wait for Buffer Read Ready interrupt */
|
/* Wait for Buffer Read Ready interrupt */
|
||||||
wait_event_interruptible_timeout(host->buf_ready_int,
|
wait_event_timeout(host->buf_ready_int,
|
||||||
(host->tuning_done == 1),
|
(host->tuning_done == 1),
|
||||||
msecs_to_jiffies(50));
|
msecs_to_jiffies(50));
|
||||||
spin_lock_irqsave(&host->lock, flags);
|
spin_lock_irqsave(&host->lock, flags);
|
||||||
|
|
Loading…
Reference in New Issue