From: Heiner Kallweit <hkallweit1@gmail.com>
To: "Pali Rohár" <pali@kernel.org>, "Jonas Dreßler" <verdre@v0yd.nl>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
Amitkumar Karwar <amitkarwar@gmail.com>,
Ganapathi Bhat <ganapathi017@gmail.com>,
Xinming Hu <huxinming820@gmail.com>,
Kalle Valo <kvalo@codeaurora.org>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Tsuchiya Yuto <kitakar@gmail.com>,
"open list:TI WILINK WIRELES..." <linux-wireless@vger.kernel.org>,
netdev <netdev@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-pci <linux-pci@vger.kernel.org>,
Maximilian Luz <luzmaximilian@gmail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH 1/2] mwifiex: Use non-posted PCI register writes
Date: Wed, 1 Sep 2021 18:51:21 +0200 [thread overview]
Message-ID: <985049b8-bad7-6f18-c94f-368059dd6f95@gmail.com> (raw)
In-Reply-To: <20210901155110.xgje2qrtq65loawh@pali>
On 01.09.2021 17:51, Pali Rohár wrote:
> On Wednesday 01 September 2021 16:01:54 Jonas Dreßler wrote:
>> On 8/30/21 2:49 PM, Andy Shevchenko wrote:
>>> On Mon, Aug 30, 2021 at 3:38 PM Jonas Dreßler <verdre@v0yd.nl> wrote:
>>>>
>>>> On the 88W8897 card it's very important the TX ring write pointer is
>>>> updated correctly to its new value before setting the TX ready
>>>> interrupt, otherwise the firmware appears to crash (probably because
>>>> it's trying to DMA-read from the wrong place).
>>>>
This sounds somehow like the typical case where you write DMA descriptors
and then ring the doorbell. This normally requires a dma_wmb().
Maybe something like that is missing here?
Reading back all register writes may cause a certain performance impact,
and if it can be avoided we should try to avoid it.
>>>> Since PCI uses "posted writes" when writing to a register, it's not
>>>> guaranteed that a write will happen immediately. That means the pointer
>>>> might be outdated when setting the TX ready interrupt, leading to
>>>> firmware crashes especially when ASPM L1 and L1 substates are enabled
>>>> (because of the higher link latency, the write will probably take
>>>> longer).
>>>>
>>>> So fix those firmware crashes by always forcing non-posted writes. We do
>>>> that by simply reading back the register after writing it, just as a lot
>>>> of other drivers do.
>>>>
>>>> There are two reproducers that are fixed with this patch:
>>>>
>>>> 1) During rx/tx traffic and with ASPM L1 substates enabled (the enabled
>>>> substates are platform dependent), the firmware crashes and eventually a
>>>> command timeout appears in the logs. That crash is fixed by using a
>>>> non-posted write in mwifiex_pcie_send_data().
>>>>
>>>> 2) When sending lots of commands to the card, waking it up from sleep in
>>>> very quick intervals, the firmware eventually crashes. That crash
>>>> appears to be fixed by some other non-posted write included here.
>>>
>>> Thanks for all this work!
>>>
>>> Nevertheless, do we have any commits that may be a good candidate to
>>> be in the Fixes tag here?
>>>
>>
>> I don't think there's any commit we could point to, given that the bug is
>> probably somewhere in the firmware code.
>
> Then please add Cc: stable@vger.kernel.org tag into commit message. Such
> bugfix is a good candidate for backporting into stable releases.
>
>>>> Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>
next prev parent reply other threads:[~2021-09-01 16:51 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-30 12:37 [PATCH 0/2] mwifiex: Work around firmware bugs on 88W8897 chip Jonas Dreßler
2021-08-30 12:37 ` [PATCH 1/2] mwifiex: Use non-posted PCI register writes Jonas Dreßler
2021-08-30 12:49 ` Andy Shevchenko
2021-09-01 14:01 ` Jonas Dreßler
2021-09-01 15:47 ` Andy Shevchenko
2021-09-01 15:51 ` Pali Rohár
2021-09-01 16:51 ` Heiner Kallweit [this message]
2021-09-01 17:07 ` Johannes Berg
2021-09-01 19:07 ` Heiner Kallweit
2021-09-01 22:41 ` Bjorn Helgaas
2021-09-02 14:05 ` Bjorn Helgaas
2021-09-01 19:40 ` Brian Norris
2021-09-01 20:40 ` Andy Shevchenko
2021-09-01 21:04 ` Brian Norris
2021-09-01 21:07 ` Brian Norris
2021-09-18 7:37 ` Jonas Dreßler
2021-09-20 17:48 ` Brian Norris
2021-09-22 12:50 ` Jonas Dreßler
2021-09-23 15:28 ` Jonas Dreßler
2021-09-23 19:37 ` Andy Shevchenko
2021-09-23 19:41 ` Andy Shevchenko
2021-09-23 20:22 ` Pali Rohár
2021-09-30 15:38 ` Jonas Dreßler
2021-09-30 15:42 ` Pali Rohár
2021-09-30 16:14 ` Jonas Dreßler
2021-09-30 16:19 ` Pali Rohár
2021-09-30 16:22 ` Jonas Dreßler
2021-09-30 16:39 ` Pali Rohár
2021-08-30 12:37 ` [PATCH 2/2] mwifiex: Try waking the firmware until we get an interrupt Jonas Dreßler
2021-08-30 12:51 ` Andy Shevchenko
2021-08-30 12:55 ` Andy Shevchenko
2021-09-25 17:32 ` [PATCH 0/2] mwifiex: Work around firmware bugs on 88W8897 chip Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=985049b8-bad7-6f18-c94f-368059dd6f95@gmail.com \
--to=hkallweit1@gmail.com \
--cc=amitkarwar@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--cc=bhelgaas@google.com \
--cc=davem@davemloft.net \
--cc=ganapathi017@gmail.com \
--cc=huxinming820@gmail.com \
--cc=kitakar@gmail.com \
--cc=kuba@kernel.org \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=luzmaximilian@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pali@kernel.org \
--cc=verdre@v0yd.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.