mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Julia Cartwright <julia@ni.com>
To: <linux-kernel@vger.kernel.org>, <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>,
	Steven Rostedt <rostedt@goodmis.org>, <stable-rt@vger.kernel.org>,
	John Ogness <john.ogness@linutronix.de>
Subject: [PATCH RT 4/9] x86/mm/cpa: avoid wbinvd() for PREEMPT
Date: Tue, 7 Mar 2017 16:32:54 -0600	[thread overview]
Message-ID: <20dc04833e45cf6a3b5fcee0f357e4e829a78b8a.1488919535.git.julia@ni.com> (raw)
In-Reply-To: <cover.1488919535.git.julia@ni.com>

4.1.38-rt46-rc1 stable review patch.
If you have any objection to the inclusion of this patch, let me know.

--- 8< --- 8< --- 8< ---
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>
(cherry picked from commit 9e539d7327b265c639c859ab1fb7d3699ba0cb19)
Signed-off-by: Julia Cartwright <julia@ni.com>
---
 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 2dd9b3ad3bb5..4314b9103ff0 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -209,7 +209,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.11.1

  parent reply	other threads:[~2017-03-07 23:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-07 22:32 [PATCH RT 0/9] Linux 4.1.38-rt46-rc1 Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 1/9] cpuset: Convert callback_lock to raw_spinlock_t Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 2/9] radix-tree: use local locks Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 3/9] pinctrl: qcom: Use raw spinlock variants Julia Cartwright
2017-03-07 22:32 ` Julia Cartwright [this message]
2017-03-07 22:32 ` [PATCH RT 5/9] rt: Drop mutex_disable() on !DEBUG configs and the GPL Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 6/9] lockdep: Handle statically initialized PER_CPU locks Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 7/9] rt: Drop the removal of _GPL from rt_mutex_destroy()'s Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 8/9] lockdep: Fix compilation error for !CONFIG_MODULES and Julia Cartwright
2017-03-07 22:32 ` [PATCH RT 9/9] Linux 4.1.38-rt46-rc1 Julia Cartwright

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=20dc04833e45cf6a3b5fcee0f357e4e829a78b8a.1488919535.git.julia@ni.com \
    --to=julia@ni.com \
    --cc=C.Emde@osadl.org \
    --cc=bigeasy@linutronix.de \
    --cc=jkacur@redhat.com \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=rostedt@goodmis.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®