summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch')
-rw-r--r--debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch b/debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch
new file mode 100644
index 000000000..aef82ca64
--- /dev/null
+++ b/debian/patches-rt/0191-net-core-disable-NET_RX_BUSY_POLL-on-RT.patch
@@ -0,0 +1,44 @@
+From 311a1cf04650b065502758f992df44702d23f6cd Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Sat, 27 May 2017 19:02:06 +0200
+Subject: [PATCH 191/323] net/core: disable NET_RX_BUSY_POLL on RT
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.204-rt100.tar.xz
+
+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(-)
+
+diff --git a/net/Kconfig b/net/Kconfig
+index a22c3fb88564..5a17bded7136 100644
+--- a/net/Kconfig
++++ b/net/Kconfig
+@@ -280,7 +280,7 @@ config CGROUP_NET_CLASSID
+
+ config NET_RX_BUSY_POLL
+ bool
+- default y
++ default y if !PREEMPT_RT
+
+ config BQL
+ bool
+--
+2.43.0
+