ath10k + INTEL_IDLE aka. cstates == firmware crash

Fabian Wittenberg Fabian.Wittenberg at sophos.com
Thu Mar 19 02:20:35 PDT 2015


Hi Michal,

thank you for the patch. Unfortunately I didn't had time until yesterday
to test it.
This patch has nearly no influence in the reported behaviour. As soon as
I enable intel_idle
the firmware stops working.
We also did even more intense testing and figured out that even with
disabled intel_idle
sometimes the card stops working in AP mode after a long time period or
putting really heavy load.
Normally SWBA overruns are reported slightly before the cards
stops responding.

If we disable

CONFIG_IRQ_DOMAIN=n
CONFIG_IRQ_DOMAIN_DEBUG=n
CONFIG_PM_RUNTIME=n

the crash still occure after 1-3 days but the card is further working.

At the moment we are invastigating the behavior with disabled
hibernation and cpu_idle.
For now it seems to work. But this could change in the next days...

This problem drives me really crazy.

Regards,
Fabian


Am 02.03.2015 um 13:20 schrieb Michal Kazior:
> On 23 February 2015 at 15:41, Fabian Wittenberg
> <Fabian.Wittenberg at sophos.com> wrote:
>> Hi Michal,
>>
>> I already did this approach. This works fine and is the current
>> workaround to get the product out, but I would like to know what the
>> basic problem is.
>> The power consumption increases by ~1.25W on idle devices if you disable
>> cstates. This is not a real problem but a low mem corruption is one.
>> So I assume a bug in the ath10k-driver/firmware.
> Hi Fabian,
>
> Can you try the following diff with _INTEL_IDLE=y, please?
>
> --- a/drivers/net/wireless/ath/ath10k/pci.c
> +++ b/drivers/net/wireless/ath/ath10k/pci.c
> @@ -2531,6 +2531,11 @@ static int ath10k_pci_claim(struct ath10k *ar)
>
>         pci_set_master(pdev);
>
> +       /* Disable RETRY_TIMEOUT register to prevent PCI Tx retries from
> +        * interfering with C3 CPU state.
> +        */
> +       pci_write_config_byte(pdev, 0x41, 0);
> +
>         /* Workaround: Disable ASPM */
>         pci_read_config_dword(pdev, 0x80, &lcr_val);
>         pci_write_config_dword(pdev, 0x80, (lcr_val & 0xffffff00));
>
>
> Michał





More information about the ath10k mailing list