linux/arch/s390
Valentin Schneider f13f015673 s390: preempt: Fix preempt_count initialization
commit 6a942f5780 upstream.

S390's init_idle_preempt_count(p, cpu) doesn't actually let us initialize the
preempt_count of the requested CPU's idle task: it unconditionally writes
to the current CPU's. This clearly conflicts with idle_threads_init(),
which intends to initialize *all* the idle tasks, including their
preempt_count (or their CPU's, if the arch uses a per-CPU preempt_count).

Unfortunately, it seems the way s390 does things doesn't let us initialize
every possible CPU's preempt_count early on, as the pages where this
resides are only allocated when a CPU is brought up and are freed when it
is brought down.

Let the arch-specific code set a CPU's preempt_count when its lowcore is
allocated, and turn init_idle_preempt_count() into an empty stub.

Fixes: f1a0a376ca ("sched/core: Initialize the idle task with preemption disabled")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Link: https://lore.kernel.org/r/20210707163338.1623014-1-valentin.schneider@arm.com
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2021-07-14 17:07:51 +02:00
..
appldata s390/appldata: use struct_size() helper 2020-06-29 16:32:34 +02:00
boot s390: mm: Fix secure storage access exception handling 2021-07-14 17:06:13 +02:00
configs s390/configs: change CONFIG_VIRTIO_CONSOLE to "m" 2021-04-30 17:17:01 +02:00
crypto s390/archrandom: add parameter check for s390_arch_random_generate 2021-04-21 12:32:12 +02:00
hypfs s390/hypfs: use store_tod_clock_ext() 2021-02-13 17:17:55 +01:00
include s390: preempt: Fix preempt_count initialization 2021-07-14 17:07:51 +02:00
kernel s390: preempt: Fix preempt_count initialization 2021-07-14 17:07:51 +02:00
kvm KVM: s390: get rid of register asm usage 2021-07-14 17:06:29 +02:00
lib s390/test_unwind: print test suite start/end info 2021-04-15 17:47:42 +02:00
mm s390: mm: Fix secure storage access exception handling 2021-07-14 17:06:13 +02:00
net s390/bpf: Implement new atomic ops 2021-03-16 12:18:49 -07:00
pci s390/pci: handle stale deconfiguration events 2021-04-30 17:17:00 +02:00
purgatory - Add support for the hugetlb_cma command line option to allocate gigantic 2020-12-14 16:22:26 -08:00
tools s390/opcodes: rename selhhhr to selfhr 2021-02-24 00:31:22 +01:00
Kbuild s390/numa: move code to arch/s390/kernel 2020-08-11 18:16:55 +02:00
Kconfig s390: appldata depends on PROC_SYSCTL 2021-07-14 17:07:35 +02:00
Kconfig.debug s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
Makefile arch: s390: Remove CONFIG_OPROFILE support 2021-01-29 10:05:51 +05:30