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);
next prev parent 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