From: Brian Norris <briannorris@chromium.org>
To: Amitkumar Karwar <akarwar@marvell.com>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
Cathy Luo <cluo@marvell.com>,
Nishant Sarmukadam <nishants@marvell.com>,
"rajatja@google.com" <rajatja@google.com>,
Xinming Hu <huxm@marvell.com>,
abhishekbh@google.com
Subject: Re: [PATCH v2 1/2] mwifiex: reset card->adapter during device unregister
Date: Mon, 10 Oct 2016 13:43:54 -0700 [thread overview]
Message-ID: <20161010204352.GA11254@localhost> (raw)
In-Reply-To: <127198026f5149c783bb0f5855dc87b9@SC-EXCH04.marvell.com>
Hi Amit,
On Thu, Oct 06, 2016 at 01:03:02PM +0000, Amitkumar Karwar wrote:
> > From: linux-wireless-owner@vger.kernel.org [mailto:linux-wireless-
> > owner@vger.kernel.org] On Behalf Of Brian Norris
> > Sent: Wednesday, October 05, 2016 10:00 PM
> > To: Amitkumar Karwar
> > Cc: linux-wireless@vger.kernel.org; Cathy Luo; Nishant Sarmukadam;
> > rajatja@google.com; Xinming Hu
> > Subject: Re: [PATCH v2 1/2] mwifiex: reset card->adapter during device
> > unregister
> >
> > On Wed, Oct 05, 2016 at 02:04:53PM +0000, Amitkumar Karwar wrote:
> > > > From: Brian Norris [mailto:briannorris@chromium.org]
> > > > Sent: Wednesday, October 05, 2016 3:28 AM
> > > > To: Amitkumar Karwar
> > > > Cc: linux-wireless@vger.kernel.org; Cathy Luo; Nishant Sarmukadam;
> > > > rajatja@google.com; briannorris@google.com; Xinming Hu
> > > > Subject: Re: [PATCH v2 1/2] mwifiex: reset card->adapter during
> > > > device unregister
> > > >
> > > > On Tue, Oct 04, 2016 at 10:38:24PM +0530, Amitkumar Karwar wrote:
> >
> > > > > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
> > > > > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
> > > > > @@ -3042,6 +3042,7 @@ static void mwifiex_unregister_dev(struct
> > > > mwifiex_adapter *adapter)
> > > > > pci_disable_msi(pdev);
> > > > > }
> > > > > }
> > > > > + card->adapter = NULL;
...
> > What about writes racing with reads? You have lots of unsynchronized
> > cases that read this, although most of them should be halted by now
> > (e.g., cmd processing). I was looking at suspend() in particular, which
> > I thought you were looking at in this patch series.
>
> Please note that "card->adapter" is used only in pcie.c/sdio.c/usb.c files
>
> Writes won't have race with reads.
>
> 1) write 1 --- "card->adapter = adapter;" in mwifiex_register_dev()
> This place is at the beginning of initialization.
> mwifiex_pcie_probe() -> mwifiex_add_card() -> adapter->if_ops.register_dev()
> There is no chance that "card->adapter" is read anywhere at this point. FW is not yet downloaded
Sure.
> 2) write 2 ---- "card->adapter = NULL;" in mwifiex_unregister_dev()
> This place the end of teardown phase.
> Interrupts are disabled and all cleanup is done. We have
> "card->adapter" NULL checks at entry point of
> suspend/remove/resume, if they get called after this.
I guess the question boils down to: can driver suspend() race with
mwifiex_unregister_dev() here, then?
And I guess the answer is "no", because unregistration only happens via
PCIe driver remove() -> mwifiex_remove_card() -> adapter->if_ops.unregister_dev()
and I think the device driver core guarantees that suspend() and
remove() won't race.
In that case:
Reviewed-by: Brian Norris <briannorris@chromium.org>
I'll reply to the latest revision too, since it's identical.
Thanks for the explanations.
Regards,
Brian
next prev parent reply other threads:[~2016-10-10 20:43 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-04 17:08 [PATCH v2 1/2] mwifiex: reset card->adapter during device unregister Amitkumar Karwar
2016-10-04 17:08 ` [PATCH v2 2/2] mwifiex: check hw_status in suspend and resume handlers Amitkumar Karwar
2016-10-04 21:04 ` Brian Norris
2016-10-05 12:26 ` Amitkumar Karwar
2016-10-05 16:41 ` Brian Norris
2016-10-05 17:19 ` Cathy Luo
2016-10-06 17:28 ` Amitkumar Karwar
2016-10-04 21:58 ` [PATCH v2 1/2] mwifiex: reset card->adapter during device unregister Brian Norris
2016-10-05 14:04 ` Amitkumar Karwar
2016-10-05 16:30 ` Brian Norris
2016-10-06 13:03 ` Amitkumar Karwar
2016-10-10 20:43 ` Brian Norris [this message]
2016-10-10 23:43 ` Dmitry Torokhov
2016-10-10 23:47 ` Brian Norris
2016-10-10 23:53 ` Dmitry Torokhov
2016-10-10 23:54 ` Brian Norris
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=20161010204352.GA11254@localhost \
--to=briannorris@chromium.org \
--cc=abhishekbh@google.com \
--cc=akarwar@marvell.com \
--cc=cluo@marvell.com \
--cc=huxm@marvell.com \
--cc=linux-wireless@vger.kernel.org \
--cc=nishants@marvell.com \
--cc=rajatja@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).