From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org,
linux-rt-users <linux-rt-users@vger.kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Carsten Emde <C.Emde@osadl.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
John Kacur <jkacur@redhat.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>
Subject: [PATCH RT 02/11] net: dev: always take qdiscs busylock in __dev_xmit_skb()
Date: Tue, 12 Jul 2016 12:49:52 -0400 [thread overview]
Message-ID: <20160712165019.955844356@goodmis.org> (raw)
In-Reply-To: 20160712164950.490572026@goodmis.org
[-- Attachment #1: 0002-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch --]
[-- Type: text/plain, Size: 1419 bytes --]
3.12.61-rt82-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
The root-lock is dropped before dev_hard_start_xmit() is invoked and after
setting the __QDISC___STATE_RUNNING bit. If this task is now pushed away
by a task with a higher priority then the task with the higher priority
won't be able to submit packets to the NIC directly instead they will be
enqueued into the Qdisc. The NIC will remain idle until the task(s) with
higher priority leave the CPU and the task with lower priority gets back
and finishes the job.
If we take always the busylock we ensure that the RT task can boost the
low-prio task and submit the packet.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
net/core/dev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/core/dev.c b/net/core/dev.c
index ee08da0fe0d7..c34af0bf3c0e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2713,7 +2713,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
* This permits __QDISC_STATE_RUNNING owner to get the lock more often
* and dequeue packets faster.
*/
+#ifdef CONFIG_PREEMPT_RT_FULL
+ contended = true;
+#else
contended = qdisc_is_running(q);
+#endif
if (unlikely(contended))
spin_lock(&q->busylock);
--
2.8.1
next prev parent reply other threads:[~2016-07-12 16:50 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-12 16:49 [PATCH RT 00/11] Linux 3.12.61-rt82-rc1 Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 01/11] kvm, rt: change async pagefault code locking for PREEMPT_RT Steven Rostedt
2016-07-12 16:49 ` Steven Rostedt [this message]
2016-07-12 16:49 ` [PATCH RT 03/11] list_bl: fixup bogus lockdep warning Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 04/11] ARM: imx: always use TWD on IMX6Q Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 05/11] kernel/printk: Dont try to print from IRQ/NMI region Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 06/11] arm: lazy preempt: correct resched condition Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 07/11] locallock: add local_lock_on() Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 08/11] mm: perform lru_add_drain_all() remotely Steven Rostedt
2016-07-12 16:49 ` [PATCH RT 09/11] trace: correct off by one while recording the trace-event Steven Rostedt
2016-07-12 16:50 ` [PATCH RT 10/11] x86: Fix an RT MCE crash Steven Rostedt
2016-07-12 16:50 ` [PATCH RT 11/11] Linux 3.12.61-rt82-rc1 Steven Rostedt
2016-07-12 23:23 ` Linux 3.12.61-rt82-rc2 Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160712165019.955844356@goodmis.org \
--to=rostedt@goodmis.org \
--cc=C.Emde@osadl.org \
--cc=bigeasy@linutronix.de \
--cc=jkacur@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=paul.gortmaker@windriver.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox