Re: SDIO bus hang on BayTrail machines

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

 



Hi Adrian,

On Thu, Feb 16, 2017 at 7:09 AM, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
> On 11/01/17 17:42, Ulf Hansson wrote:
>> On 12 December 2016 at 23:55, João Paulo Rechi Vita <jprvita@xxxxxxxxx> wrote:
>>> Hello Dong Adrian and Ulf,
>>>
>>> I'm working on enabling a BayTrail-based machine with very similar
>>> hardware to one of the Intel Compute sticks, which is an Intel
>>> BayTrail and has a RTL8723BS WiFi card on the SDIO bus. I'm using
>>> Linux 4.8 with the driver from https://github.com/hadess/rtl8723bs,
>>> and I was experiencing a complete machine hang when using the WiFi
>>> card. Passing `intel_idle.max_cstate=1` together with the following
>>> patch (with the sdhci_runtime_pm_get and sdhci_runtime_pm_put
>>> implementations added back) makes the problem go away:
>>> https://github.com/hadess/rtl8723bs/blob/master/patches_4.5/0002-mmc-sdhci-get-runtime-pm-when-sdio-irq-is-enabled.patch
>>
>> It's been a while ago and I wasn't able to dig out some information
>> from earlier discussions/submissions.
>>
>>>
>>> I could not find much information on why this was never sent upstream,
>>> and would like to know if this approach would be acceptable, or if
>>> there are any other better alternatives to solve this problem. I'm not
>>> a runtime PM expert, but as I understand this keeps the device powered
>>> on as long as interrupts are enabled, potentially increasing the power
>>> consumption. As this kernel has to run several different machines
>>> using the same code base and config, I would rather avoid something
>>> that could have a negative impact on other platforms.
>>
>> Unless the board/soc supports an option to re-configure the SDIO IRQ
>> as wakeup when entering runtime suspend state, there is no other way
>> but to keep the device runtime resumed.
>>
>> For this specific case, I have seen two different solutions for how to
>> allow the device to be runtime suspended when using SDIO IRQ.
>> 1) Re-routing the SDIO IRQ DAT line as a GPIO IRQ at runtime suspend,
>> thus a wakeup becomes enabled.
>> 2) Using a completely separate line for SDIO IRQs and thus not a DAT
>> line, configured as a GPIO IRQ.
>>
>>>
>>> Any ideas appreciated, and I'm happy to try a newer tree if you guys
>>> think some other commit might have fixed the problem.
>>
>> I think the best option right now, is something very similar to the
>> patch you point to at github above.
>
> Sorry for the *very* slow reply! :-(.  I need to find time to look at this,
> but although the patch is OK for Intel it is wrong for other SDHCI-based
> drivers which *do* runtime suspend with the clock (and perhaps the whole
> host controller) still on and thus expect SDIO interrupts *during* runtime
> suspend.

When you have time to revisit this, another proposed fix is:

mmc: sdhci: sdio-intel: Set SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON quirk
https://patchwork.kernel.org/patch/9478087/

Thanks
Daniel
--
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