Re: [PATCH net] tg3: prevent scheduling while atomic splat

From: Michael Chan
Date: Wed Mar 14 2018 - 13:22:59 EST


On Wed, Mar 14, 2018 at 9:36 AM, Jonathan Toppins <jtoppins@xxxxxxxxxx> wrote:
> The problem was introduced in commit
> 506b0a395f26 ("[netdrv] tg3: APE heartbeat changes"). The bug occurs
> because tp->lock spinlock is held which is obtained in tg3_start
> by way of tg3_full_lock(), line 11571. The documentation for usleep_range()
> specifically states it cannot be used inside a spinlock.
>
> Fixes: 506b0a395f26 ("[netdrv] tg3: APE heartbeat changes")
> Signed-off-by: Jonathan Toppins <jtoppins@xxxxxxxxxx>
> ---
>
> Notes:
> The thing I need reviewed from Broadcom is if the udelay should be 20
> instead of 10, due to any timing changes introduced by the offending
> patch.

Thanks. 10 us is correct.

As a future improvement, we might want to see if we can release the
spinlock and go back to usleep_range(). The wait time is potentially
up to 20 msec which is quite long.

Acked-by: Michael Chan <michael.chan@xxxxxxxxxxxx>