From: John Crispin <blo...@openwrt.org>
Date: Mon,  7 Mar 2016 09:56:35 +0100

> +static int mtk_mdio_busy_wait(struct mtk_eth *eth)
> +{
> +     unsigned long t_start = jiffies;
> +
> +     while (1) {
> +             if (!(mtk_r32(eth, MTK_PHY_IAC) & PHY_IAC_ACCESS))
> +                     return 0;
> +             if (time_after(jiffies, t_start + PHY_IAC_TIMEOUT))
> +                     break;
> +     }
> +
> +     dev_err(eth->dev, "mdio: MDIO timeout\n");
> +     return -1;
> +}

Busy polling in a loop for up to 5 seconds with no preemption points
is not something you can do, sorry.

Reply via email to