public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mark Rutland <mark.rutland@arm.com>
Subject: [patch 01/18] init: Pin init task to boot cpu initially
Date: Sun, 14 May 2017 20:27:17 +0200	[thread overview]
Message-ID: <20170514183612.517732149@linutronix.de> (raw)
In-Reply-To: 20170514182716.347236777@linutronix.de

[-- Attachment #1: init--Pin-init-task-to-boot-cpu-initially.patch --]
[-- Type: text/plain, Size: 1408 bytes --]

Some of the boot code in init_kernel_freeable() which runs before SMP
bringup assumes (rightfully) that it runs on the boot cpu and therefor can
use smp_processor_id() in preemptible context.

That works so far because the smp_processor_id() check starts to be
effective after smp bringup. That's just wrong. Starting with SMP bringup
and the ability to move threads around, smp_processor_id() in preemptible
context is broken.

Aside of that it does not make sense to allow init to run on all cpus
before sched_smp_init() has been run.

Pin the init to the boot cpu so the existing code can continue to use
smp_processor_id() without triggering the checks when the enabling of those
checks starts earlier.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 init/main.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/init/main.c
+++ b/init/main.c
@@ -1015,10 +1015,13 @@ static noinline void __init kernel_init_
 	 * init can allocate pages on any node
 	 */
 	set_mems_allowed(node_states[N_MEMORY]);
+
 	/*
-	 * init can run on any cpu.
+	 * Pin init on the boot cpu. Task migration is not properly working
+	 * until sched_init_smp() has been run. It will set the allowed
+	 * cpus for init to the non isolated cpus.
 	 */
-	set_cpus_allowed_ptr(current, cpu_all_mask);
+	set_cpus_allowed_ptr(current, cpumask_of(raw_smp_processor_id()));
 
 	cad_pid = task_pid(current);
 

  reply	other threads:[~2017-05-14 18:37 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-14 18:27 [patch 00/18] init: Enable might_sleep() and smp_processor_id() debugging early Thomas Gleixner
2017-05-14 18:27 ` Thomas Gleixner [this message]
2017-05-15 14:10   ` [patch 01/18] init: Pin init task to boot cpu initially Steven Rostedt
2017-05-14 18:27 ` [patch 02/18] arm: Adjust system_state check Thomas Gleixner
2017-05-14 18:27 ` [patch 03/18] arm64: " Thomas Gleixner
2017-05-14 18:27 ` [patch 04/18] x86/smp: " Thomas Gleixner
2017-05-15 14:17   ` Steven Rostedt
2017-05-14 18:27 ` [patch 05/18] metag: " Thomas Gleixner
2017-05-14 18:27 ` [patch 06/18] powerpc: " Thomas Gleixner
2017-05-15  9:19   ` Michael Ellerman
2017-05-14 18:27 ` [patch 07/18] ACPI: " Thomas Gleixner
2017-05-15 10:20   ` Mark Rutland
2017-05-15 10:25     ` Thomas Gleixner
2017-05-15 14:27   ` Steven Rostedt
2017-05-16 18:13     ` Thomas Gleixner
2017-05-14 18:27 ` [patch 08/18] mm: " Thomas Gleixner
2017-05-15  6:18   ` Greg Kroah-Hartman
2017-05-15 14:33     ` Steven Rostedt
2017-05-14 18:27 ` [patch 09/18] cpufreq/pasemi: " Thomas Gleixner
2017-05-15  5:24   ` Viresh Kumar
2017-05-15 14:34     ` Steven Rostedt
2017-05-14 18:27 ` [patch 10/18] iommu/vt-d: Adjust system_state checks Thomas Gleixner
2017-05-15 14:42   ` Joerg Roedel
2017-05-14 18:27 ` [patch 11/18] iommu/of: Adjust system_state check Thomas Gleixner
2017-05-15 10:45   ` Robin Murphy
2017-05-15 14:42   ` Joerg Roedel
2017-05-14 18:27 ` [patch 12/18] async: Adjust system_state checks Thomas Gleixner
2017-05-14 18:39   ` Arjan van de Ven
2017-05-14 18:27 ` [patch 13/18] extable: " Thomas Gleixner
2017-05-15 14:37   ` Steven Rostedt
2017-05-14 18:27 ` [patch 14/18] printk: " Thomas Gleixner
2017-05-15 14:53   ` Steven Rostedt
2017-05-14 18:27 ` [patch 15/18] mm/vmscan: " Thomas Gleixner
2017-05-15 14:54   ` Steven Rostedt
2017-05-14 18:27 ` [patch 16/18] init: Introduce SYSTEM_BOOTING_UP/SMP states Thomas Gleixner
2017-05-15  9:58   ` Juergen Gross
2017-05-15 14:58   ` Steven Rostedt
2017-05-14 18:27 ` [patch 17/18] sched: Enable might_sleep() checks early Thomas Gleixner
2017-05-15 15:10   ` Steven Rostedt
2017-05-15 19:12     ` Thomas Gleixner
2017-05-16  7:14       ` Peter Zijlstra
2017-05-16  7:33         ` Thomas Gleixner
2017-05-16 13:14           ` Steven Rostedt
2017-05-14 18:27 ` [patch 18/18] sched: Enable smp_processor_id() " Thomas Gleixner
2017-05-15 15:12   ` Steven Rostedt
2017-05-15 15:36     ` Thomas Gleixner
2017-05-15 11:53 ` [patch 00/18] init: Enable might_sleep() and smp_processor_id() debugging early Mark Rutland

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=20170514183612.517732149@linutronix.de \
    --to=tglx@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    /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