linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 03/15] net: dev: always take qdiscs busylock in __dev_xmit_skb()
Date: Tue, 12 Jul 2016 10:29:10 -0400	[thread overview]
Message-ID: <20160712142919.135258995@goodmis.org> (raw)
In-Reply-To: 20160712142907.636678217@goodmis.org

[-- Attachment #1: 0003-net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch --]
[-- Type: text/plain, Size: 1421 bytes --]

3.18.36-rt38-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 da674bb38606..438c5afa5b01 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2801,7 +2801,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

  parent reply	other threads:[~2016-07-12 14:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-12 14:29 [PATCH RT 00/15] Linux 3.18.36-rt38-rc1 Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 01/15] kvm, rt: change async pagefault code locking for PREEMPT_RT Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 02/15] mm/zsmalloc: Use get/put_cpu_light in zs_map_object()/zs_unmap_object() Steven Rostedt
2016-07-12 14:29 ` Steven Rostedt [this message]
2016-07-12 14:29 ` [PATCH RT 04/15] drivers/block/zram: Replace bit spinlocks with rtmutex for -rt Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 05/15] list_bl: fixup bogus lockdep warning Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 06/15] ARM: imx: always use TWD on IMX6Q Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 07/15] drivers/block/zram: fixup compile for !RT Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 08/15] perf/x86/intel/rapl: Make PMU lock raw Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 09/15] sched,preempt: Fix preempt_count manipulations Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 10/15] kernel/printk: Dont try to print from IRQ/NMI region Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 11/15] arm: lazy preempt: correct resched condition Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 12/15] locallock: add local_lock_on() Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 13/15] mm: perform lru_add_drain_all() remotely Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 14/15] trace: correct off by one while recording the trace-event Steven Rostedt
2016-07-12 14:29 ` [PATCH RT 15/15] Linux 3.18.36-rt38-rc1 Steven Rostedt
2016-07-12 23:20 ` Linux 3.18.36-rt38-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=20160712142919.135258995@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;
as well as URLs for NNTP newsgroup(s).