From: Andrew Lunn <andrew@lunn.ch>
To: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: netdev@vger.kernel.org,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
"David S . Miller" <davem@davemloft.net>,
Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>,
Jiri Pirko <jiri@resnulli.us>,
Florian Fainelli <f.fainelli@gmail.com>,
Sekhar Nori <nsekhar@ti.com>,
linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
Murali Karicheri <m-karicheri2@ti.com>,
Ivan Vecera <ivecera@redhat.com>,
Rob Herring <robh+dt@kernel.org>,
devicetree@vger.kernel.org
Subject: Re: [PATCH v5 net-next 06/12] net: ethernet: ti: introduce cpsw switchdev based driver part 1 - dual-emac
Date: Fri, 1 Nov 2019 21:57:29 +0100 [thread overview]
Message-ID: <20191101205729.GE31534@lunn.ch> (raw)
In-Reply-To: <24b1623d-48df-328a-eda7-4195e9df2b22@ti.com>
On Fri, Nov 01, 2019 at 10:34:57PM +0200, Grygorii Strashko wrote:
>
>
> On 29/10/2019 14:32, Andrew Lunn wrote:
> > > +static int cpsw_probe(struct platform_device *pdev)
> > > +{
> > > + const struct soc_device_attribute *soc;
> > > + struct device *dev = &pdev->dev;
> > > + struct resource *ss_res;
> > > + struct cpsw_common *cpsw;
> > > + struct gpio_descs *mode;
> > > + void __iomem *ss_regs;
> > > + int ret = 0, ch;
> > > + struct clk *clk;
> > > + int irq;
> > > +
> >
> > ...
> >
> > > +
> > > + /* setup netdevs */
> > > + ret = cpsw_create_ports(cpsw);
> > > + if (ret)
> > > + goto clean_unregister_netdev;
> >
> > At this point, the slave ports go live. If the kernel is configured
> > with NFS root etc, it will start using the interfaces.
> >
> > +
> > > + /* Grab RX and TX IRQs. Note that we also have RX_THRESHOLD and
> > > + * MISC IRQs which are always kept disabled with this driver so
> > > + * we will not request them.
> > > + *
> > > + * If anyone wants to implement support for those, make sure to
> > > + * first request and append them to irqs_table array.
> > > + */
> > > +
> > > + ret = devm_request_irq(dev, cpsw->irqs_table[0], cpsw_rx_interrupt,
> > > + 0, dev_name(dev), cpsw);
> > > + if (ret < 0) {
> > > + dev_err(dev, "error attaching irq (%d)\n", ret);
> > > + goto clean_unregister_netdev;
> > > + }
> > > +
> > > + ret = devm_request_irq(dev, cpsw->irqs_table[1], cpsw_tx_interrupt,
> > > + 0, dev_name(dev), cpsw);
> > > + if (ret < 0) {
> > > + dev_err(dev, "error attaching irq (%d)\n", ret);
> > > + goto clean_unregister_netdev;
> > > + }
> >
> > Are there any race conditions if the network starts using the devices
> > before interrupts are requested? To be safe, maybe this should be done
> > before the slaves are created?
>
> Usually during boot - there is no parallel probing (as opposite to modules loading by
> udev, for example). Also, there is barrier init call deferred_probe_initcall() to ensure all
> drivers probed before going to mount rootfs.
>
> So, i do not think this could cause any issue - max few packets will be delayed
> until kernel will switch back here, but the chances that ndo_open will be finished before probe ->0.
I helped track down a crash recently, along these lines. ndo_open()
was getting called before the probe function finished, when kernel ip
address auto config was in action. This is not to do with parallel
probing, i think there is something in register_netdev() which is
triggered each time an interface is added to do the ip
configuration. And the first thing that does is open the interface.
Andrew
next prev parent reply other threads:[~2019-11-01 20:57 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-24 10:09 [PATCH v5 net-next 00/12] net: ethernet: ti: introduce new cpsw switchdev based driver Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 01/12] net: ethernet: ti: cpsw: allow untagged traffic on host port Grygorii Strashko
2019-10-27 10:02 ` kbuild test robot
2019-10-27 10:02 ` [RFC PATCH] net: ethernet: ti: cpsw: cpsw_ale_set_vlan_untag() can be static kbuild test robot
2019-10-24 10:09 ` [PATCH v5 net-next 02/12] net: ethernet: ti: cpsw: ale: modify vlan/mdb api for switchdev Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 03/12] net: ethernet: ti: cpsw: resolve build deps of cpsw drivers Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 04/12] net: ethernet: ti: cpsw: move set of common functions in cpsw_priv Grygorii Strashko
2019-10-25 13:01 ` Andrew Lunn
2019-11-01 16:55 ` Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 05/12] dt-bindings: net: ti: add new cpsw switch driver bindings Grygorii Strashko
2019-10-25 17:47 ` Florian Fainelli
2019-11-01 17:25 ` Grygorii Strashko
2019-11-01 17:36 ` Florian Fainelli
2019-11-01 20:40 ` Grygorii Strashko
2019-10-29 2:23 ` Andrew Lunn
2019-11-01 17:29 ` Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 06/12] net: ethernet: ti: introduce cpsw switchdev based driver part 1 - dual-emac Grygorii Strashko
2019-10-27 8:05 ` kbuild test robot
2019-10-29 12:24 ` Andrew Lunn
2019-11-01 20:16 ` Grygorii Strashko
2019-11-01 20:39 ` Andrew Lunn
2019-11-01 20:46 ` Grygorii Strashko
2019-11-01 20:59 ` Andrew Lunn
2019-10-29 12:32 ` Andrew Lunn
2019-11-01 20:34 ` Grygorii Strashko
2019-11-01 20:57 ` Andrew Lunn [this message]
2019-10-24 10:09 ` [PATCH v5 net-next 07/12] net: ethernet: ti: introduce cpsw switchdev based driver part 2 - switch Grygorii Strashko
2019-10-27 11:22 ` [RFC PATCH] net: ethernet: ti: cpsw_port_offload_fwd_mark_update() can be static kbuild test robot
2019-10-27 11:22 ` [PATCH v5 net-next 07/12] net: ethernet: ti: introduce cpsw switchdev based driver part 2 - switch kbuild test robot
2019-10-24 10:09 ` [PATCH v5 net-next 08/12] phy: ti: phy-gmii-sel: dependency from ti cpsw-switchdev driver Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 09/12] Documentation: networking: add cpsw switchdev based driver documentation Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 10/12] ARM: dts: dra7: add dt nodes for new cpsw switch dev driver Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 11/12] ARM: dts: am571x-idk: enable " Grygorii Strashko
2019-10-24 10:09 ` [PATCH v5 net-next 12/12] arm: omap2plus_defconfig: enable new cpsw switchdev driver Grygorii Strashko
2019-10-24 16:05 ` [PATCH v5 net-next 00/12] net: ethernet: ti: introduce new cpsw switchdev based driver Tony Lindgren
2019-11-09 15:15 ` Grygorii Strashko
2019-11-11 17:08 ` Tony Lindgren
2019-11-12 9:48 ` Grygorii Strashko
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=20191101205729.GE31534@lunn.ch \
--to=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=grygorii.strashko@ti.com \
--cc=ilias.apalodimas@linaro.org \
--cc=ivan.khoronzhuk@linaro.org \
--cc=ivecera@redhat.com \
--cc=jiri@resnulli.us \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=m-karicheri2@ti.com \
--cc=netdev@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=robh+dt@kernel.org \
/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).