All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Linus Walleij" <linusw@kernel.org>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH net-next v15 3/4] net: dsa: microchip: Support Microchip KSZ8995XA / KS8995XA
Date: Thu, 17 Sep 2026 10:21:21 +0000	[thread overview]
Message-ID: <20260917102122.46EF41F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260916-ks8995-to-ksz8-v15-3-8825ff5fd4be@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] net: dsa: ksz8995xa: PHY soft reset writes to reserved MAC register on CPU port
--

commit f841f88763071d08ce03b9faac5dca678f1c4f1f
Author: Linus Walleij <linusw@kernel.org>

net: dsa: microchip: Support Microchip KSZ8995XA / KS8995XA

This commit adds support for the Microchip KSZ8995XA switch to the KSZ driver, 
handling legacy compatibles and implementing specialized DCB and MTU logic. It 
also provides a customized DSA switch operations struct for the older hardware.

> diff --git a/drivers/net/dsa/microchip/ksz8.c b/drivers/net/dsa/microchip/ksz8.c
> index 941ae9f66f70b..d7498132064e8 100644
> --- a/drivers/net/dsa/microchip/ksz8.c
> +++ b/drivers/net/dsa/microchip/ksz8.c

[ ... ]

> @@ -253,7 +255,35 @@ static int ksz8463_reset_switch(struct ksz_device *dev)
>  
>  static int ksz8_reset_switch(struct ksz_device *dev)
>  {
> -	if (ksz_is_ksz88x3(dev)) {
> +	if (ksz_is_ksz8995xa(dev)) {
> +		unsigned int port, reg, val;
> +		int ret;
> +
> +		/* The KSZ8995XA switch itself cannot be reset by software, but
> +		 * often boot loaders have fun with ports, so reset them. This
> +		 * reset bit is self-clearing.
> +		 */
> +		for (port = 0; port < dev->info->port_cnt; port++) {

[Severity: High]
Does this loop in ksz8_reset_switch() unconditionally include the CPU port?

Since dev->info->port_cnt for KSZ8995XA is 5, it looks like this will also
write PORT_PHY_SOFT_RESET to port 4 (the CPU port). However, port 4 lacks an
internal PHY (dev->info->internal_phy[4] is false) and writing to its reserved
MAC register address space could trigger unintended behavior.

> +			ret = ksz_prmw8(dev, port, REG_PORT_STATUS_3,
> +					PORT_PHY_SOFT_RESET,
> +					PORT_PHY_SOFT_RESET);
> +			if (ret)
> +				return ret;
> +		}
> +
> +		/* IEEE 802.3 allows up to 500 ms for a PHY reset. */
> +		for (port = 0; port < dev->info->port_cnt; port++) {
> +			reg = dev->dev_ops->get_port_addr(port, REG_PORT_STATUS_3);
> +			ret = regmap_read_poll_timeout(ksz_regmap_8(dev), reg, val,
> +						       !(val & PORT_PHY_SOFT_RESET),
> +						       1000, 600000);

[Severity: High]
Could polling this reserved register lead to a permanent timeout?

If the hardware retains the written value on the reserved register (meaning it
does not self-clear like a real PHY would), regmap_read_poll_timeout() will
timeout after 600ms and return -ETIMEDOUT, causing the entire switch probe to
fail.

Should this loop check dev->info->internal_phy[port] before proceeding, or
alternatively iterate only up to dev->phy_port_cnt to avoid touching the CPU
port?

> +			if (ret)
> +				return ret;
> +		}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260916-ks8995-to-ksz8-v15-0-8825ff5fd4be@kernel.org?part=3

  reply	other threads:[~2026-09-17 10:21 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16 10:20 [PATCH net-next v15 0/4] net: dsa: microchip: Add support for KSZ8995XA/KS8995XA Linus Walleij
2026-09-16 10:20 ` [PATCH net-next v15 1/4] dt-bindings: net: dsa: microchip: Add KSZ8995XA Linus Walleij
2026-09-17 13:22   ` netdev-bot+sashiko
2026-09-17 21:15     ` Linus Walleij
2026-09-16 10:20 ` [PATCH net-next v15 2/4] net: dsa: tag_ks8995: Add the KS8995 tag handling Linus Walleij
2026-09-17 13:22   ` netdev-bot+sashiko
2026-09-17 21:18     ` Linus Walleij
2026-09-19  0:48       ` Jakub Kicinski
2026-09-16 10:21 ` [PATCH net-next v15 3/4] net: dsa: microchip: Support Microchip KSZ8995XA / KS8995XA Linus Walleij
2026-09-17 10:21   ` sashiko-bot [this message]
2026-09-17 21:24     ` Linus Walleij
2026-09-17 13:22   ` netdev-bot+sashiko
2026-09-17 21:28     ` Linus Walleij
2026-09-16 10:21 ` [PATCH net-next v15 4/4] net: dsa: ks8995: Delete surplus driver Linus Walleij
2026-09-17 13:22   ` netdev-bot+sashiko
2026-09-17 21:33     ` Linus Walleij
2026-09-19  1:00 ` [PATCH net-next v15 0/4] net: dsa: microchip: Add support for KSZ8995XA/KS8995XA patchwork-bot+netdevbpf

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=20260917102122.46EF41F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linusw@kernel.org \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.