From: netdev-bot+sashiko@kernel.org
To: wei.fang@oss.nxp.com
Cc: xiaoning.wang@nxp.com, andrew@lunn.ch, olteanv@gmail.com,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, horms@kernel.org,
richardcochran@gmail.com, linusw@kernel.org,
linux@armlinux.org.uk, wei.fang@nxp.com, imx@lists.linux.dev,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v7 net-next 4/9] net: dsa: netc: tie setup resources and reset to DSA setup/teardown
Date: Sun, 15 Nov 2026 07:24:23 +0000 [thread overview]
Message-ID: <179472746345.2199510.13684304240938201686@kernel.org> (raw)
In-Reply-To: <20261111062753.1397582-5-wei.fang@oss.nxp.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider.
Critical: 0 · High: 0 · Medium: 1 · Low: 0
If you believe none of the issues are legitimate, please reply to each
issue of Medium severity or higher and explain why the AI is wrong.
If any of them are legitimate and you plan to respin, please let patchwork
know by including "pw-bot: cr" as a separate line at the end of your reply
(one such reply per series is enough).
- [Medium] The patch makes the first netc_setup() skip the reset
(priv->configured == false) on the grounds that "the probe path…
--
net: dsa: netc: tie setup resources and reset to DSA setup/teardown
This patch adds netc_switch_reset(), which netc_setup() calls first so
each DSA setup starts from a clean hardware state. The first setup skips
the reset and relies on the probe-time FLR. The patch also turns the
setup-path devm_ allocations into explicit alloc/free calls, released in
netc_teardown() and on the error paths.
> diff --git a/drivers/net/dsa/netc/netc_main.c b/drivers/net/dsa/netc/netc_main.c
> index 77077352c1a57..c291123f53170 100644
> --- a/drivers/net/dsa/netc/netc_main.c
> +++ b/drivers/net/dsa/netc/netc_main.c
[ ... ]
> +static int netc_switch_reset(struct netc_switch *priv)
> +{
> + struct pci_dev *pdev = priv->pdev;
> + int err;
> +
> + if (!priv->configured) {
> + /* The hardware will be configured after netc_switch_reset()
> + * is called, so set priv->configured to true.
> + */
> + priv->configured = true;
> + return 0;
> + }
[Severity: Medium]
Can the first netc_setup() start on stale hardware tables if the FLR in
probe failed?
The commit message says:
The probe path already performs a FLR in netc_switch_pci_init(), so
the first setup will skip the reset because the priv->configured flag
is not set.
But netc_switch_pci_init() ignores the pcie_flr() return value:
drivers/net/dsa/netc/netc_main.c:netc_switch_pci_init() {
...
pcie_flr(pdev);
err = pcim_enable_device(pdev);
...
}
pcie_flr() can fail. It returns -ENOTTY if config space is not
accessible or if pci_dev_wait() times out. It can also fail through
pci_dev_reset_iommu_prepare() for an ATS-capable device behind an IOMMU.
Suppose that happens after an unbind/rebind:
netc_switch_probe()
netc_switch_pci_init()
pcie_flr() <- fails, error ignored
dsa_register_switch()
netc_setup()
netc_switch_reset() <- returns 0 early, !priv->configured
The FDB, VLAN filter, IPFT, BPT and ETT entries from the previous binding
would then stay in hardware. netc_setup() builds empty software state on
top of them, and the driver has no record of those entries to remove.
Later setups treat an FLR failure as fatal, so a failed first FLR is
handled differently. Should the probe path check the pcie_flr() result
and fail probe? Alternatively, priv->configured could be set only after
a successful FLR, so that the first setup retries the reset.
> +
> + /* Block user space config access and other PCI resets, which take
> + * pci_cfg_access_lock() via pci_dev_lock(), during the FLR.
> + */
> + pci_cfg_access_lock(pdev);
> + err = pci_save_state(pdev);
> + if (err)
> + goto unlock_cfg_access;
> +
> + err = pcie_flr(pdev);
> + if (err)
> + dev_err(priv->dev, "FLR failed: %pe\n", ERR_PTR(err));
> +
> + pci_restore_state(pdev);
> +
> +unlock_cfg_access:
> + pci_cfg_access_unlock(pdev);
> +
> + return err;
> }
[ ... ]
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261111062753.1397582-1-wei.fang%40oss.nxp.com
next prev parent reply other threads:[~2026-11-15 7:24 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 6:27 [PATCH v7 net-next 0/9] net: dsa: netc: add PTP support for NETC switch wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 1/9] ptp: netc: use ioread64_lo_hi/iowrite64_lo_hi for 64-bit register access wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 2/9] ptp: netc: remove unnecessary pcie_flr() call in probe wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 3/9] ptp: netc: export netc_timer_get_current_time() for cross-driver use wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 4/9] net: dsa: netc: tie setup resources and reset to DSA setup/teardown wei.fang
2026-11-15 7:24 ` netdev-bot+sashiko [this message]
2026-11-11 6:27 ` [PATCH v7 net-next 5/9] net: dsa: netc: use entry ID instead of pointer to track host flood rule wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 6/9] net: dsa: netc: check return value of ntmp_ipft_delete_entry() wei.fang
2026-11-15 7:24 ` netdev-bot+sashiko
2026-11-11 6:27 ` [PATCH v7 net-next 7/9] net: dsa: netc: enable ingress port filtering lookup by default wei.fang
2026-11-11 6:27 ` [PATCH v7 net-next 8/9] net: dsa: netc: add PTP two-step timestamping support wei.fang
2026-11-15 7:24 ` netdev-bot+sashiko
2026-11-11 6:27 ` [PATCH v7 net-next 9/9] net: dsa: netc: add PTP one-step " wei.fang
2026-11-15 7:24 ` netdev-bot+sashiko
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=179472746345.2199510.13684304240938201686@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=imx@lists.linux.dev \
--cc=kuba@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=richardcochran@gmail.com \
--cc=wei.fang@nxp.com \
--cc=wei.fang@oss.nxp.com \
--cc=xiaoning.wang@nxp.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
all inboxes | Powered by JetHome®