From: Bastien Curutchet <bastien.curutchet@bootlin.com>
To: Tristram.Ha@microchip.com, olteanv@gmail.com
Cc: Woojung.Huh@microchip.com, UNGLinuxDriver@microchip.com,
andrew@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, richardcochran@gmail.com,
horms@kernel.org, pascal.eberhard@se.com,
miquel.raynal@bootlin.com, thomas.petazzoni@bootlin.com,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
maxime.chevallier@bootlin.com
Subject: Re: [PATCH net-next v6 1/9] net: dsa: microchip: Add support for KSZ8463 global irq
Date: Fri, 6 Mar 2026 10:03:45 +0100 [thread overview]
Message-ID: <785e440c-6b2a-4ed7-aee3-09ca6cee797a@bootlin.com> (raw)
In-Reply-To: <DM3PR11MB87364DB5439A20F44AEB690DEC7AA@DM3PR11MB8736.namprd11.prod.outlook.com>
Hi,
On 3/6/26 2:10 AM, Tristram.Ha@microchip.com wrote:
>> On 3/5/26 1:51 PM, Vladimir Oltean wrote:
>>> On Thu, Mar 05, 2026 at 01:39:29PM +0100, Bastien Curutchet wrote:
>>>> Hi Vladimir,
>>>>
>>>> On 3/5/26 10:56 AM, Vladimir Oltean wrote:
>>>>> On Wed, Mar 04, 2026 at 11:18:52AM +0100, Bastien Curutchet (Schneider
>> Electric) wrote:
>>>>>> @@ -2890,14 +2899,18 @@ static irqreturn_t ksz_irq_thread_fn(int irq,
>> void *dev_id)
>>>>>> unsigned int nhandled = 0;
>>>>>> struct ksz_device *dev;
>>>>>> unsigned int sub_irq;
>>>>>> - u8 data;
>>>>>> + u16 data;
>>>>>> int ret;
>>>>>> u8 n;
>>>>>> dev = kirq->dev;
>>>>>> - /* Read interrupt status register */
>>>>>> - ret = ksz_read8(dev, kirq->reg_status, &data);
>>>>>> + /*
>>>>>> + * Most of the KSZ switches have a 8-bits long interrupt status
>>>>>> + * register, but the KSZ8463 has a 16-bits long one. The overread here
>>>>>> + * is safe because we only iterate over kirq->nirqs in the below loop.
>>>>>
>>>>> FWIW, this isn't the only thing making an overread "safe".
>>>>> If the adjacent register also has "clear on read" semantics, that's not
>>>>> good.
>>>>>
>>>>> I can't tell whether that's the case here, though. There are just too
>>>>> many hardware variations to check for. I just wanted to point out that
>>>>> the reasoning is incomplete.
>>>>>
>>>> You're right, I hadn't thought about the 'clear on read' case.
>>>>
>>>> I'll use ksz_read16() only for the KSZ8463 to be 100% sure it won't break
>>>> anything for other switches.
>>>
>>> I'm still on the fence on whether to say this or not, because I don't
>>> really want to get so involved in internal driver bookkeeping, but...
>>> this driver is just becoming a hell to review, even if I want to
>>> concentrate exclusively on correct API use, like I try to do.
>>>> Linus Walleij has added a new ks8995 driver, which has some overlap with
>>> the common ksz driver for the KSZ8 family. Now he wants to remove the
>>> overlapping device support:
>>> https://lore.kernel.org/netdev/20260219-ks8995-fixups-v3-0-
>> a7fc63fe1916@kernel.org/
>>>
>>> Maybe we should go the other way around, migrate KSZ8 support to the
>>> ks8995 driver instead? The common ksz driver is becoming just extremely
>>> convoluted to handle all hardware variations. Would it help in any way
>>> to maintain cleaner code paths, what do you think?
>>
>> I agree, this driver is extremely convoluted because of all the
>> different hardware it handles. It wasn't easy to fit PTP support for the
>> KSZ8463 into it. And I encountered the same kind of difficulties when
>> adding periodic output support (I have another series ready for this
>> once this PTP support will be merged).
>>
>> Regarding migrating the KSZ8 support into the ksz8995, I think we would
>> quickly hit the same pain points than in ksz_common. Even inside the
>> KSZ8 family we can find a quite big amount of differences between the
>> switches. For instance, both KSZ8463 and KSZ8563 support PTP, they share
>> lots of common registers but their interrupt scheme is very different.
>>
>> I've added Tristram in Cc:, who works at Microchip. Maybe, Tristram, you
>> have some insights about which switches could share code if we decide to
>> split the big ksz_common into several drivers ?
>
> Although KSZ8463 uses 16-bit register for its interrupt operation, the
> bits that are necessary for actual operation are all in the high byte, so
> it is possible to simulate using 8-bit register for interrupt operation
> just like the other switches.
>
I hadn't though about using only the high byte, I like this idea. I'll
implement it in the next iteration with a comment explaining why it
works for the KSZ8463.
> Note also the previous interrupt code only works for KSZ9477 and LAN937X
> families of switches, which have interrupts for each port. The older
> switches like KSZ8863, KSZ8895, and KSZ8795 all have only one global
> interrupt and need change to work in this framework.
Indeed, that's what patches 1 to 4 are here for.
>
> These switches have link change interrupt bits for external ports, so it
> is easy to simulate them as port interrupts. But KSZ8463 only has 1 bit
> for link, so it is necessary to add some special code to return a value of
> 3 to indicate both ports have link change.
>
This series only use interrupt for PTP means. TBH I haven't looked at
the link change interrupt mechanism.
> KSZ8463 is based from KSZ8863 so it should have about the same 8-bit
> register definitions as KSZ8863. But when it was designed it had a
> companion chip that operates as a 16-bit network controller. Because of
> that all register definitions are described in 16-bit.
>
> I need to try your patches to see how it works regarding to the PTP
> interrupts.
>
> Regarding to the old ks8995 driver I think it was a simple SPI driver to
> start the KSZ8995 switch, which is an older version of KSZ8895. It was
> used to locate under the PHY drivers. I did not know it was upgraded to
> become a full DSA driver and is now trying to expand to the other
> switches.
Ok, thanks for these information
Best regards,
Bastien
next prev parent reply other threads:[~2026-03-06 9:03 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 10:18 [PATCH net-next v6 0/9] net: dsa: microchip: Add PTP support for the KSZ8463 Bastien Curutchet (Schneider Electric)
2026-03-04 10:18 ` [PATCH net-next v6 1/9] net: dsa: microchip: Add support for KSZ8463 global irq Bastien Curutchet (Schneider Electric)
2026-03-05 9:56 ` Vladimir Oltean
2026-03-05 12:39 ` Bastien Curutchet
2026-03-05 12:51 ` Vladimir Oltean
2026-03-05 14:45 ` Bastien Curutchet
2026-03-06 1:10 ` Tristram.Ha
2026-03-06 9:03 ` Bastien Curutchet [this message]
2026-03-09 12:54 ` Bastien Curutchet
2026-03-09 20:54 ` Vladimir Oltean
2026-03-11 10:02 ` Bastien Curutchet
2026-03-11 11:53 ` Vladimir Oltean
2026-03-11 12:53 ` Bastien Curutchet
2026-03-11 13:56 ` Vladimir Oltean
2026-03-11 16:58 ` Bastien Curutchet
2026-03-11 18:24 ` Andrew Lunn
2026-03-11 21:24 ` Vladimir Oltean
2026-03-12 18:28 ` Bastien Curutchet
2026-03-13 2:05 ` Tristram.Ha
2026-03-13 2:17 ` Tristram.Ha
2026-03-12 0:14 ` Tristram.Ha
2026-03-12 13:45 ` Vladimir Oltean
2026-03-13 15:38 ` Vladimir Oltean
2026-03-13 17:29 ` Tristram.Ha
2026-03-18 9:26 ` Bastien Curutchet
2026-03-18 14:02 ` Vladimir Oltean
2026-03-04 10:18 ` [PATCH net-next v6 2/9] net: dsa: microchip: Decorrelate IRQ domain from port Bastien Curutchet (Schneider Electric)
2026-03-05 10:07 ` Vladimir Oltean
2026-03-06 9:18 ` Bastien Curutchet
2026-03-04 10:18 ` [PATCH net-next v6 3/9] net: dsa: microchip: Decorrelate msg_irq index from IRQ bit offset Bastien Curutchet (Schneider Electric)
2026-03-04 10:18 ` [PATCH net-next v6 4/9] net: dsa: microchip: Add support for KSZ8463's PTP interrupts Bastien Curutchet (Schneider Electric)
2026-03-05 10:19 ` Vladimir Oltean
2026-03-06 9:29 ` Bastien Curutchet
2026-03-04 10:18 ` [PATCH net-next v6 5/9] net: dsa: tag_ksz: Share code for KSZ8795 and KSZ9893 xmit operations Bastien Curutchet (Schneider Electric)
2026-03-04 10:18 ` [PATCH net-next v6 6/9] net: dsa: microchip: Add KSZ8463 tail tag handling Bastien Curutchet (Schneider Electric)
2026-03-04 10:18 ` [PATCH net-next v6 7/9] net: dsa: microchip: Explicitly enable detection of L2 PTP frames Bastien Curutchet (Schneider Electric)
2026-03-04 10:18 ` [PATCH net-next v6 8/9] net: dsa: microchip: Adapt port offset for KSZ8463's PTP register Bastien Curutchet (Schneider Electric)
2026-03-04 10:19 ` [PATCH net-next v6 9/9] net: dsa: microchip: Add two-step PTP support for KSZ8463 Bastien Curutchet (Schneider Electric)
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=785e440c-6b2a-4ed7-aee3-09ca6cee797a@bootlin.com \
--to=bastien.curutchet@bootlin.com \
--cc=Tristram.Ha@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=Woojung.Huh@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.chevallier@bootlin.com \
--cc=miquel.raynal@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=pascal.eberhard@se.com \
--cc=richardcochran@gmail.com \
--cc=thomas.petazzoni@bootlin.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