linux_dsm_epyc7002/arch/s390/include/asm
Gerald Schaefer 55a5542a54 s390/hibernate: fix error handling when suspend cpu != resume cpu
The resume code checks if the resume cpu is the same as the suspend cpu.
If not, and if it is also not possible to switch to the suspend cpu, an
error message should be printed and the resume process should be stopped
by loading a disabled wait psw.

The current logic is broken in multiple ways, the message is never printed,
and the disabled wait psw never loaded because the kernel panics before that:
- sam31 and SIGP_SET_ARCHITECTURE to ESA mode is wrong, this will break
  on the first 64bit instruction in sclp_early_printk().
- The init stack should be used, but the stack pointer is not set up correctly
  (missing aghi %r15,-STACK_FRAME_OVERHEAD).
- __sclp_early_printk() checks the sclp_init_state. If it is not
  sclp_init_state_uninitialized, it simply returns w/o printing anything.
  In the resumed kernel however, sclp_init_state will never be uninitialized.

This patch fixes those issues by removing the sam31/ESA logic, adding a
correct init stack pointer, and also introducing sclp_early_printk_force()
to allow using sclp_early_printk() even when sclp_init_state is not
uninitialized.

Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2018-09-20 13:20:23 +02:00
..
fpu
trace
airq.h
alternative-asm.h s390: add assembler macros for CPU alternatives 2018-03-28 08:38:27 +02:00
alternative.h
ap.h s390/zcrypt: switch return type to bool for ap_instructions_available() 2018-08-20 16:02:10 +02:00
appldata.h
archrandom.h s390/archrandom: Rework arch random implementation. 2018-05-30 11:18:04 +02:00
asm-prototypes.h
atomic_ops.h
atomic.h atomics/treewide: Make conditional inc/dec ops optional 2018-06-21 14:25:24 +02:00
barrier.h s390: add optimized array_index_mask_nospec 2018-02-05 07:51:41 +01:00
bitops.h s390/bitops: add test_and_clear_bit_inv() 2018-01-26 10:47:38 +01:00
bug.h
bugs.h
cache.h
ccwdev.h s390/cio: add helper to query utility strings per given ccw device 2018-05-23 08:06:56 +02:00
ccwgroup.h s390/cio: add test for ccwgroup device 2018-05-23 08:06:58 +02:00
checksum.h
chpid.h s390/cio: rename struct channel_path_desc 2018-03-26 16:13:11 +02:00
cio.h s390: assume diag308 set always works 2018-04-10 07:38:59 +02:00
clp.h
cmb.h
cmpxchg.h
compat.h y2038: s390: Remove unneeded ipc uapi header files 2018-04-20 16:19:58 +02:00
cpacf.h
cpcmd.h
cpu_mf.h s390/cpum_sf: save TOD clock base in SDBs for time conversion 2018-07-31 11:02:27 +02:00
cpu.h
cpufeature.h
cputime.h
crw.h
css_chars.h s390/cio: sanitize css_general_characteristics definition 2018-06-12 15:14:05 +02:00
ctl_reg.h KVM: s390: introduce defines for control registers 2018-05-17 09:02:27 +02:00
current.h
debug.h
delay.h
diag.h
dis.h
dma.h
dwarf.h
eadm.h s390/eadm: fix CONFIG_BLOCK include dependency 2018-02-02 10:47:14 +01:00
ebcdic.h
elf.h compat: Move compat_timespec/ timeval to compat_time.h 2018-04-19 13:29:54 +02:00
exec.h
extable.h
extmem.h
facility.h s390/alternative: use a copy of the facility bit mask 2018-02-05 13:49:16 +01:00
fcx.h
ftrace.h s390/ftrace: Add -mfentry and -mnop-mcount support 2018-08-15 22:39:53 -04:00
futex.h
gmap.h s390/mm: Add huge page dirty sync support 2018-07-30 11:20:18 +01:00
hardirq.h softirq/s390: Move default mutators of overwritten softirq mask to s390 2018-05-14 11:25:28 +02:00
hugetlb.h s390/mm: Clear skeys for newly mapped huge guest pmds 2018-07-30 11:20:18 +01:00
hw_irq.h
idals.h
idle.h
io.h
ipl.h s390/ipl: correct kdump reipl block checksum calculation 2018-04-10 07:39:00 +02:00
irq.h
irqflags.h
isc.h
itcw.h
jump_label.h
Kbuild The core framework has a handful of patches this time around, mostly due 2018-02-01 16:56:07 -08:00
kdebug.h
kexec.h s390/kexec_file: Add ELF loader 2018-04-16 09:10:23 +02:00
kprobes.h s390/kprobes: Remove jprobe implementation 2018-06-21 12:33:10 +02:00
kvm_host.h KVM: s390: Beautify skey enable check 2018-07-30 17:05:52 +02:00
kvm_para.h KVM: Introduce paravirtualization hints and KVM_HINTS_DEDICATED 2018-03-06 18:40:44 +01:00
linkage.h
livepatch.h
lowcore.h s390: align struct lowcore to double page size 2018-07-02 11:25:01 +02:00
mmu_context.h s390/mm: Add huge page gmap linking support 2018-07-30 23:13:38 +02:00
mmu.h KVM: s390: Properly lock mm context allow_gmap_hpage_1m setting 2018-09-04 11:40:26 +02:00
mmzone.h
module.h
nmi.h
nospec-branch.h s390: correct nospec auto detection init order 2018-04-11 17:46:00 +02:00
nospec-insn.h s390: disable asm code expolines if cc does not support it 2018-06-25 10:14:37 +02:00
numa.h
os_info.h
page-states.h
page.h
pci_clp.h
pci_debug.h
pci_dma.h
pci_insn.h
pci_io.h
pci.h s390/pci: add fmt3 fmb 2018-07-04 08:35:58 +02:00
percpu.h
perf_event.h
pgalloc.h s390/mm: provide base_asce_alloc() / base_asce_free() helper functions 2018-02-22 15:31:23 +01:00
pgtable.h s390/mm: Add huge page dirty sync support 2018-07-30 11:20:18 +01:00
pkey.h
pnet.h s390/net: add pnetid support 2018-05-30 11:18:03 +02:00
preempt.h
processor.h s390: run user space and KVM guests with modified branch prediction 2018-02-05 14:48:50 +01:00
ptrace.h
purgatory.h s390/purgatory: Remove duplicate variable definitions 2018-07-06 08:47:51 +02:00
qdio.h s390/qdio: reset old sbal_state flags 2018-06-25 10:14:37 +02:00
runtime_instr.h s390/runtime instrumentation: provide uapi header file 2018-02-02 10:47:15 +01:00
schid.h
sclp.h s390/hibernate: fix error handling when suspend cpu != resume cpu 2018-09-20 13:20:23 +02:00
scsw.h s390: fix comment for scsw_cmd_is_valid_sctl 2018-02-22 15:31:24 +01:00
seccomp.h
sections.h s390: remove unused _ehead symbol 2018-07-02 11:24:58 +02:00
segment.h
serial.h
set_memory.h
setup.h s390/boot: block uncompressed vmlinux booting attempts 2018-07-02 11:25:05 +02:00
shmparam.h
signal.h
sigp.h
smp.h
sparsemem.h
spinlock_types.h
spinlock.h
stp.h
string.h
switch_to.h
syscall.h
sysinfo.h s390/sysinfo: add and display licensed internal code identifier 2018-02-02 10:47:15 +01:00
termios.h
thread_info.h s390: update sampling tag after task pid change 2018-04-23 07:57:17 +02:00
timex.h
tlb.h
tlbflush.h
topology.h
uaccess.h
unistd.h
uprobes.h
user.h
vdso.h
vga.h
vtime.h
vtimer.h
vx-insn.h
xor.h