linux-uconsole/arch/s390/kernel
Heiko Carstens a5011c7890 s390/smp: fix physical to logical CPU map for SMT
[ Upstream commit 72a81ad9d6 ]

If an SMT capable system is not IPL'ed from the first CPU the setup of
the physical to logical CPU mapping is broken: the IPL core gets CPU
number 0, but then the next core gets CPU number 1. Correct would be
that all SMT threads of CPU 0 get the subsequent logical CPU numbers.

This is important since a lot of code (like e.g. the CPU topology
code) assumes that CPU maps are setup like this. If the mapping is
broken the system will not IPL due to broken topology masks:

[    1.716341] BUG: arch topology broken
[    1.716342]      the SMT domain not a subset of the MC domain
[    1.716343] BUG: arch topology broken
[    1.716344]      the MC domain not a subset of the BOOK domain

This scenario can usually not happen since LPARs are always IPL'ed
from CPU 0 and also re-IPL is intiated from CPU 0. However older
kernels did initiate re-IPL on an arbitrary CPU. If therefore a re-IPL
from an old kernel into a new kernel is initiated this may lead to
crash.

Fix this by setting up the physical to logical CPU mapping correctly.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-09 10:19:09 +01:00
..
syscalls kbuild: do not redirect the first prerequisite for filechk 2018-07-28 10:34:10 +09:00
vdso32 s390/kasan: avoid vdso instrumentation 2019-11-24 08:20:43 +01:00
vdso64 s390/kasan: avoid vdso instrumentation 2019-11-24 08:20:43 +01:00
.gitignore
alternative.c s390: add automatic detection of the spectre defense 2018-03-28 08:38:24 +02:00
asm-offsets.c s390: remove gcc version check (4.3 or newer) 2018-08-21 15:57:58 +02:00
audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
audit.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
base.S s390/kernel: use expoline for indirect branches 2018-05-07 21:12:39 +02:00
cache.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compat_audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compat_linux.c mm: add ksys_readahead() helper; remove in-kernel calls to sys_readahead() 2018-04-02 20:16:12 +02:00
compat_linux.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compat_ptrace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compat_signal.c s390/compat: fix setup_frame32 2018-04-10 07:38:54 +02:00
compat_wrapper.c s390: wire up rseq system call 2018-07-04 08:35:18 +02:00
cpcmd.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
crash_dump.c s390/kdump: Remove kzalloc_panic 2018-08-16 14:49:15 +02:00
debug.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
diag.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dis.c s390/disassembler: don't hide instruction addresses 2019-12-31 16:36:00 +01:00
dumpstack.c s390: kernel: add SPDX identifiers to the remaining files 2017-11-24 15:37:12 +01:00
early.c s390/early: improve machine detection 2019-01-31 08:14:35 +01:00
early_nobss.c s390/early: move functions which may not access bss section to extra file 2018-05-09 10:55:01 +02:00
early_printk.c s390/hibernate: fix error handling when suspend cpu != resume cpu 2018-09-20 13:20:23 +02:00
ebcdic.c s390: ebcdic: convert comments to UTF-8 2018-08-23 18:48:43 -07:00
entry.h s390/boot: make head.S and als.c be part of the decompressor only 2018-06-25 10:14:38 +02:00
entry.S s390: wire up rseq system call 2018-07-04 08:35:18 +02:00
fpu.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ftrace.c s390/function_graph: Simplify with function_graph_enter() 2018-12-05 19:32:10 +01:00
guarded_storage.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-11-13 11:47:01 -08:00
head64.S s390: correct _stext offset 2018-07-02 11:24:59 +02:00
idle.c s390/idle: fix cpu idle time calculation 2019-11-06 13:06:20 +01:00
ipl.c s390/ipl: remove reipl_method and dump_method 2018-04-10 07:39:00 +02:00
irq.c s390: remove indirect branch from do_softirq_own_stack 2018-05-07 21:12:42 +02:00
jump_label.c jump_label: move 'asm goto' support test to Kconfig 2019-06-04 08:02:34 +02:00
kdebugfs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
kexec_elf.c s390/kexec_file: Fix detection of text segment in ELF loader 2019-05-31 06:46:13 -07:00
kexec_image.c s390/kexec_file: Add crash support to image loader 2018-04-16 09:10:22 +02:00
kprobes.c bpf/error-inject/kprobes: Clear current_kprobe and enable preempt in kprobe 2018-06-21 12:33:19 +02:00
lgr.c s390: kernel: add SPDX identifiers to the remaining files 2017-11-24 15:37:12 +01:00
machine_kexec.c s390/ipl: correct kdump reipl block checksum calculation 2018-04-10 07:39:00 +02:00
machine_kexec_file.c s390/kexec_file: Add ELF loader 2018-04-16 09:10:23 +02:00
Makefile s390/kasan: avoid instrumentation of early C code 2019-11-24 08:20:44 +01:00
mcount.S s390/ftrace: Add -mfentry and -mnop-mcount support 2018-08-15 22:39:53 -04:00
module.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
nmi.c headers: untangle kmemleak.h from mm.h 2018-04-05 21:36:27 -07:00
nospec-branch.c s390/speculation: Support 'mitigations=' cmdline option 2019-05-14 19:17:59 +02:00
nospec-sysfs.c s390: detect etoken facility 2018-07-18 08:32:17 +02:00
os_info.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perf_cpum_cf.c s390/cpum_cf: Reject request for sampling in event initialization 2018-12-17 09:24:32 +01:00
perf_cpum_cf_events.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
perf_cpum_sf.c s390/cpum_sf: Avoid SBD overflow condition in irq handler 2020-01-09 10:18:58 +01:00
perf_event.c s390: kernel: Remove redundant license text 2017-11-24 15:37:20 +01:00
perf_regs.c s390/perf: fix gcc 8 array-bounds warning 2018-07-02 11:24:54 +02:00
pgm_check.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
process.c s390/process: avoid potential reading of freed stack 2019-10-11 18:20:41 +02:00
processor.c s390: run user space and KVM guests with modified branch prediction 2018-02-05 14:48:50 +01:00
ptrace.c s390/gs: add compat regset for the guarded storage broadcast control block 2017-11-28 17:33:15 +01:00
reipl.S s390/kernel: use expoline for indirect branches 2018-05-07 21:12:39 +02:00
relocate_kernel.S s390: assume diag308 set always works 2018-04-10 07:38:59 +02:00
runtime_instr.c s390/runtime_instrumentation: re-add signum system call parameter 2018-02-05 07:34:50 +01:00
setup.c s390/setup: fix boot crash for machine without EDAT-1 2019-03-23 20:10:13 +01:00
signal.c s390: wire up rseq system call 2018-07-04 08:35:18 +02:00
smp.c s390/smp: fix physical to logical CPU map for SMT 2020-01-09 10:19:09 +01:00
stacktrace.c s390: kernel: add SPDX identifiers to the remaining files 2017-11-24 15:37:12 +01:00
sthyi.c s390/sthyi: Fix machine name validity indication 2018-11-13 11:08:21 -08:00
suspend.c s390: unify linker symbols usage 2018-02-27 08:05:23 +01:00
swsusp.S s390/hibernate: fix error handling when suspend cpu != resume cpu 2018-09-20 13:20:23 +02:00
sys_s390.c mm: add ksys_mmap_pgoff() helper; remove in-kernel calls to sys_mmap_pgoff() 2018-04-02 20:16:11 +02:00
sysinfo.c s390/sysinfo: add missing #ifdef CONFIG_PROC_FS 2018-07-02 12:32:20 +02:00
time.c s390/time: Remove read_boot_clock64() 2018-07-20 00:02:41 +02:00
topology.c s390/topology: avoid firing events before kobjs are created 2019-10-11 18:20:42 +02:00
trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
traps.c signal/s390: Use force_sig_fault where appropriate 2018-04-25 10:44:08 -05:00
uprobes.c s390/uprobes: implement arch_uretprobe_is_alive() 2018-04-23 07:57:16 +02:00
vdso.c s390/vdso: correct vdso mapping for compat tasks 2019-11-20 18:47:53 +01:00
vmlinux.lds.S s390: put _stext and _etext into .text section 2019-08-29 08:28:41 +02:00
vtime.c s390: kernel: add SPDX identifiers to the remaining files 2017-11-24 15:37:12 +01:00