linux/arch/s390/include/asm
Alexander Gordeev e7ec1d2eac s390/mcck: cleanup user process termination path
If a machine check interrupt hits while user process is
running __s390_handle_mcck() helper function is called
directly from the interrupt handler and terminates the
current process by calling make_task_dead() routine.

The make_task_dead() is not allowed to be called from
interrupt context which forces the machine check handler
switch to the kernel stack and enable local interrupts
first.

The __s390_handle_mcck() could also be called to service
pending work, but this time from the external interrupts
handler. It is the machine check handler that establishes
the work and schedules the external interrupt, therefore
the machine check interrupt itself should be disabled
while reading out the corresponding variable:

	local_mcck_disable();
	mcck = *this_cpu_ptr(&cpu_mcck);
	memset(this_cpu_ptr(&cpu_mcck), 0, sizeof(mcck));
	local_mcck_enable();

However, local_mcck_disable() does not have effect when
__s390_handle_mcck() is called directly form the machine
check handler, since the machine check interrupt is still
disabled. Therefore, it is not the opening bracket to the
following local_mcck_enable() function.

Simplify the user process termination flow by scheduling
the external interrupt and killing the affected process
from the interrupt context.

Assume a kernel-generated signal is always delivered and
ignore a value returned by do_send_sig_info() funciton.

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
2023-02-28 13:19:05 +01:00
..
fpu s390/vx: use simple assignments to access __vector128 members 2023-02-09 20:11:23 +01:00
trace
vdso s390/vdso: use system call functions 2021-07-27 09:39:15 +02:00
abs_lowcore.h s390/mm: allocate Absolute Lowcore Area in decompressor 2023-01-13 14:15:06 +01:00
airq.h s390/airq: allow for airq structure that uses an input vector 2022-07-11 09:54:15 +02:00
alternative-asm.h s390/alternatives: remove padding generation code 2022-05-17 15:16:28 +02:00
alternative.h s390/alternatives: remove padding generation code 2022-05-17 15:16:28 +02:00
ap.h s390/ap,zcrypt,vfio: introduce and use ap_queue_status_reg union 2023-02-27 15:29:36 +01:00
appldata.h
archrandom.h Random number generator updates for Linux 6.0-rc1. 2022-08-02 17:31:35 -07:00
asm-const.h
asm-extable.h s390/extable: add EX_TABLE_UA_LOAD_REGPAIR() macro 2022-11-21 13:36:15 +01:00
asm-prototypes.h
atomic_ops.h
atomic.h
barrier.h s390: add KCSAN instrumentation to barriers and spinlocks 2022-04-25 13:54:16 +02:00
bitops.h provide arch_test_bit_acquire for architectures that define test_bit 2022-08-27 09:49:54 -07:00
boot_data.h
bug.h bug: Use normal relative pointers in 'struct bug_entry' 2022-05-19 23:46:10 +02:00
cache.h
ccwdev.h s390/cio: introduce locking for register/unregister functions 2023-01-31 18:56:36 +01:00
ccwgroup.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
checksum.h s390/checksum: support GENERIC_CSUM, enable it for KASAN 2022-12-02 18:25:04 +01:00
chpid.h
chsc.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
cio.h s390/stp: clock_delta should be signed 2022-05-11 14:40:57 +02:00
clocksource.h
clp.h
cmb.h
cmpxchg.h s390/cmpxchg: make loop condition for 1,2 byte cases precise 2022-11-21 13:36:16 +01:00
compat.h RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
cpacf.h s390/cpacf: get rid of register asm 2021-07-27 09:39:15 +02:00
cpcmd.h
cpu_mf-insn.h
cpu_mf.h s390/cpum_sf: move functions from header file to source file 2023-01-22 18:42:34 +01:00
cpu.h s390: add support for BEAR enhancement facility 2021-10-26 15:21:29 +02:00
cpufeature.h s390/uvdevice: autoload module based on CPU facility 2022-07-19 16:18:49 +02:00
cputime.h s390/idle: remove arch_cpu_idle_time() and corresponding code 2023-02-09 20:11:23 +01:00
crw.h s390: remove invalid email address of Heiko Carstens 2022-02-06 23:31:29 +01:00
css_chars.h
ctl_reg.h s390/pai: Add support for PAI Extension 1 NNPA counters 2022-09-16 18:36:25 +02:00
current.h
debug.h s390/debug: add _ASM_S390_ prefix to header guard 2023-01-06 16:38:21 +01:00
delay.h
diag.h s390/diag: use __packed __aligned 2023-01-09 14:34:05 +01:00
dis.h
dma.h PCI: Move isa_dma_bridge_buggy out of asm/dma.h 2022-07-22 17:24:47 -05:00
dwarf.h
eadm.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
ebcdic.h
elf.h s390/hwcaps: make sie capability regular hwcap 2021-07-27 09:39:21 +02:00
entry-common.h s390/pai: add support for cryptography counters 2022-05-09 11:50:01 +02:00
exec.h
extable.h s390/extable: convert to relative table with data 2022-03-08 00:33:00 +01:00
extmem.h
facility.h include/linux/delay.h: replace kernel.h with the necessary inclusions 2021-11-09 10:02:49 -08:00
fcx.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
ftrace.h ftrace: abstract DYNAMIC_FTRACE_WITH_ARGS accesses 2022-11-18 13:56:41 +00:00
ftrace.lds.h s390/ftrace: implement hotpatching 2021-08-03 14:31:40 +02:00
futex.h s390/futex: add missing EX_TABLE entry to __futex_atomic_op() 2022-10-26 14:47:31 +02:00
gmap.h KVM: s390: pv: refactor s390_reset_acc 2022-07-13 14:42:11 +00:00
hardirq.h
hugetlb.h s390/hugetlb: fix prepare_hugepage_range() check for 2 GB hugepages 2022-08-30 21:57:07 +02:00
hw_irq.h
idals.h vfio/ccw: calculate number of IDAWs regardless of format 2023-01-09 14:34:08 +01:00
idle.h s390/irq,idle: simplify idle check 2023-02-15 11:07:01 +01:00
io.h
ipl.h s390/ipl: add eckd dump support 2022-12-06 16:18:22 +01:00
irq_work.h
irq.h s390/irq: use assignment instead of cast 2022-03-08 00:33:01 +01:00
irqflags.h
isc.h
itcw.h
jump_label.h jump_label: s390: avoid pointless initial NOP patching 2022-06-24 09:48:54 +02:00
kasan.h s390/boot: avoid page tables memory in kaslr 2023-02-06 11:13:55 +01:00
Kbuild
kdebug.h exit: Remove calls of do_exit after noreturn versions of die 2021-10-20 13:09:47 -05:00
kexec.h kexec: drop weak attribute from functions 2022-07-15 12:21:16 -04:00
kfence.h s390: add support for KFENCE 2021-07-30 17:09:02 +02:00
kprobes.h s390/rethook: add local rethook header file 2023-02-06 11:13:53 +01:00
kvm_host.h KVM: s390: pv: asynchronous destroy for reboot 2022-11-23 09:06:50 +00:00
kvm_para.h KVM: s390: generate kvm hypercall functions 2021-08-25 11:03:35 +02:00
linkage.h s390/extable: move EX_TABLE define to asm-extable.h 2022-03-08 00:33:00 +01:00
lowcore.h s390/pai: Add support for PAI Extension 1 NNPA counters 2022-09-16 18:36:25 +02:00
maccess.h s390/mm: allocate Real Memory Copy Area in decompressor 2023-01-13 14:15:06 +01:00
mem_detect.h s390/mem_detect: do not truncate online memory ranges info 2023-02-14 11:45:40 +01:00
mem_encrypt.h s390/mm: fix virtual-physical address confusion for swiotlb 2022-11-07 14:33:40 +01:00
mmu_context.h KVM: s390: pv: usage counter instead of flag 2022-07-13 14:42:11 +00:00
mmu.h s390 updates for 5.20 merge window 2022-08-06 17:05:21 -07:00
mmzone.h
module.h s390/ftrace: implement hotpatching 2021-08-03 14:31:40 +02:00
nmi.h s390/mcck: cleanup user process termination path 2023-02-28 13:19:05 +01:00
nospec-branch.h s390: introduce nospec_uses_trampoline() 2021-10-26 15:21:29 +02:00
nospec-insn.h s390/nospec: remove unneeded header includes 2022-07-13 15:21:55 +02:00
numa.h
os_info.h s390/mm: uninline copy_oldmem_kernel() function 2022-09-14 16:46:01 +02:00
page-states.h
page.h s390 updates for the 5.18 merge window 2022-03-25 10:01:34 -07:00
pai.h s390/pai: move enum definition to header file 2022-10-26 14:46:51 +02:00
pci_clp.h s390/pci: stash dtsm and maxstbl 2022-07-11 09:54:24 +02:00
pci_debug.h s390/pci: add error record for CC 2 retries 2022-04-25 13:54:15 +02:00
pci_dma.h s390/pci: use physical addresses in DMA tables 2021-12-06 14:42:26 +01:00
pci_insn.h KVM: s390: pci: do initial setup for AEN interpretation 2022-07-11 09:54:28 +02:00
pci_io.h s390/pci: move pseudo-MMIO to prevent MIO overlap 2021-11-29 09:48:34 +01:00
pci.h s390/pci: use lock-free I/O translation updates 2022-11-19 10:28:18 +01:00
percpu.h s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple() 2023-01-11 15:28:47 +01:00
perf_event.h
pgalloc.h s390/mm: use set_pXd()/set_pte() helper functions everywhere 2022-03-01 21:05:10 +01:00
pgtable.h s390/mm: add support for RDP (Reset DAT-Protection) 2023-02-14 11:45:39 +01:00
pkey.h
pnet.h
preempt.h s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES 2022-05-11 14:40:58 +02:00
processor.h s390/processor: add test_and_set_cpu_flag() and test_and_clear_cpu_flag() 2023-02-15 11:07:01 +01:00
ptdump.h
ptrace.h s390/mm: start kernel with DAT enabled 2023-01-13 14:15:05 +01:00
purgatory.h
qdio.h s390/qdio: Fix spelling mistake 2022-06-30 19:40:36 +02:00
runtime_instr.h
rwonce.h s390/rwonce: add READ_ONCE_ALIGNED_128() macro 2023-02-28 13:19:05 +01:00
schid.h
sclp.h s390/sclp: introduce sclp_emergency_printk() 2022-12-06 16:18:24 +01:00
scsw.h s390/dasd: suppress generic error messages for PPRC secondary devices 2022-09-21 08:32:51 -06:00
seccomp.h
sections.h s390: use generic version of arch_is_kernel_initmem_freed() 2021-11-06 13:30:38 -07:00
set_memory.h s390/mm: implement set_memory_4k() 2021-07-30 17:09:01 +02:00
setup.h s390/mm: add support for RDP (Reset DAT-Protection) 2023-02-14 11:45:39 +01:00
signal.h
sigp.h
smp.h s390/dump: save IPL CPU registers once DAT is available 2022-09-14 16:46:00 +02:00
softirq_stack.h asm-generic: Conditionally enable do_softirq_own_stack() via Kconfig. 2022-09-05 17:20:55 +02:00
sparsemem.h
spinlock_types.h locking: Allow to include asm/spinlock_types.h from linux/spinlock_types_raw.h 2021-12-07 15:14:12 +01:00
spinlock.h s390/alternatives: provide identical sized orginal/alternative sequences 2022-05-17 15:16:28 +02:00
stacktrace.h s390/entry: sort out physical vs virtual pointers usage in sie64a 2022-10-26 14:27:41 +02:00
stp.h s390/stp: fix todoff size 2022-05-11 14:40:57 +02:00
string.h s390/string: use generic strlcpy 2021-10-26 15:21:30 +02:00
switch_to.h
syscall_wrapper.h s390/syscalls: get rid of system call alias functions 2023-01-25 20:51:11 +01:00
syscall.h arch: remove unused function syscall_set_arguments() 2021-09-14 16:06:20 +02:00
sysinfo.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
text-patching.h s390: introduce text_poke_sync() 2021-10-11 20:55:58 +02:00
thread_info.h s390: add CPU field to struct thread_info 2021-09-30 16:12:51 +02:00
timex.h s390: define get_cycles macro for arch-override 2022-05-13 23:59:23 +02:00
tlb.h mm: delay page_remove_rmap() until after the TLB has been flushed 2022-11-30 15:58:50 -08:00
tlbflush.h s390: convert ".insn" encoding to instruction names 2022-03-10 15:58:17 +01:00
topology.h
tpi.h KVM: s390: pci: enable host forwarding of Adapter Event Notifications 2022-07-11 09:54:29 +02:00
types.h
uaccess.h s390/uaccess: avoid __ashlti3() call 2023-01-04 17:54:50 +01:00
unistd.h fs: stat: compat: Add __ARCH_WANT_COMPAT_STAT 2022-04-26 13:35:45 -07:00
unwind.h s390/kprobes: replace kretprobe with rethook 2023-01-22 18:42:35 +01:00
uprobes.h
user.h asm/user.h: killed unused macros 2022-01-30 21:17:00 -05:00
uv.h KVM: s390: pv: support for Destroy fast UVC 2022-11-23 09:06:50 +00:00
vdso.h s390/vdso: add minimal compat vdso 2021-07-08 15:37:28 +02:00
vmalloc.h
vmlinux.lds.h
vtime.h
vtimer.h
vx-insn-asm.h s390/vx: add vx-insn.h wrapper include file 2022-12-06 16:18:23 +01:00
vx-insn.h s390/vx: add vx-insn.h wrapper include file 2022-12-06 16:18:23 +01:00
xor.h