Message ID | 86zjgcjckz.fsf@void.printf.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, The data type of "host" is "struct mmc_host", and there is not "quirks" member in this structure. 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@printf.net> > 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@linux.intel.com> > [Patch suggested by Jaehoon Chung] > Signed-off-by: Chris Ball <chris@printf.net> > --- > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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@printf.net> >> 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@linux.intel.com> >> [Patch suggested by Jaehoon Chung] >> Signed-off-by: Chris Ball <chris@printf.net> >> --- >> 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@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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);