mirror of https://lore.kernel.org/lkml/
 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>,
	Julia Cartwright <julia@ni.com>,
	stable-rt@vger.kernel.org,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	John Ogness <john.ogness@linutronix.de>
Subject: [PATCH RT 04/10] x86/mm/cpa: avoid wbinvd() for PREEMPT
Date: Tue, 07 Mar 2017 16:20:45 -0500	[thread overview]
Message-ID: <20170307212313.787317186@goodmis.org> (raw)
In-Reply-To: <20170307212041.431615000@goodmis.org>

[-- Attachment #1: 0004-x86-mm-cpa-avoid-wbinvd-for-PREEMPT.patch --]
[-- Type: text/plain, Size: 1521 bytes --]

4.4.50-rt63-rc1 stable review patch.
If anyone has any objections, please let me know.

------------------

From: John Ogness <john.ogness@linutronix.de>

Although wbinvd() is faster than flushing many individual pages, it
blocks the memory bus for "long" periods of time (>100us), thus
directly causing unusually large latencies on all CPUs, regardless
of any CPU isolation features that may be active.

For 1024 pages, flushing those pages individually can take up to
2200us, but the task remains fully preemptible during that time.

Cc: stable-rt@vger.kernel.org
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 arch/x86/mm/pageattr.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index b599a780a5a9..2e85c4117daf 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -208,7 +208,15 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache,
 			    int in_flags, struct page **pages)
 {
 	unsigned int i, level;
+#ifdef CONFIG_PREEMPT
+	/*
+	 * Avoid wbinvd() because it causes latencies on all CPUs,
+	 * regardless of any CPU isolation that may be in effect.
+	 */
+	unsigned long do_wbinvd = 0;
+#else
 	unsigned long do_wbinvd = cache && numpages >= 1024; /* 4M threshold */
+#endif
 
 	BUG_ON(irqs_disabled());
 
-- 
2.10.2

  parent reply	other threads:[~2017-03-07 21:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-07 21:20 [PATCH RT 00/10] Linux 4.4.50-rt63-rc1 Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 01/10] cpuset: Convert callback_lock to raw_spinlock_t Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 02/10] radix-tree: use local locks Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 03/10] pinctrl: qcom: Use raw spinlock variants Steven Rostedt
2017-03-07 21:20 ` Steven Rostedt [this message]
2017-03-07 21:20 ` [PATCH RT 05/10] rt: Drop mutex_disable() on !DEBUG configs and the GPL suffix from export symbol Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 06/10] sched/rt: Add a missing rescheduling point Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 07/10] lockdep: Handle statically initialized PER_CPU locks proper Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 08/10] rt: Drop the removal of _GPL from rt_mutex_destroy()s EXPORT_SYMBOL Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 09/10] lockdep: Fix compilation error for !CONFIG_MODULES and !CONFIG_SMP Steven Rostedt
2017-03-07 21:20 ` [PATCH RT 10/10] Linux 4.4.50-rt63-rc1 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=20170307212313.787317186@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=C.Emde@osadl.org \
    --cc=bigeasy@linutronix.de \
    --cc=jkacur@redhat.com \
    --cc=john.ogness@linutronix.de \
    --cc=julia@ni.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=peterz@infradead.org \
    --cc=stable-rt@vger.kernel.org \
    --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

all inboxes | Powered by JetHome®