[GIT PULL] s390 updates for 7.2 merge window

From: Alexander Gordeev

Date: Mon Jun 15 2026 - 08:28:14 EST


Hi Linus,

please pull s390 updates for 7.2 merge window.

Thanks,
Alexander Gordeev

The following changes since commit 7fd2df204f342fc17d1a0bfcd474b24232fb0f32:

Linux 7.1-rc2 (2026-05-03 14:21:25 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-7.2-1

for you to fetch changes up to 37540b8c287fc817bdbd0c62bb75ad6eab0e5d03:

s390: Revert support for DCACHE_WORD_ACCESS (2026-06-12 11:30:25 +0200)

----------------------------------------------------------------
s390 updates for 7.2 merge window

- Use CIO device online variable instead of the internal FSM state to
determine device availability during purge operations

- Remove extra check of task_stack_page() because try_get_task_stack()
already takes care of that when reading /proc/<pid>/wchan

- Allow user-space to use the new SCLP action qualifier 4 for to
provide NVMe SMART log data to the platform.

- Send AP CHANGE uevents on successful bind and successful association
to notify user-space about SE operations on AP queue devices

- Add an s390dbf kernel parameter to configure debug log levels and
area sizes during early boot

- On arm64 the empty zero page is going to be mapped read-only.
Do the same for s390 with an explicit set_memory_ro() call

- Improve s390-specific bcr_serialize() and cpu_relax() implementations

- Remove all unused variables to avoid allmodconfig W=1 build fails
with latest clang-23

- Cleanup default Kconfig values for s390 selftests

- Add a s390-tod trace clock to allow comparing trace timestamps
between different systems or virtual machines on s390

- Remove the s390 implementation of strlcat() in favor of the
generic variant

- Make consistent the calling order between page_table_check_pte_clear()
and secure page conversion across all code paths

- Rearrange some fields within AP and zcrypt structs to reduce
memory consumption and unused holes

- Shorten GR_NUM and VX_NUM macros and move them to a separate header

- Replace __get_free_page() with kmalloc() in few sources

- Introduce an infrastructure for more efficient this_cpu operations.
Eliminate conditional branches when PREEMPT_NONE is removed

- Enable Rust support

- Use z10 as minimum architecture level, similar to the boot code,
to enforce a defined architecture level set

- Improve and convert various mem*() helper functions to C. For that
add .noinstr.text section to avoid orphaned warnings from the linker

- Fix the function pointer type in __ret_from_fork() to correct
the indirect call to match kernel thread return type of int

- Revert support for DCACHE_WORD_ACCESS to avoid an endless exception
loop on read from donated Ultravisor pages at unaligned addresses

----------------------------------------------------------------
Alexander Gordeev (2):
s390/mm: Make PTC and UV call order consistent
Merge branch 'rust-for-s390' into features

Harald Freudenberger (3):
s390/ap: Implement SE bind and associate uevents
s390/ap/zcrypt: Rearrange fields within AP and zcrypt structs
s390/ap: Fix locking issue in SE bind and associate sysfs functions

Heiko Carstens (30):
s390/mm: Map empty zero pages read-only
s390/barrier: Use alternative instead of ifdef for bcr_serialize()
s390/processor: Remove duplicated cpu_relax() define
s390/processor: Implement cpu_relax() with cpu serialization
s390/appldata: Remove unused appldata_sysctl_header variable
s390/debug: Remove s390dbf_sysctl_header variable
s390/sclp: Remove unused sclp_vt220_buffered_chars variable
s390/zcore: Removed unused variables
s390/zcore: Use octal permission
s390/string: Remove strlcat() implementation
s390/fpu: Shorten GR_NUM / VX_NUM macros
s390/fpu: Move GR_NUM / VX_NUM macros to separate header file
s390/percpu: Infrastructure for more efficient this_cpu operations
s390/percpu: Add missing do { } while (0) constructs
s390/percpu: Use new percpu code section for arch_this_cpu_add()
s390/percpu: Use new percpu code section for arch_this_cpu_add_return()
s390/percpu: Use new percpu code section for arch_this_cpu_[and|or]()
s390/percpu: Provide arch_this_cpu_read() implementation
s390/percpu: Provide arch_this_cpu_write() implementation
s390/purgatory: Enforce z10 minimum architecture level
s390: Add .noinstr.text to boot and purgatory linker scripts
s390/string: Add -ffreestanding compile option to string.o
s390/string: Convert memmove() to C
s390/string: Convert memset() to C
s390/string: Convert memcpy() to C
s390/string: Convert memset(16|32|64)() to C
s390/memmove: Optimize backward copy case
s390/tishift: Convert __ashlti3(), __ashrti3(), __lshrti3() to C
s390/process: Fix kernel thread function pointer type
s390: Revert support for DCACHE_WORD_ACCESS

Jan Polensky (6):
s390/bug: Provide ARCH_WARN_ASM for Rust WARN/BUG support
s390/jump_label: Implement ARCH_STATIC_BRANCH_JUMP_ASM and ARCH_STATIC_BRANCH_ASM macros
rust/bindgen_parameters: Mark s390 types as opaque to prevent repr conflicts
rust: helpers: Add memchr wrapper for string operations
s390/cmpxchg: Fix KASAN stack-out-of-bounds in atomic helpers
s390: Enable Rust support

Julian Braha (1):
s390/Kconfig: Cleanup defaults for selftests

Maninder Singh (1):
s390: Remove extra check of task_stack_page()

Mike Rapoport (Microsoft) (6):
s390/con3270: Replace __get_free_page() with kmalloc()
s390/dasd: Replace get_zeroed_page() with kzalloc()
s390/hvc_iucv: Replace get_zeroed_page() with kzalloc()
s390/qeth: Replace get_zeroed_page() with kzalloc()
s390/trng: Replace __get_free_page() with kmalloc()
s390/zcrypt: Replace get_zeroed_page() with kzalloc()

Niklas Schnelle (1):
s390/sclp: Allow user-space to provide PCI reports for NVMe SMART data

Peter Oberparleiter (1):
s390/debug: Add s390dbf kernel parameter

Sven Schnelle (1):
s390/tracing: Add s390-tod clock

Vineeth Vijayan (1):
s390/cio: Purge based on the cdev's online status

Documentation/arch/s390/s390dbf.rst | 30 ++++
Documentation/rust/arch-support.rst | 1 +
Documentation/trace/ftrace.rst | 4 +
arch/s390/Kconfig | 11 +-
arch/s390/Makefile | 28 ++--
arch/s390/appldata/appldata_base.c | 3 +-
arch/s390/boot/Makefile | 7 +-
arch/s390/boot/mem.S | 2 -
arch/s390/boot/string.c | 6 +-
arch/s390/boot/vmlinux.lds.S | 1 +
arch/s390/include/asm/asm-extable.h | 4 -
arch/s390/include/asm/asm-prototypes.h | 4 -
arch/s390/include/asm/barrier.h | 12 +-
arch/s390/include/asm/bug.h | 12 ++
arch/s390/include/asm/cmpxchg.h | 8 +-
arch/s390/include/asm/debug.h | 1 +
arch/s390/include/asm/entry-percpu.h | 80 +++++++++++
arch/s390/include/asm/fpu-insn-asm.h | 176 +----------------------
arch/s390/include/asm/fpu-insn.h | 1 +
arch/s390/include/asm/insn-common-asm.h | 53 +++++++
arch/s390/include/asm/jump_label.h | 33 +++--
arch/s390/include/asm/lowcore.h | 3 +-
arch/s390/include/asm/percpu.h | 246 +++++++++++++++++++++++++++-----
arch/s390/include/asm/pgtable.h | 39 +++--
arch/s390/include/asm/processor.h | 3 +-
arch/s390/include/asm/ptrace.h | 2 +
arch/s390/include/asm/sclp.h | 1 +
arch/s390/include/asm/string.h | 2 -
arch/s390/include/asm/trace_clock.h | 13 ++
arch/s390/include/asm/vdso/processor.h | 4 +-
arch/s390/include/asm/word-at-a-time.h | 22 ---
arch/s390/kernel/Makefile | 1 +
arch/s390/kernel/debug.c | 129 ++++++++++++++---
arch/s390/kernel/irq.c | 24 +++-
arch/s390/kernel/nmi.c | 5 +
arch/s390/kernel/process.c | 5 +-
arch/s390/kernel/trace_clock.c | 12 ++
arch/s390/kernel/traps.c | 5 +
arch/s390/kernel/vmlinux.lds.S | 7 +
arch/s390/lib/Makefile | 6 +-
arch/s390/lib/mem.S | 192 -------------------------
arch/s390/lib/string.c | 236 ++++++++++++++++++++++++++----
arch/s390/lib/tishift.S | 63 --------
arch/s390/lib/tishift.c | 64 +++++++++
arch/s390/lib/tishift.h | 9 ++
arch/s390/mm/extable.c | 18 ---
arch/s390/mm/init.c | 2 +
arch/s390/purgatory/Makefile | 9 +-
arch/s390/purgatory/purgatory.lds.S | 1 +
drivers/char/hw_random/s390-trng.c | 5 +-
drivers/s390/block/dasd_eckd.c | 8 +-
drivers/s390/block/dasd_eer.c | 4 +-
drivers/s390/char/con3270.c | 8 +-
drivers/s390/char/sclp_pci.c | 1 +
drivers/s390/char/sclp_vt220.c | 4 -
drivers/s390/char/zcore.c | 8 +-
drivers/s390/cio/device.c | 2 +-
drivers/s390/crypto/ap_bus.c | 17 +++
drivers/s390/crypto/ap_bus.h | 23 +--
drivers/s390/crypto/ap_queue.c | 42 +++---
drivers/s390/crypto/zcrypt_api.c | 6 +-
drivers/s390/crypto/zcrypt_api.h | 15 +-
drivers/s390/crypto/zcrypt_ccamisc.h | 22 +--
drivers/s390/crypto/zcrypt_ep11misc.h | 10 +-
drivers/s390/net/qeth_core_main.c | 8 +-
drivers/tty/hvc/hvc_iucv.c | 6 +-
rust/Makefile | 3 +
rust/bindgen_parameters | 7 +
rust/helpers/helpers.c | 1 +
rust/helpers/string.c | 8 ++
scripts/generate_rust_target.rs | 2 +
scripts/min-tool-version.sh | 6 +-
72 files changed, 1074 insertions(+), 742 deletions(-)
delete mode 100644 arch/s390/boot/mem.S
create mode 100644 arch/s390/include/asm/entry-percpu.h
create mode 100644 arch/s390/include/asm/insn-common-asm.h
create mode 100644 arch/s390/include/asm/trace_clock.h
create mode 100644 arch/s390/kernel/trace_clock.c
delete mode 100644 arch/s390/lib/mem.S
delete mode 100644 arch/s390/lib/tishift.S
create mode 100644 arch/s390/lib/tishift.c
create mode 100644 arch/s390/lib/tishift.h
create mode 100644 rust/helpers/string.c