]> asedeno.scripts.mit.edu Git - linux.git/commit
mmc: sdhci: Fix SDIO IRQ thread deadlock
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 27 May 2019 11:45:55 +0000 (14:45 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 28 May 2019 20:02:05 +0000 (22:02 +0200)
commit89f3c365f3e113d087f105c3acbbb5a71eee84e3
tree37d9de24d12dd88c753f29e5a4c30f19035602cb
parentc2c1e63a80d6e9bb9981fc958cd2dac5346212be
mmc: sdhci: Fix SDIO IRQ thread deadlock

Since commit c07a48c26519 ("mmc: sdhci: Remove finish_tasklet"), the IRQ
thread might be used to complete requests, but the IRQ thread is also used
to process SDIO card interrupts. This can cause a deadlock when the SDIO
processing tries to access the card since that would also require the IRQ
thread. Change SDHCI to use sdio_signal_irq() to schedule a work item
instead. That also requires implementing the ->ack_sdio_irq() mmc host op.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: c07a48c26519 ("mmc: sdhci: Remove finish_tasklet")
Reported-by: Brian Masney <masneyb@onstation.org>
Tested-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c