linux/arch/s390/kernel
Heiko Carstens 4801e961be s390/fpu: Add fpc exception handler / remove fixup section again
commit ae02615b7f upstream.

The fixup section was added again by mistake when test_fp_ctl() was
removed. The reason for the removal of the fixup section is described in
commit 484a8ed8b7 ("s390/extable: add dedicated uaccess handler").
Remove it again for the same reason.

Add an exception handler which handles exceptions when the floating point
control register is attempted to be set to invalid values. The exception
handler sets the floating point control register to zero and continues
execution at the specified address.

The new sfpc inline assembly is open-coded to make back porting a bit
easier.

Fixes: 702644249d ("s390/fpu: get rid of test_fp_ctl()")
Cc: stable@vger.kernel.org
Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-02-17 10:05:44 +01:00
..
syscalls s390/syscalls: Avoid creation of arch/arch/ directory 2024-12-05 14:01:14 +01:00
vdso32 more s390 updates for 6.10 merge window 2024-05-21 12:09:36 -07:00
vdso64 s390/vdso: Use one large alternative instead of an alternative branch 2024-09-23 17:57:04 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
abs_lowcore.c s390: Add infrastructure to patch lowcore accesses 2024-07-23 16:02:32 +02:00
alternative.c s390: Add infrastructure to patch lowcore accesses 2024-07-23 16:02:32 +02:00
asm-offsets.c s390/entry: Unify save_area_sync and save_area_async 2024-08-29 22:56:34 +02:00
audit.c audit: add support for the openat2 syscall 2021-10-01 16:52:48 -04: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
cache.c s390/cache: prevent rebuild of shared_cpu_list 2024-03-07 14:41:15 +01:00
cert_store.c fix missing vmalloc.h includes 2024-04-25 20:55:49 -07:00
compat_audit.c audit: add support for the openat2 syscall 2021-10-01 16:52:48 -04:00
compat_linux.c s390: use generic UID16 implementation 2019-01-18 09:33:18 +01:00
compat_linux.h s390/compat: cleanup compat_linux.h header file 2022-05-06 20:45:16 +02: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/vdso: Move vdso symbol handling to separate header file 2024-09-13 17:28:36 +02:00
cpacf.c s390/crypto: Display Query and Query Authentication Information in sysfs 2024-09-12 14:13:27 +02:00
cpcmd.c s390: include linux/io.h instead of asm/io.h 2023-07-03 11:19:40 +02:00
cpufeature.c s390/uvdevice: autoload module based on CPU facility 2022-07-19 16:18:49 +02:00
crash_dump.c s390/crash: Do not use VM info if os_info does not have it 2024-06-05 17:03:24 +02:00
ctlreg.c s390/ctlreg: add system_ctl_load() 2023-09-19 13:26:57 +02:00
debug.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
diag.c s390/wti: Introduce infrastructure for warning track interrupt 2024-08-29 22:56:34 +02:00
dis.c s390/disassembler: Remove duplicate instruction format RSY_RDRU 2024-09-12 14:13:27 +02:00
dumpstack.c s390: Replace S390_lowcore by get_lowcore() 2024-06-18 17:01:33 +02:00
early.c s390/setup: Recognize sequential instruction fetching facility 2024-08-29 22:56:34 +02:00
early_printk.c s390/early: Dump register contents and call trace for early crashes 2024-08-22 19:28:11 +02:00
ebcdic.c s390/ebcdic: fix typo in comment 2023-07-27 13:11:35 +02:00
entry.h s390/switch_to: use generic header file 2024-02-12 15:03:33 +01:00
entry.S s390/entry: Mark IRQ entries to fix stack depot warnings 2024-12-09 10:41:03 +01:00
facility.c KVM: s390: vsie: Fix length of facility list shadowed 2023-12-23 10:41:09 +01:00
fpu.c s390/fpu: Re-add exception handling in load_fpu_state() 2024-07-31 16:30:20 +02:00
ftrace.c s390/ftrace: Avoid extra serialization for graph caller patching 2024-08-29 22:56:34 +02:00
ftrace.h s390/ftrace: Remove unused ftrace_plt_template* 2024-08-27 20:16:48 +02:00
guarded_storage.c s390: use control register bit defines 2023-09-19 13:26:57 +02:00
head64.S s390/head64: Make startup code ready for lowcore relocation 2024-07-23 16:02:32 +02:00
hiperdispatch.c s390/hiperdispatch: Add hiperdispatch debug counters 2024-08-29 22:56:35 +02:00
idle.c s390/idle: Remove duplicate get_lowcore() calls 2024-06-18 17:01:33 +02:00
ima_arch.c s390/kexec_file: Disable kexec_load when IPLed secure 2019-04-29 10:44:03 +02:00
ipl.c s390/ipl: Fix never less than zero warning 2024-12-27 14:01:59 +01:00
ipl_vmparm.c s390/cio: remove unused include linux/spinlock.h from cio.h 2021-07-27 09:39:13 +02:00
irq.c s390/wti: Introduce infrastructure for warning track interrupt 2024-08-29 22:56:34 +02:00
jump_label.c jump_label: make initial NOP patching the special case 2022-06-24 09:48:55 +02:00
kdebugfs.c s390: no need to check return value of debugfs_create functions 2019-01-28 15:58:55 +01:00
kexec_elf.c s390, crash: wrap crash dumping code into crash related ifdefs 2024-02-23 17:48:23 -08:00
kexec_image.c s390, crash: wrap crash dumping code into crash related ifdefs 2024-02-23 17:48:23 -08:00
kprobes.c s390/entry: Mark IRQ entries to fix stack depot warnings 2024-12-09 10:41:03 +01:00
lgr.c s390/lgr: use simple assignment instead of memcpy 2022-02-06 23:31:29 +01:00
machine_kexec.c s390/kdump: Make kdump ready for lowcore relocation 2024-07-23 16:02:32 +02:00
machine_kexec_file.c s390, crash: wrap crash dumping code into crash related ifdefs 2024-02-23 17:48:23 -08:00
machine_kexec_reloc.c s390/kaslr: add support for R_390_JMP_SLOT relocation type 2020-05-20 10:13:27 +02:00
Makefile s390/crypto: Display Query and Query Authentication Information in sysfs 2024-09-12 14:13:27 +02:00
mcount.S s390: Use MARCH_HAS_*_FEATURES defines 2024-09-07 17:12:42 +02:00
module.c arch: make execmem setup available regardless of CONFIG_MODULES 2024-05-14 00:31:44 -07:00
nmi.c s390/nmi: Remove duplicate get_lowcore() calls 2024-06-18 17:01:33 +02:00
nospec-branch.c s390/nospec: Push down alternative handling 2024-07-23 16:02:31 +02:00
nospec-sysfs.c s390/nospec: Push down alternative handling 2024-07-23 16:02:31 +02:00
numa.c arch, mm: move definition of node_data to generic code 2024-09-03 21:15:28 -07:00
os_info.c s390/os_info: Fix array size in struct os_info 2024-04-29 17:33:29 +02:00
perf_cpum_cf.c perf/core: Save raw sample data conditionally based on sample type 2025-02-08 09:56:53 +01:00
perf_cpum_cf_events.c s390/cpum_cf: make crypto counters upward compatible across machine types 2024-04-09 17:29:56 +02:00
perf_cpum_sf.c s390/cpum_sf: Handle CPU hotplug remove during sampling 2024-12-14 20:03:35 +01:00
perf_event.c s390/stacktrace: Merge perf_callchain_user() and arch_stack_walk_user() 2024-05-14 13:37:06 +02:00
perf_pai_crypto.c perf/core: Save raw sample data conditionally based on sample type 2025-02-08 09:56:53 +01:00
perf_pai_ext.c perf/core: Save raw sample data conditionally based on sample type 2025-02-08 09:56:53 +01:00
perf_regs.c s390/fpu: remove anonymous union from struct fpu 2024-02-16 14:30:16 +01:00
process.c s390: Replace S390_lowcore by get_lowcore() 2024-06-18 17:01:33 +02:00
processor.c s390/alternatives: Move text sync functions 2024-07-23 16:02:31 +02:00
ptrace.c s390/fpu: remove anonymous union from struct fpu 2024-02-16 14:30:16 +01:00
reipl.S s390/kdump: Make kdump ready for lowcore relocation 2024-07-23 16:02:32 +02:00
relocate_kernel.S s390/relocate_kernel: adjust indentation 2023-04-19 17:24:18 +02:00
rethook.c s390/rethook: add local rethook header file 2023-02-06 11:13:53 +01:00
rethook.h s390/rethook: add local rethook header file 2023-02-06 11:13:53 +01:00
runtime_instr.c s390/runtime_instrumentation: fix storage key handling 2020-08-17 13:17:10 +02:00
setup.c s390/sclp: Initialize sclp subsystem via arch_cpu_finalize_init() 2025-02-08 09:58:07 +01:00
signal.c s390/vdso: Move vdso symbol handling to separate header file 2024-09-13 17:28:36 +02:00
smp.c s390/smp: Add cpu capacities 2024-08-29 22:56:35 +02:00
stacktrace.c s390/stacktrace: Use break instead of return statement 2024-12-09 10:41:06 +01:00
sthyi.c s390/sthyi: Use cached data when diag is busy 2024-07-10 19:50:45 +02:00
syscall.c s390 updates for 6.11 merge window 2024-07-18 15:41:45 -07:00
sysinfo.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
text_amode31.S s390/hypfs_diag0c: fix virtual vs physical address confusion 2024-02-09 13:58:13 +01:00
time.c s390: Replace S390_lowcore by get_lowcore() 2024-06-18 17:01:33 +02:00
topology.c s390/hiperdispatch: Introduce hiperdispatch 2024-08-29 22:56:35 +02:00
trace.c s390/ftrace: fix potential crashes when switching tracers 2020-04-22 16:20:55 +02:00
traps.c - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
unwind_bc.c s390/unwind: disable KMSAN checks 2024-07-03 19:30:25 -07:00
uprobes.c s390/switch_to: use generic header file 2024-02-12 15:03:33 +01:00
uv.c s390/uv: convert gmap_destroy_page() from follow_page() to folio_walk 2024-09-01 20:26:01 -07:00
vdso.c s390/vdso: Wire up getrandom() vdso implementation 2024-09-13 20:57:31 +02:00
vmcore_info.c s390/vmcoreinfo: Store virtual memory layout 2024-04-17 13:38:01 +02:00
vmlinux.lds.S s390/fpu: Add fpc exception handler / remove fixup section again 2025-02-17 10:05:44 +01:00
vtime.c s390/vtime: Remove duplicate get_lowcore() calls 2024-06-18 17:01:33 +02:00
wti.c s390/wti: Add debugfs file to display missed grace periods per cpu 2024-08-29 22:56:35 +02:00