public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: mingo@kernel.org
Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	fweisbec@gmail.com, oleg@redhat.com, umgwanakikbuti@gmail.com,
	tglx@linutronix.de, rostedt@goodmis.org,
	Peter Zijlstra <peterz@infradead.org>
Subject: [PATCH v2 01/12] sched: Simplify INIT_PREEMPT_COUNT
Date: Wed, 30 Sep 2015 09:10:36 +0200	[thread overview]
Message-ID: <20150930072303.631400497@infradead.org> (raw)
In-Reply-To: 20150930071035.514587432@infradead.org

[-- Attachment #1: peterz-kill-preempt_active-1.patch --]
[-- Type: text/plain, Size: 1682 bytes --]

As per commit d86ee4809d03 ("sched: optimize cond_resched()") we need
PREEMPT_ACTIVE to avoid cond_resched() from working before the
scheduler is setup.

However, keeping preemption disabled should do the same thing already,
making the PREEMPT_ACTIVE part entirely redundant.

The only complication is !PREEMPT_COUNT kernels, where
PREEMPT_DISABLED ends up being 0. Instead we use an unconditional
PREEMPT_OFFSET to set preempt_count() even on !PREEMPT_COUNT kernels.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
 include/linux/sched.h |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -606,19 +606,18 @@ struct task_cputime_atomic {
 #endif
 
 /*
- * Disable preemption until the scheduler is running.
- * Reset by start_kernel()->sched_init()->init_idle().
+ * Disable preemption until the scheduler is running -- use an unconditional
+ * value so that it also works on !PREEMPT_COUNT kernels.
  *
- * We include PREEMPT_ACTIVE to avoid cond_resched() from working
- * before the scheduler is active -- see should_resched().
+ * Reset by start_kernel()->sched_init()->init_idle().
  */
-#define INIT_PREEMPT_COUNT	(PREEMPT_DISABLED + PREEMPT_ACTIVE)
+#define INIT_PREEMPT_COUNT	PREEMPT_OFFSET
 
 /**
  * struct thread_group_cputimer - thread group interval timer counts
  * @cputime_atomic:	atomic thread group interval timers.
  * @running:		non-zero when there are timers running and
- * 			@cputime receives updates.
+ *			@cputime receives updates.
  *
  * This structure contains the version of task_cputime, above, that is
  * used for thread group CPU timer calculations.



  reply	other threads:[~2015-09-30  7:31 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-30  7:10 [PATCH v2 00/12] sched: Killing PREEMPT_ACTIVE Peter Zijlstra
2015-09-30  7:10 ` Peter Zijlstra [this message]
2015-09-30  9:04   ` [PATCH v2 01/12] sched: Simplify INIT_PREEMPT_COUNT Steven Rostedt
2015-09-30 20:39     ` Thomas Gleixner
2015-10-01 13:25   ` Frederic Weisbecker
2015-09-30  7:10 ` [PATCH v2 02/12] sched: Rework TASK_DEAD preemption exception Peter Zijlstra
2015-09-30  7:10 ` [PATCH v2 03/12] sched: Create preempt_count invariant Peter Zijlstra
2015-09-30  9:32   ` Steven Rostedt
2015-09-30 11:13     ` Peter Zijlstra
2015-09-30 13:36       ` Steven Rostedt
2015-09-30  7:10 ` [PATCH v2 04/12] sched: Add preempt argument to __schedule() Peter Zijlstra
2015-09-30  7:10 ` [PATCH v2 05/12] sched: Fix trace_sched_switch() Peter Zijlstra
2015-09-30  7:10 ` [PATCH v2 06/12] sched: Stop setting PREEMPT_ACTIVE Peter Zijlstra
2015-10-01 15:27   ` Frederic Weisbecker
2015-09-30  7:10 ` [PATCH v2 07/12] sched: Robustify preemption leak checks Peter Zijlstra
2015-09-30  9:35   ` Steven Rostedt
2015-09-30  7:10 ` [PATCH v2 08/12] sched: Simplify preempt_count tests Peter Zijlstra
2015-10-01 15:31   ` Frederic Weisbecker
2015-09-30  7:10 ` [PATCH v2 09/12] sched, x86: Kill saved_preempt_count Peter Zijlstra
2015-10-01 15:40   ` Frederic Weisbecker
2015-09-30  7:10 ` [PATCH v2 10/12] sched: Kill PREEMPT_ACTIVE Peter Zijlstra
2015-10-01 15:41   ` Frederic Weisbecker
2015-09-30  7:10 ` [PATCH v2 11/12] sched: More notrace Peter Zijlstra
2015-09-30  7:10 ` [PATCH v2 12/12] sched: Add preempt_count invariant check Peter Zijlstra
2015-09-30  9:38   ` Steven Rostedt
2015-09-30 11:15     ` Peter Zijlstra

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=20150930072303.631400497@infradead.org \
    --to=peterz@infradead.org \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=umgwanakikbuti@gmail.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