From: Chris Ball <chris@xxxxxxxxxx> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditional wake_up_process() on that handler at resume-time. Reported-by: Fu, Zhonghui <zhonghui.fu@xxxxxxxxxxxxxxx> [Patch suggested by Jaehoon Chung] Signed-off-by: Chris Ball <chris@xxxxxxxxxx> --- drivers/mmc/core/sdio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index e636d9e..11cc4e0 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -992,7 +992,8 @@ static int mmc_sdio_resume(struct mmc_host *host) } } - if (!err && host->sdio_irqs) + if (!err && host->sdio_irqs && + !(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) wake_up_process(host->sdio_irq_thread); mmc_release_host(host); -- 1.7.9.5 On 07/15/2014 01:14 PM, Jaehoon Chung wrote: > On 07/15/2014 11:54 AM, Fu, Zhonghui wrote: >> >> Hi, >> >> The data type of "host" is "struct mmc_host", and there is not "quirks" member in this structure. > Sorry for wrong typo. > You use the "host->caps2" instead of "host->quirks". > > > Best Regards, > Jaehoon Chung >> >> >> Thanks, >> Zhonghui >> >> On 2014/7/14 21:26, Chris Ball wrote: >>> Hi Zhonghui, >>> >>> On Tue, Jul 08 2014, Fu, Zhonghui wrote: >>>> Why add "mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;" ? How to fix this bug? >>>> >>>> Could you please give out some idea about this bug? >>> Jaehoon already gave you a patch to fix this bug. Here it is again in >>> proper patch form. Please can you test it and let us know whether it >>> fixes the crash? Thanks. >>> >>> >>> From: Chris Ball <chris@xxxxxxxxxx> >>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread >>> >>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and >>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled >>> the use of our own custom threaded IRQ handler, but left in an >>> unconditional wake_up_process() on that handler at resume-time. >>> >>> Reported-by: Fu, Zhonghui <zhonghui.fu@xxxxxxxxxxxxxxx> >>> [Patch suggested by Jaehoon Chung] >>> Signed-off-by: Chris Ball <chris@xxxxxxxxxx> >>> --- >>> drivers/mmc/core/sdio.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c >>> index e636d9e..2a128e2 100644 >>> --- a/drivers/mmc/core/sdio.c >>> +++ b/drivers/mmc/core/sdio.c >>> @@ -992,7 +992,8 @@ static int mmc_sdio_resume(struct mmc_host *host) >>> } >>> } >>> >>> - if (!err && host->sdio_irqs) >>> + if (!err && host->sdio_irqs && >>> + !(host->quirks & MMC_CAP2_SDIO_IRQ_NOTHREAD)) >>> wake_up_process(host->sdio_irq_thread); >>> mmc_release_host(host); >>> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html