[PATCH net-next] net: mdio: aspeed: add dummy read to avoid read-after-write issue

Jacky Chou jacky_chou at aspeedtech.com
Sun Dec 7 19:13:24 PST 2025


Hi Andrew,

Thank you for your reply

> > The Aspeed MDIO controller may return incorrect data when a read
> > operation follows immediately after a write. Due to a controller bug,
> > the subsequent read can latch stale data, causing the polling logic to
> > terminate earlier than expected.
> >
> > To work around this hardware issue, insert a dummy read after each
> > write operation. This ensures that the next actual read returns the
> > correct data and prevents premature polling exit.
> >
> > This workaround has been verified to stabilize MDIO transactions on
> > affected Aspeed platforms.
> >
> > Signed-off-by: Jacky Chou <jacky_chou at aspeedtech.com>
> 
> This seems like a bug fix. Please add a Fixes: tag, for base it on net, not
> net-next.
> 

Yes, it is a bug fix on HW design.
I will send it to net again and add Fixes tag.

> > ---
> >  drivers/net/mdio/mdio-aspeed.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/net/mdio/mdio-aspeed.c
> > b/drivers/net/mdio/mdio-aspeed.c index e55be6dc9ae7..00e61b922876
> > 100644
> > --- a/drivers/net/mdio/mdio-aspeed.c
> > +++ b/drivers/net/mdio/mdio-aspeed.c
> > @@ -62,6 +62,12 @@ static int aspeed_mdio_op(struct mii_bus *bus, u8 st,
> u8 op, u8 phyad, u8 regad,
> >  		| FIELD_PREP(ASPEED_MDIO_DATA_MIIRDATA, data);
> >
> >  	iowrite32(ctrl, ctx->base + ASPEED_MDIO_CTRL);
> > +	/* Workaround for read-after-write issue.
> 
> Blank line before the comment please.
> 

Agreed.

Thanks,
Jacky



More information about the linux-arm-kernel mailing list