Re: [PATCH v2 0/5] mmc: Improve/fix support for SDIO IRQs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ulf,

On Wed, Apr 19, 2017 at 2:17 PM, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
> Changes in v2:
>         - Folded in a new change, patch 1/5 to fix a race condition while
>         processing SDIO IRQs.
>         - Fixed review comments provided by Dough.
>         - Updated change logs.
>         - Small changes to how ->ack_sdio_irq() is being invoked, to simplify
>         code.
>         - Added a revert patch of the dw_mmc change for runtime PM issues, which
>         was a quick fix for stable/fixes.
>
> Some general description of the series:
>
> Regressions for SDIO IRQs have been reported for dw_mmc, caused by enabling
> runtime PM support for it.
>
> This series extends and improves the SDIO IRQs support in the core, such that
> it better suites the need for dw_mmc, particulary around runtime PM.
>
> Do note, so far this is only compile tested. I would thus appreciate help in
> testing and of course also in reviewing.
>
>
> Ulf Hansson (5):
>   mmc: core: Prevent processing SDIO IRQs when none is claimed
>   mmc: sdio: Add API to manage SDIO IRQs from a workqueue
>   mmc: dw_mmc: Convert to use MMC_CAP2_SDIO_IRQ_NOTHREAD for SDIO IRQs
>   mmc: dw_mmc: Prevent runtime PM suspend when SDIO IRQs are enabled
>   Revert "mmc: dw_mmc: Don't allow Runtime PM for SDIO cards"
>
>  drivers/mmc/core/host.c     |  2 ++
>  drivers/mmc/core/sdio_irq.c | 27 +++++++++++++++++++++++++--
>  drivers/mmc/core/sdio_ops.h |  2 ++
>  drivers/mmc/host/dw_mmc.c   | 44 ++++++++++++++++++++++++++++++++------------
>  include/linux/mmc/host.h    |  3 +++
>  5 files changed, 64 insertions(+), 14 deletions(-)

On an rk3288-veyron-jerry system (with Marvell WiFi), I applied your
series atop v4.11-rc8.  I did basic tests and WiFi seemed to be
working OK.  I most certainly didn't stress things out, but doing
basic transfers / pings worked.

Oh, but maybe suspend / resume is a bit unhappy?  It's a little hard
to tell because it doesn't work 100% reliably (with respect to WiFi)
even without your changes, but with your changes it seems to be broken
worse.  AKA: i can often get suspend/resume to work without your
changes, but I've never seen it work with your changes.  I get errors
like:

[   36.498454] call ff0f0000.dwmmc+ returned 0 after 5 usecs
[   40.210761] Bluetooth: Host sleep enable command failed
[   40.216594] Bluetooth: HS not activated, suspend failed!
[   40.222537] dpm_run_callback(): pm_generic_suspend+0x0/0x48 returns -16
[   40.229923] call mmc1:0001:2+ returned -16 after 4919039 usecs
[   40.236442] PM: Device mmc1:0001:2 failed to suspend async: error -16
[   45.330750] mwifiex_sdio mmc1:0001:1: mwifiex_cmd_timeout_func:
Timeout cmd id = 0x107, act = 0x0


It appears that ("mmc: dw_mmc: Convert to use
MMC_CAP2_SDIO_IRQ_NOTHREAD for SDIO IRQs") is the one causing it.
It's plausible that dw_mmc is interacting with things in a bad way,
though.

I probably can't spend another few days debugging this this right now,
though.  :(  Anyone else on this thread want to dig?  If not, I might
be able to come back to this in a bit...


-Doug
--
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



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux