mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 01:29:07 +00:00
38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Date: Sat, 27 May 2017 19:02:06 +0200
|
|
Subject: net/core: disable NET_RX_BUSY_POLL on RT
|
|
|
|
napi_busy_loop() disables preemption and performs a NAPI poll. We can't acquire
|
|
sleeping locks with disabled preemption so we would have to work around this
|
|
and add explicit locking for synchronisation against ksoftirqd.
|
|
Without explicit synchronisation a low priority process would "own" the NAPI
|
|
state (by setting NAPIF_STATE_SCHED) and could be scheduled out (no
|
|
preempt_disable() and BH is preemptible on RT).
|
|
In case a network packages arrives then the interrupt handler would set
|
|
NAPIF_STATE_MISSED and the system would wait until the task owning the NAPI
|
|
would be scheduled in again.
|
|
Should a task with RT priority busy poll then it would consume the CPU instead
|
|
allowing tasks with lower priority to run.
|
|
|
|
The NET_RX_BUSY_POLL is disabled by default (the system wide sysctls for
|
|
poll/read are set to zero) so disable NET_RX_BUSY_POLL on RT to avoid wrong
|
|
locking context on RT. Should this feature be considered useful on RT systems
|
|
then it could be enabled again with proper locking and synchronisation.
|
|
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
net/Kconfig | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/net/Kconfig
|
|
+++ b/net/Kconfig
|
|
@@ -282,7 +282,7 @@ config CGROUP_NET_CLASSID
|
|
|
|
config NET_RX_BUSY_POLL
|
|
bool
|
|
- default y
|
|
+ default y if !PREEMPT_RT
|
|
|
|
config BQL
|
|
bool
|