From: Martin Karsten <mkarsten@xxxxxxxxxxxx> Setting prefer_busy_poll now leads to an effectively nonblocking iteration though napi_busy_loop, even when busy_poll_usecs is 0. Signed-off-by: Martin Karsten <mkarsten@xxxxxxxxxxxx> Co-developed-by: Joe Damato <jdamato@xxxxxxxxxx> Signed-off-by: Joe Damato <jdamato@xxxxxxxxxx> Tested-by: Joe Damato <jdamato@xxxxxxxxxx> Tested-by: Martin Karsten <mkarsten@xxxxxxxxxxxx> --- fs/eventpoll.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/eventpoll.c b/fs/eventpoll.c index f53ca4f7fced..cc47f72005ed 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -420,7 +420,9 @@ static bool busy_loop_ep_timeout(unsigned long start_time, static bool ep_busy_loop_on(struct eventpoll *ep) { - return !!ep->busy_poll_usecs || net_busy_loop_on(); + return !!READ_ONCE(ep->busy_poll_usecs) || + READ_ONCE(ep->prefer_busy_poll) || + net_busy_loop_on(); } static bool ep_busy_loop_end(void *p, unsigned long start_time) -- 2.25.1