Subject: Re: [PATCH] rtase: Avoid sleeping in get_stats64()

From: David Laight <[email-masked]>
Date: Mon, 1 Jun 2026 22:42:03 +0100

On Mon, 1 Jun 2026 15:14:50 +0200
Alexander Lobakin <[email-masked]> wrote:

> From: Justin Lai <[email-masked]>
> Date: Mon, 1 Jun 2026 14:24:47 +0800
> 
> > The .ndo_get_stats64 callback must not sleep because it can be
> > called when reading /proc/net/dev.
> > 
> > rtase_get_stats64() calls rtase_dump_tally_counter(), which polls
> > the tally counter dump bit with read_poll_timeout(). This may
> > sleep while waiting for the hardware counter dump to complete.
> > 
> > Use read_poll_timeout_atomic() instead to avoid sleeping in the
> > get_stats64() path.
> > 
> > Signed-off-by: Justin Lai <[email-masked]>  
> 
> Looks legit.
> 
> One question: for how long can this poll for in real life scenarios? Up
> to ~1 ms is okay-ish for atomic, but if longer, then you'd better to
> split it into shorter polls and reschedule() time to time.

Anyone trying to get a thread running at an RT priority won't thank you
for spinning for anywhere near that long.
When an RT processes becomes runnable the scheduler will preempt a lower
priority process that is running on the cpu the RT process last ran on.
The RT process won't run until the preempt actually happens.

1ms is a very long time.

-- David

> Thanks,
> Olek