-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/s390/linux Pull s390 fixes from Martin Schwidefsky: - a fix for the vfio ccw translation code - update an incorrect email address in the MAINTAINERS file - fix a division by zero oops in the cpum_sf code found by trinity - two fixes for the error handling of the qdio code - several spectre related patches to convert all left-over indirect branches in the kernel to expoline branches - update defconfigs to avoid warnings due to the netfilter Kconfig changes - avoid several compiler warnings in the kexec_file code for s390 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/qdio: don't release memory in qdio_setup_irq() s390/qdio: fix access to uninitialized qdio_q fields s390/cpum_sf: ensure sample frequency of perf event attributes is non-zero s390: use expoline thunks in the BPF JIT s390: extend expoline to BC instructions s390: remove indirect branch from do_softirq_own_stack s390: move spectre sysfs attribute code s390/kernel: use expoline for indirect branches s390/ftrace: use expoline for indirect branches s390/lib: use expoline for indirect branches s390/crc32-vx: use expoline for indirect branches s390: move expoline assembler macros to a header vfio: ccw: fix cleanup if cp_prefetch fails s390/kexec_file: add declaration of purgatory related globals s390: update defconfigs MAINTAINERS: update s390 zcrypt maintainers email address
- Loading branch information
Showing
23 changed files
with
422 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,196 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_S390_NOSPEC_ASM_H | ||
#define _ASM_S390_NOSPEC_ASM_H | ||
|
||
#include <asm/alternative-asm.h> | ||
#include <asm/asm-offsets.h> | ||
#include <asm/dwarf.h> | ||
|
||
#ifdef __ASSEMBLY__ | ||
|
||
#ifdef CONFIG_EXPOLINE | ||
|
||
_LC_BR_R1 = __LC_BR_R1 | ||
|
||
/* | ||
* The expoline macros are used to create thunks in the same format | ||
* as gcc generates them. The 'comdat' section flag makes sure that | ||
* the various thunks are merged into a single copy. | ||
*/ | ||
.macro __THUNK_PROLOG_NAME name | ||
.pushsection .text.\name,"axG",@progbits,\name,comdat | ||
.globl \name | ||
.hidden \name | ||
.type \name,@function | ||
\name: | ||
CFI_STARTPROC | ||
.endm | ||
|
||
.macro __THUNK_EPILOG | ||
CFI_ENDPROC | ||
.popsection | ||
.endm | ||
|
||
.macro __THUNK_PROLOG_BR r1,r2 | ||
__THUNK_PROLOG_NAME __s390x_indirect_jump_r\r2\()use_r\r1 | ||
.endm | ||
|
||
.macro __THUNK_PROLOG_BC d0,r1,r2 | ||
__THUNK_PROLOG_NAME __s390x_indirect_branch_\d0\()_\r2\()use_\r1 | ||
.endm | ||
|
||
.macro __THUNK_BR r1,r2 | ||
jg __s390x_indirect_jump_r\r2\()use_r\r1 | ||
.endm | ||
|
||
.macro __THUNK_BC d0,r1,r2 | ||
jg __s390x_indirect_branch_\d0\()_\r2\()use_\r1 | ||
.endm | ||
|
||
.macro __THUNK_BRASL r1,r2,r3 | ||
brasl \r1,__s390x_indirect_jump_r\r3\()use_r\r2 | ||
.endm | ||
|
||
.macro __DECODE_RR expand,reg,ruse | ||
.set __decode_fail,1 | ||
.irp r1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \reg,%r\r1 | ||
.irp r2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \ruse,%r\r2 | ||
\expand \r1,\r2 | ||
.set __decode_fail,0 | ||
.endif | ||
.endr | ||
.endif | ||
.endr | ||
.if __decode_fail == 1 | ||
.error "__DECODE_RR failed" | ||
.endif | ||
.endm | ||
|
||
.macro __DECODE_RRR expand,rsave,rtarget,ruse | ||
.set __decode_fail,1 | ||
.irp r1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \rsave,%r\r1 | ||
.irp r2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \rtarget,%r\r2 | ||
.irp r3,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \ruse,%r\r3 | ||
\expand \r1,\r2,\r3 | ||
.set __decode_fail,0 | ||
.endif | ||
.endr | ||
.endif | ||
.endr | ||
.endif | ||
.endr | ||
.if __decode_fail == 1 | ||
.error "__DECODE_RRR failed" | ||
.endif | ||
.endm | ||
|
||
.macro __DECODE_DRR expand,disp,reg,ruse | ||
.set __decode_fail,1 | ||
.irp r1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \reg,%r\r1 | ||
.irp r2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
.ifc \ruse,%r\r2 | ||
\expand \disp,\r1,\r2 | ||
.set __decode_fail,0 | ||
.endif | ||
.endr | ||
.endif | ||
.endr | ||
.if __decode_fail == 1 | ||
.error "__DECODE_DRR failed" | ||
.endif | ||
.endm | ||
|
||
.macro __THUNK_EX_BR reg,ruse | ||
# Be very careful when adding instructions to this macro! | ||
# The ALTERNATIVE replacement code has a .+10 which targets | ||
# the "br \reg" after the code has been patched. | ||
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES | ||
exrl 0,555f | ||
j . | ||
#else | ||
.ifc \reg,%r1 | ||
ALTERNATIVE "ex %r0,_LC_BR_R1", ".insn ril,0xc60000000000,0,.+10", 35 | ||
j . | ||
.else | ||
larl \ruse,555f | ||
ex 0,0(\ruse) | ||
j . | ||
.endif | ||
#endif | ||
555: br \reg | ||
.endm | ||
|
||
.macro __THUNK_EX_BC disp,reg,ruse | ||
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES | ||
exrl 0,556f | ||
j . | ||
#else | ||
larl \ruse,556f | ||
ex 0,0(\ruse) | ||
j . | ||
#endif | ||
556: b \disp(\reg) | ||
.endm | ||
|
||
.macro GEN_BR_THUNK reg,ruse=%r1 | ||
__DECODE_RR __THUNK_PROLOG_BR,\reg,\ruse | ||
__THUNK_EX_BR \reg,\ruse | ||
__THUNK_EPILOG | ||
.endm | ||
|
||
.macro GEN_B_THUNK disp,reg,ruse=%r1 | ||
__DECODE_DRR __THUNK_PROLOG_BC,\disp,\reg,\ruse | ||
__THUNK_EX_BC \disp,\reg,\ruse | ||
__THUNK_EPILOG | ||
.endm | ||
|
||
.macro BR_EX reg,ruse=%r1 | ||
557: __DECODE_RR __THUNK_BR,\reg,\ruse | ||
.pushsection .s390_indirect_branches,"a",@progbits | ||
.long 557b-. | ||
.popsection | ||
.endm | ||
|
||
.macro B_EX disp,reg,ruse=%r1 | ||
558: __DECODE_DRR __THUNK_BC,\disp,\reg,\ruse | ||
.pushsection .s390_indirect_branches,"a",@progbits | ||
.long 558b-. | ||
.popsection | ||
.endm | ||
|
||
.macro BASR_EX rsave,rtarget,ruse=%r1 | ||
559: __DECODE_RRR __THUNK_BRASL,\rsave,\rtarget,\ruse | ||
.pushsection .s390_indirect_branches,"a",@progbits | ||
.long 559b-. | ||
.popsection | ||
.endm | ||
|
||
#else | ||
.macro GEN_BR_THUNK reg,ruse=%r1 | ||
.endm | ||
|
||
.macro GEN_B_THUNK disp,reg,ruse=%r1 | ||
.endm | ||
|
||
.macro BR_EX reg,ruse=%r1 | ||
br \reg | ||
.endm | ||
|
||
.macro B_EX disp,reg,ruse=%r1 | ||
b \disp(\reg) | ||
.endm | ||
|
||
.macro BASR_EX rsave,rtarget,ruse=%r1 | ||
basr \rsave,\rtarget | ||
.endm | ||
#endif | ||
|
||
#endif /* __ASSEMBLY__ */ | ||
|
||
#endif /* _ASM_S390_NOSPEC_ASM_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.