[PATCH net-next] net: mdio: aspeed: add dummy read to avoid read-after-write issue
Andrew Lunn
andrew at lunn.ch
Fri Dec 5 05:52:11 PST 2025
On Fri, Dec 05, 2025 at 09:37:22AM +0800, Jacky Chou wrote:
> 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.
> ---
> 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.
Andrew
---
pw-bot: cr
More information about the linux-arm-kernel
mailing list