From: Andrew Lunn <andrew@lunn.ch>
To: Kyle Switch <kyle.switch@motor-comm.com>
Cc: Frank.Sae@motor-comm.com, hkallweit1@gmail.com,
linux@armlinux.org.uk, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, ming.xu@motor-comm.com,
xiaolin.xu@motor-comm.com, jianmin.wang@motor-comm.com,
jie.han@motor-comm.com
Subject: Re: [PATCH net-next v5] net: phy: Add driver for Motorcomm Quad 2.5GbE phy
Date: Sun, 26 Jul 2026 16:51:48 +0200 [thread overview]
Message-ID: <b1f54c52-5719-414b-9bdd-3a0b0bc06252@lunn.ch> (raw)
In-Reply-To: <638fda5b-ee2c-4f3c-94b6-37d689d48721@motor-comm.com>
On Sun, Jul 26, 2026 at 11:24:16AM +0800, Kyle Switch wrote:
>
>
> On 7/24/26 21:18, Andrew Lunn wrote:
> >> Ans: It is different from the m88e1111 PHY, which may support UTP, fiber,
> >> or combo mode. However, the PHY8824 is only used with UTPs, and
> >> its structure is as follows, which includes UTP0, UTP1,UTP2,UTP3 and USXGMII.
> >>
> >> RJ45 <----> UTP0 <------>
> >> RJ45 <----> UTP1 <------> USXGMII <-----> USXGMII(the side of MAC)
> >> RJ45 <----> UTP2 <------>
> >> RJ45 <----> UTP3 <------>
> >>
> >> It is similar to phy8821 driver in motorcomm.c, with the difference
> >> being that one has one UTP port and phy8824 has four UTP ports.
> >> YT8824_RSSR_FIBER_SPACE is used to access USXGMII reg space, Perhaps it
> >> would be more accurate to call it YT8824_RSSR_USXGMII_SPACE or
> >> YT8824_RSSR_SERDES_SPACE.
> >
> > O.K, that completely changes my understanding of this device. Yes,
> > YT8824_RSSR_FIBER_SPACE should change name. And i would include this
> > diagram in the driver, and indicate how YT8824_RSSR_*_SPACE map to
> > this.
> >
> > For the locking, look thought all the code which is touching the
> > USXGMII side and see if it can be moved into probe().
> >
>
> Ans: It may not be possible to completely move the code which touch the USXGMII side
> into the probe() function. The initialization configuration aimed at optimizing
> the performance of the USXGMII side may be moved into the probe(). However, for the
> soft reset of UTP, it is necessary to configure MII_BMCR registers in USXGMII side.
I'm beginning to think you need to add an extra lock.
The idea with the mdio lock for accessing pages was that is existed,
and it would protect against accesses which don't come through phylib,
like hwmon. Because it is a low level lock, it really only works
within one PHY, when there are operations going on above it. The
assumption is that PHYs operate independently.
You are attempting to use it differently. Because of the poor hardware
design, you need to protect one PHY from another PHY. Your PHYs don't
operate independently. So i think you need to add a high level lock,
shared across the package. All the entry points via struct phy_driver
need to lock the package as a whole. The PHY can then do what it needs
to do without having to worry about another PHY being operated on in
parallel. You can make use of the phylib helpers, since the MDIO level
lock is not taken. phylibs concept of pages registers will work. Once
everything is done, release the package lock.
So, please look at adding phy_package_lock() and
phy_package_unlock(). Maybe it is possible to make use of struct
mii_bus shared_lock? Please look at how that is currently used and
check to see if there might be deadlocks.
Andrew
next prev parent reply other threads:[~2026-07-26 14:52 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-21 11:48 Kyle Switch
2026-07-21 13:27 ` Andrew Lunn
2026-07-22 7:44 ` Kyle Switch
2026-07-21 14:18 ` Andrew Lunn
2026-07-22 8:06 ` Kyle Switch
2026-07-22 13:18 ` Andrew Lunn
2026-07-23 9:28 ` Kyle Switch
2026-07-23 14:27 ` Andrew Lunn
2026-07-24 11:46 ` Kyle Switch
2026-07-24 13:18 ` Andrew Lunn
2026-07-24 22:18 ` Andrew Lunn
2026-07-26 3:38 ` Kyle Switch
2026-07-26 4:24 ` Kyle Switch
2026-07-26 3:24 ` Kyle Switch
2026-07-26 14:51 ` Andrew Lunn [this message]
2026-07-27 8:47 ` Kyle Switch
2026-07-27 21:36 ` Andrew Lunn
2026-07-28 11:25 ` Kyle Switch
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=b1f54c52-5719-414b-9bdd-3a0b0bc06252@lunn.ch \
--to=andrew@lunn.ch \
--cc=Frank.Sae@motor-comm.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=jianmin.wang@motor-comm.com \
--cc=jie.han@motor-comm.com \
--cc=kuba@kernel.org \
--cc=kyle.switch@motor-comm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=ming.xu@motor-comm.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=xiaolin.xu@motor-comm.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®