| #
375d5d57 |
| 21-Oct-2026 |
Linus Torvalds <torvalds@linux-foundation.org> |
Merge tag 's390-7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Heiko Carstens:
- Add support for sclp-vt220 terminal resize events e.g. for QEMU
- Warn
Merge tag 's390-7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Heiko Carstens:
- Add support for sclp-vt220 terminal resize events e.g. for QEMU
- Warn if kernel command line contains non-printable EBCDIC characters
- Improve show_code() disassembly output by using reliable markers for the instruction address and faulting instruction
- Rework exception handling to require only a single exception table entry per faulting instruction: convert all inline assemblies from EX_TABLE to the new EX_TABLE_INSN macros. The previous exception handling was error prone since it usually required two EX_TABLE entries: one pointing at the instruction, and one pointing behind it
- Disallow kprobes on instructions with exception table entries to avoid exception handlers decoding a breakpoint instead of the original instruction
- Preemptible percpu ops changes:
- Simplify percpu_entry() and percpu_exit() by encoding the percpu base, offset, and pointer registers into the lowcore marker, allowing percpu_exit() to update the percpu pointer on CPU migration without comparing the interrupted instruction
- Convert this_cpu_cmpxchg(), this_cpu_xchg(), and this_cpu_cmpxchg128() to preemptible percpu ops; provide this_cpu_try_cmpxchg()
- Emulate virtual timer in appldata via delayed work and remove the s390 specific vtimer infrastructure
- Add lock contention tracepoints to rwlock slowpath
- Fix incorrect return address in signal frame setup
- Fix cpum_cf CPU hotplug handling
- Convert various __get_free_pages() / get_zeroed_page() users to kmalloc() / kzalloc()
- PCI:
- Improve RPCIT instruction tracing
- Fix double-free, use-after-free, and resource leaks in zPCI MSI and IRQ setup / cleanup paths
- Crypto and zcrypt:
- Improve reply message and length verification checks for CCA, EP11, and ICA messages to prevent out-of-bounds reads
- Add missing array_index_nospec() for domain index uses in zcrypt to prevent speculative execution bypass
- Fix out-of-bounds read in cca_query_crypto_facility()
- Various other small fixes and improvements
* tag 's390-7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (102 commits) s390/signal: Cleanup coding style s390/signal: Fix incorrect return address in signal frame s390/probes: Fix wrong mnemonic comment for clgib s390/probes: Add missing fixup for bctgr and bic s390/probes: Fix wrong opcode for cgrb fixup s390: Select ARCH_MEMORY_ORDER_TSO s390/mm: Cleanup pXXp_flush_lazy() routines s390/pci: Add function handle to RPCIT insn trace s390/pci: Use 32-bit fh outside of inline asm s390/pci: Adjust alignment in insn trace s390/sclp: Remove redundant memset after memblock_alloc_low() s390/entry: Save lowcore on invalid kernel stack s390/entry: Last breaking event vs invalid kernel stack s390/percpu: ImplemenHeiko Carstenst this_cpu_try_cmpxchg() s390/percpu: Drop unused output register from arch_this_cpu_to_op() s390/percpu: Drop unused output register from arch_this_cpu_add() s390/percpu: Use asm_inline for arch_this_cpu_add() s390/extable: Remove EX_TABLE macros and fallback extable search s390/bpf: Simplify exception table entry handling s390/sclp: Convert inline assembly to EX_TABLE_INSN ...
show more ...
|
| #
efe276b9 |
| 13-Oct-2026 |
Heiko Carstens <hca@linux.ibm.com> |
Merge branch 'exception-handling'
Heiko Carstens says:
====================
Extend the existing get_trap_ip() so that it returns the address of the instruction which caused an exception, and use t
Merge branch 'exception-handling'
Heiko Carstens says:
====================
Extend the existing get_trap_ip() so that it returns the address of the instruction which caused an exception, and use that for both the disassembler as well as exception handling.
This allows improving two things:
- The in kernel disassembler prints PGM+PSW markers which clearly identify the instruction causing an exception, and the current PSW address. This replaces the previous "best guess" approach with '*' and '>' markers
- EX_TABLE entries for inline assemblies are simplified. Only the address of the faulting instruction needs to be provided from now on. The second entry, which is the address following the faulting instruction, is not needed anymore
Disassembler ------------
The output of the kernel disassembler changes. If the disassembly is printed as a result of a program check, 'PGM' and 'PSW' markers identify the instruction which caused the exception, and where the PSW points to. For suppressing exceptions, the output now looks like this:
Krnl Code: 000003ff8dc7bff8: e310f0080004 lg %r1,8(%r15) PGM >000003ff8dc7bffe: e3a0e0000004 lg %r10,0(%r14) PSW >000003ff8dc7c004: a7280000 lhi %r2,0 000003ff8dc7c008: eb9ff0900024 stmg %r9,%r15,144(%r15)
For nullifying exceptions where both addresses are the same, 'PGM+PSW >' is printed instead:
Krnl Code: 000003ff8dc7bff8: e310f0080004 lg %r1,8(%r15) PGM+PSW >000003ff8dc7bffe: e3a0e0000004 lg %r10,0(%r14) 000003ff8dc7c004: a7280000 lhi %r2,0 000003ff8dc7c008: eb9ff0900024 stmg %r9,%r15,144(%r15)
EX_TABLE entries ----------------
With get_trap_ip() now returning the exact faulting instruction address, EX_TABLE entries for inline assemblies are simplified. Only the address of the faulting instruction needs to be provided. The second entry - the address following the faulting instruction - is no longer needed.
For example, an inline assembly using a single instruction can now be written as:
asm_inline volatile( "0: lg %[data],%[addr]\n" "1:\n" EX_TABLE_INSN(0b, 1b));
Previously this required:
asm_inline volatile( " nopr %%r7\n" "0: lg %[data],%[addr]\n" "1: nopr %%r7\n" EX_TABLE(0b, 1b) EX_TABLE(1b, 1b));
The old approach had several non-obvious restrictions:
- If an instruction immediately preceding the inline assembly caused a non-nullifying exception, the PSW would point to the start of the inline assembly. If the faulting instruction was placed there, the exception handler would incorrectly resolve the fault using the inline assembly's fixup handler. Hence, a leading NOP was required before the faulting instruction
- Similarly, an exception table entry placed behind a faulting instruction must also point to an instruction that cannot fault. A nullifying exception on the following instruction would otherwise be incorrectly resolved by that entry
- Furthermore, instructions that can cause both nullifying and non-nullifying exceptions required two separate exception table entries
These restrictions are error-prone and have caused several bugs in the past.
All EX_TABLE* macros have been renamed to EX_TABLE_INSN*. This allows the old and new semantics to be distinguished, and ensures that backports of code using the new semantics will intentionally fail to compile if the new infrastructure is not present.
Note ----
There are some existing oddities and corner cases with kprobes. Only some of them will be addressed with this series. The other ones will be addressed with follow-on changes, since this series is already large enough.
====================
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
show more ...
|
| #
319ccf08 |
| 01-Oct-2026 |
Heiko Carstens <hca@linux.ibm.com> |
s390/tools: Generate bitmap of nullified program checks
Add PGM_CHECKS_NULLIFIED bitmap to gen_bitmaps and add a --pgmcheck command line option to generate the pgmcheck-defs.h header file. The bitma
s390/tools: Generate bitmap of nullified program checks
Add PGM_CHECKS_NULLIFIED bitmap to gen_bitmaps and add a --pgmcheck command line option to generate the pgmcheck-defs.h header file. The bitmap specifies which program checks are nullified, and will be used with future changes.
Change gen_bitmaps.c so it can create bitmaps with different bit numbering: MSB0 bit numbering like before (most significant bit is bit 0), and LSB0 bit numbering (least significant bit is bit 0), which is used for the new bitmap.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
show more ...
|
| #
f9ef2f6c |
| 01-Oct-2026 |
Heiko Carstens <hca@linux.ibm.com> |
s390/tools: Rename gen_facilities to gen_bitmaps
Rename gen_facilities.c to gen_bitmaps.c and make it more generic so it can be used for various bitmaps. Add command line parsing, and use it to expl
s390/tools: Rename gen_facilities to gen_bitmaps
Rename gen_facilities.c to gen_bitmaps.c and make it more generic so it can be used for various bitmaps. Add command line parsing, and use it to explicitly specify that the facilities header should be generated.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
show more ...
|