[REGRESSION 4.10] dw_mmc: failures on Rockchip rk3288 veyron boards

Ulf Hansson ulf.hansson at linaro.org
Thu Apr 13 00:17:21 PDT 2017


On 12 April 2017 at 18:12, Doug Anderson <dianders at google.com> wrote:
> Shawn
>
> On Tue, Apr 11, 2017 at 5:54 PM, Shawn Lin <shawn.lin at rock-chips.com> wrote:
>>> This doesn't surprise me at all.  What surprises me, though, is that
>>> nobody else seems to be able to reproduce this.
>>>
>>> On veyron, WiFi is connected via SDIO.  For good speed, it uses SDIO
>>> Interrupts.  See this bit in the device tree:
>>>
>>>   cap-sdio-irq;
>>>
>>
>> all of *my* boards are using side-band interrupt, so there are no
>> "cap-sdio-irq".
>
> They are all using side-band interrupt?  What WiFi device do you have connected?
>
> If you're truly using a side-band interrupt using the dedicated SDIO
> interrupt pin on your SoC, I'm pretty sure you still need to define
> cap-sdio-irq in order for things to work properly.  If you don't do
> that, you'll get "polling mode" for SDIO Interrupts.  See
> sdio_irq_thread() where you can see that the kernel will poll your
> device every 10 ms if MMC_CAP_SDIO_IRQ isn't set.

In these cases I would expect the WIFI driver to deal with the SDIO
IRQ itself and not requesting it via calling sdio_claim_irq(). Because
of this, there should be no polling performed by the sdio_irq_thread.

>
> Maybe you should try defining cap-sdio-irq and see if you get a big
> performance boost?

No, that seems like a bad idea. I think it would rather add overhead -
decreasing performance. Likely it will also make us wake up the mmc
host from its low power state, when when it actually isn't needed.

Kind regards
Uffe



More information about the Linux-rockchip mailing list