linux/arch/s390
Vasily Gorbik 686140a1a9 s390: introduce CPU alternatives
Implement CPU alternatives, which allows to optionally patch newer
instructions at runtime, based on CPU facilities availability.

A new kernel boot parameter "noaltinstr" disables patching.

Current implementation is derived from x86 alternatives. Although
ideal instructions padding (when altinstr is longer then oldinstr)
is added at compile time, and no oldinstr nops optimization has to be
done at runtime. Also couple of compile time sanity checks are done:
1. oldinstr and altinstr must be <= 254 bytes long,
2. oldinstr and altinstr must not have an odd length.

alternative(oldinstr, altinstr, facility);
alternative_2(oldinstr, altinstr1, facility1, altinstr2, facility2);

Both compile time and runtime padding consists of either 6/4/2 bytes nop
or a jump (brcl) + 2 bytes nop filler if padding is longer then 6 bytes.

.altinstructions and .altinstr_replacement sections are part of
__init_begin : __init_end region and are freed after initialization.

Signed-off-by: Vasily Gorbik <gor@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2017-10-18 14:11:29 +02:00
..
appldata sched/headers: Move task statistics APIs from <linux/sched.h> to <linux/sched/stat.h> 2017-03-03 01:43:43 +01:00
boot s390: add support for FORTIFY_SOURCE 2017-09-28 07:29:40 +02:00
configs s390: update defconfig 2017-10-16 08:19:28 +02:00
crypto s390/crypto: add s390 platform specific aes gcm support. 2017-09-29 15:51:25 +02:00
hypfs s390: hypfs: make inode explicitly non-modular 2016-10-31 17:55:40 +01:00
include s390: introduce CPU alternatives 2017-10-18 14:11:29 +02:00
kernel s390: introduce CPU alternatives 2017-10-18 14:11:29 +02:00
kvm Merge branch 'sthyi' into features 2017-10-09 11:16:49 +02:00
lib s390: cleanup string ops prototypes 2017-10-09 11:18:08 +02:00
mm s390/mm: use memset64 instead of clear_table 2017-10-09 11:18:06 +02:00
net bpf, s390x: implement jiting of BPF_J{LT, LE, SLT, SLE} 2017-08-09 16:53:57 -07:00
numa s390/numa: pin all possible cpus to nodes early 2016-12-07 07:23:33 +01:00
oprofile s390/dumpstack: restore reliable indicator for call traces 2016-10-17 14:44:30 +02:00
pci IOMMU Updates for Linux v4.14 2017-09-09 15:03:24 -07:00
tools First batch of KVM changes for 4.14 2017-09-08 15:18:36 -07:00
defconfig s390: update defconfig 2017-10-16 08:19:28 +02:00
Kbuild s390/crypto: Provide s390 specific arch random functionality. 2017-04-26 13:41:35 +02:00
Kconfig s390: introduce CPU alternatives 2017-10-18 14:11:29 +02:00
Kconfig.debug Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-02-22 10:20:04 -08:00
Makefile s390: add support for IBM z14 machines 2017-07-26 08:25:15 +02:00