mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Borislav Petkov <bp@alien8.de>,
	Li Zhong <zhong@linux.vnet.ibm.com>,
	Mike Galbraith <efault@gmx.de>, Kevin Hilman <khilman@linaro.org>
Subject: [PATCH 07/18] nohz: Selectively enable context tracking on full dynticks CPUs
Date: Wed, 17 Jul 2013 18:44:20 +0200	[thread overview]
Message-ID: <1374079471-3129-8-git-send-email-fweisbec@gmail.com> (raw)
In-Reply-To: <1374079471-3129-1-git-send-email-fweisbec@gmail.com>

The code is ready to do so in the context tracking subsystem, now
we just need to pass our cpu range selection to it from the
full dynticks subsystem.

This way we can spare the overhead of RCU user extended quiescent
state and vtime maintainance on these CPUs. Just keep in mind the
context tracking itself is still necessary everywhere.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Kevin Hilman <khilman@linaro.org>
---
 include/linux/context_tracking.h |    2 ++
 init/Kconfig                     |    2 +-
 kernel/context_tracking.c        |    5 +++++
 kernel/time/Kconfig              |    1 -
 kernel/time/tick-sched.c         |    6 ++++++
 5 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index 12045ce..2c2b73aa 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -34,6 +34,8 @@ static inline bool context_tracking_active(void)
 	return __this_cpu_read(context_tracking.active);
 }
 
+extern void context_tracking_cpu_set(int cpu);
+
 extern void user_enter(void);
 extern void user_exit(void);
 
diff --git a/init/Kconfig b/init/Kconfig
index 247084b..914da3f 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -527,7 +527,7 @@ config RCU_USER_QS
 config CONTEXT_TRACKING_FORCE
 	bool "Force context tracking"
 	depends on CONTEXT_TRACKING
-	default CONTEXT_TRACKING
+	default y if !NO_HZ_FULL
 	help
 	  Probe on user/kernel boundaries by default in order to
 	  test the features that rely on it such as userspace RCU extended
diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c
index 7b095de..72bcb25 100644
--- a/kernel/context_tracking.c
+++ b/kernel/context_tracking.c
@@ -26,6 +26,11 @@ DEFINE_PER_CPU(struct context_tracking, context_tracking) = {
 #endif
 };
 
+void context_tracking_cpu_set(int cpu)
+{
+	per_cpu(context_tracking.active, cpu) = true;
+}
+
 /**
  * user_enter - Inform the context tracking that the CPU is going to
  *              enter userspace mode.
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index 70f27e8..747bbc7 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -105,7 +105,6 @@ config NO_HZ_FULL
 	select RCU_USER_QS
 	select RCU_NOCB_CPU
 	select VIRT_CPU_ACCOUNTING_GEN
-	select CONTEXT_TRACKING_FORCE
 	select IRQ_WORK
 	help
 	 Adaptively try to shutdown the tick whenever possible, even when
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 088c411..062759e 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -23,6 +23,7 @@
 #include <linux/irq_work.h>
 #include <linux/posix-timers.h>
 #include <linux/perf_event.h>
+#include <linux/context_tracking.h>
 
 #include <asm/irq_regs.h>
 
@@ -344,11 +345,16 @@ static int tick_nohz_init_all(void)
 
 void __init tick_nohz_init(void)
 {
+	int cpu;
+
 	if (!have_nohz_full_mask) {
 		if (tick_nohz_init_all() < 0)
 			return;
 	}
 
+	for_each_cpu(cpu, nohz_full_mask)
+		context_tracking_cpu_set(cpu);
+
 	cpu_notifier(tick_nohz_cpu_down_callback, 0);
 	cpulist_scnprintf(nohz_full_buf, sizeof(nohz_full_buf), nohz_full_mask);
 	pr_info("NO_HZ: Full dynticks CPUs: %s.\n", nohz_full_buf);
-- 
1.7.5.4


  parent reply	other threads:[~2013-07-17 16:51 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-17 16:44 [PATCH 00/18] nohz patches for 3.12 preview Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 01/18] nohz: Do not warn about unstable tsc unless user uses nohz_full Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 02/18] nohz: fix compile warning in tick_nohz_init() Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 03/18] sched: Consolidate open coded preemptible() checks Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 04/18] context_tracing: Fix guest accounting with native vtime Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 05/18] vtime: Update a few comments Frederic Weisbecker
2013-07-17 17:57   ` Steven Rostedt
2013-07-18 21:30     ` Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 06/18] context_tracking: Fix runtime CPU off-case Frederic Weisbecker
2013-07-17 16:44 ` Frederic Weisbecker [this message]
2013-07-17 18:27   ` [PATCH 07/18] nohz: Selectively enable context tracking on full dynticks CPUs Steven Rostedt
2013-07-18 22:13     ` Frederic Weisbecker
2013-07-18 22:51       ` Steven Rostedt
2013-07-19 14:19         ` Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 08/18] context_tracking: Ground setup for static key use Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 09/18] context_tracking: Optimize main APIs off case with static key Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 10/18] context_tracking: Optimize context switch off case with static keys Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 11/18] context_tracking: User/kernel broundary cross trace events Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 12/18] vtime: Remove a few unneeded generic vtime state checks Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 13/18] vtime: Fix racy cputime delta update Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 14/18] context_tracking: Split low level state headers Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 15/18] vtime: Describe overriden functions in dedicated arch headers Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 16/18] vtime: Optimize full dynticks accounting off case with static keys Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 17/18] vtime: Always scale generic vtime accounting results Frederic Weisbecker
2013-07-17 16:44 ` [PATCH 18/18] vtime: Always debug check snapshot source _before_ updating it Frederic Weisbecker

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=1374079471-3129-8-git-send-email-fweisbec@gmail.com \
    --to=fweisbec@gmail.com \
    --cc=bp@alien8.de \
    --cc=efault@gmx.de \
    --cc=khilman@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=zhong@linux.vnet.ibm.com \
    /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

Powered by JetHome