Hi Linus, please pull s390 updates for the 6.14 merge window. Thanks, Alexander The following changes since commit fac04efc5c793dccbd07e2d59af9f90b7fc0dca4: Linux 6.13-rc2 (2024-12-08 14:03:39 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-6.14-1 for you to fetch changes up to 26701574cee6777f867f89b4a5c667817e1ee0dd: s390/futex: Fix FUTEX_OP_ANDN implementation (2025-01-15 17:12:31 +0100) ---------------------------------------------------------------- s390 updates for 6.14 merge window - Select config option KASAN_VMALLOC if KASAN is enabled - Select config option VMAP_STACK unconditionally - Implement arch_atomic_inc() / arch_atomic_dec() functions which result in a single instruction if compiled for z196 or newer architectures - Make layering between atomic.h and atomic_ops.h consistent - Comment s390 preempt_count implementation - Remove pre MARCH_HAS_Z196_FEATURES preempt count implementation - GCC uses the number of lines of an inline assembly to calculate number of instructions and decide on inlining. Therefore remove superfluous new lines from a couple of inline assemblies. - Provide arch_atomic_*_and_test() implementations that allow the compiler to generate slightly better code. - Optimize __preempt_count_dec_and_test() - Remove __bootdata annotations from declarations in header files - Add missing include of <linux/smp.h> in abs_lowcore.h to provide declarations for get_cpu() and put_cpu() used in the code - Fix suboptimal kernel image base when running make kasan.config - Remove huge_pte_none() and huge_pte_none_mostly() as are identical to the generic variants - Remove unused PAGE_KERNEL_EXEC, SEGMENT_KERNEL_EXEC, and REGION3_KERNEL_EXEC defines - Simplify noexec page protection handling and change the page, segment and region3 protection definitions automatically if the instruction execution-protection facility is not available - Save one instruction and prefer EXRL instruction over EX in string, xor_*(), amode31 and other functions - Create /dev/diag misc device to fetch diagnose specific information from the kernel and provide it to userspace - Retrieve electrical power readings using DIAGNOSE 0x324 ioctl - Make ccw_device_get_ciw() consistent and use array indices instead of pointer arithmetic * s390/qdio: Move memory alloc/pointer arithmetic for slib and sl into one place - The sysfs core now allows instances of 'struct bin_attribute' to be moved into read-only memory. Make use of that in s390 code - Add missing TLB range adjustment in pud_free_tlb() - Improve topology setup by adding early polarization detection - Fix length checks in codepage_convert() function - The generic bitops implementation is nearly identical to the s390 one. Switch to the generic variant and decrease a bit the kernel image size - Provide an optimized arch_test_bit() implementation which makes use of flag output constraint. This generates slightly better code - Provide memory topology information obtanied with DIAGNOSE 0x310 using ioctl. - Various other small improvements, fixes, and cleanups These changes were added with a merge of 'pci-device-recovery' branch - Add PCI error recovery status mechanism - Simplify and document debug_next_entry() logic - Split private data allocation and freeing out of debug file open() and close() operations - Add debug_dump() function that gets a textual representation of a debug info (e.g. PCI recovery hardware error logs) - Add formatted content of pci_debug_msg_id to the PCI report ---------------------------------------------------------------- Alexander Gordeev (2): Merge branch 'pci-device-recovery' into features s390/tlb: Add missing TLB range adjustment Benjamin Block (3): s390/qdio: Rename feature flag aif_osa to aif_qdio s390/cio: Use array indices instead of pointer arithmetic s390/qdio: Move memory alloc/pointer arithmetic for slib and sl into one place Heiko Carstens (18): s390/Kconfig: Select KASAN_VMALLOC if KASAN is enabled s390/Kconfig: Select VMAP_STACK unconditionally s390/setup: Cleanup stack_alloc() and stack_free() s390/atomic: Implement arch_atomic_inc() / arch_atomic_dec() s390/atomic: Consistent layering between atomic.h and atomic_ops.h s390/preempt: Add comments s390/preempt: Remove special pre MARCH_HAS_Z196_FEATURES implementation s390/preempt: Adjust coding style s390: Remove superfluous new lines from inline assemblies s390/atomic: Provide arch_atomic_*_and_test() implementations s390/preempt: Optimize __preempt_count_dec_and_test() s390/mm/hugetlbfs: Remove huge_pte_none() / huge_pte_none_mostly() s390/mm: Remove incorrect comment s390/mm: Remove unused PAGE_KERNEL_EXEC and friends s390/mm: Simplify noexec page protection handling s390/bitops: Switch to generic bitops s390/bitops: Provide optimized arch_test_bit() s390/futex: Fix FUTEX_OP_ANDN implementation Mete Durlu (2): s390/topology: Improve topology detection s390/diag: Add memory topology information via diag310 Niklas Schnelle (6): s390/pci: Report PCI error recovery results via SCLP s390/debug: Simplify and document debug_next_entry() logic s390/debug: Split private data alloc/free out of file operations s390/debug: Add debug_dump() to write debug view to a string buffer s390/debug: Add a reverse mode for debug_dump() s390/pci: Add pci_msg debug view to PCI report Sumanth Korikkar (3): s390/diag: Create misc device /dev/diag s390/diag324: Retrieve power readings via diag 0x324 s390/diag: Move diag.c to diag specific folder Sven Schnelle (7): s390/lib: Use exrl instead of ex in string functions s390/lib: Use exrl instead of ex in xor functions s390/stackleak: Use exrl instead of ex in __stackleak_poison() s390/amode31: Use exrl instead of ex s390/ebcdic: Use exrl instead of ex s390/ebcdic: Fix length check in codepage_convert() s390/ebcdic: Fix length decrement in codepage_convert() Thomas Weißschuh (5): s390/crypto/cpacf: Constify 'struct bin_attribute' s390/ipl: Constify 'struct bin_attribute' s390/pci: Constify 'struct bin_attribute' s390/sclp: Constify 'struct bin_attribute' s390/pkey: Constify 'struct bin_attribute' Vasily Gorbik (3): s390: Remove __bootdata annotations from declarations s390/abs_lowcore: Include linux/smp.h for get_cpu() and put_cpu() s390: Add KERNEL_IMAGE_BASE to kasan.config arch/s390/Kconfig | 28 +--- arch/s390/Makefile | 9 -- arch/s390/boot/boot.h | 1 - arch/s390/boot/startup.c | 13 +- arch/s390/boot/vmem.c | 20 +-- arch/s390/configs/kasan.config | 2 +- arch/s390/include/asm/abs_lowcore.h | 4 +- arch/s390/include/asm/atomic.h | 68 ++++++++- arch/s390/include/asm/atomic_ops.h | 121 ++++++++++++---- arch/s390/include/asm/bitops.h | 201 ++++---------------------- arch/s390/include/asm/checksum.h | 2 +- arch/s390/include/asm/css_chars.h | 2 +- arch/s390/include/asm/debug.h | 7 + arch/s390/include/asm/diag.h | 2 + arch/s390/include/asm/ebcdic.h | 16 +-- arch/s390/include/asm/fpu-insn.h | 14 +- arch/s390/include/asm/futex.h | 2 +- arch/s390/include/asm/hugetlb.h | 23 +-- arch/s390/include/asm/page-states.h | 3 +- arch/s390/include/asm/pgtable.h | 126 ++++++++-------- arch/s390/include/asm/preempt.h | 83 ++++------- arch/s390/include/asm/processor.h | 3 +- arch/s390/include/asm/sclp.h | 35 +++++ arch/s390/include/asm/tlb.h | 2 +- arch/s390/include/uapi/asm/diag.h | 32 +++++ arch/s390/kernel/Makefile | 3 +- arch/s390/kernel/abs_lowcore.c | 1 + arch/s390/kernel/cpacf.c | 36 ++--- arch/s390/kernel/debug.c | 241 +++++++++++++++++++++++++------ arch/s390/kernel/diag/Makefile | 1 + arch/s390/kernel/{ => diag}/diag.c | 4 +- arch/s390/kernel/diag/diag310.c | 276 ++++++++++++++++++++++++++++++++++++ arch/s390/kernel/diag/diag324.c | 224 +++++++++++++++++++++++++++++ arch/s390/kernel/diag/diag_ioctl.h | 14 ++ arch/s390/kernel/diag/diag_misc.c | 63 ++++++++ arch/s390/kernel/entry.S | 20 +-- arch/s390/kernel/ipl.c | 142 +++++++++---------- arch/s390/kernel/os_info.c | 1 + arch/s390/kernel/setup.c | 33 ++--- arch/s390/kernel/text_amode31.S | 3 +- arch/s390/kernel/topology.c | 11 ++ arch/s390/kernel/vdso64/Makefile | 2 +- arch/s390/kernel/vmcore_info.c | 3 +- arch/s390/lib/mem.S | 15 +- arch/s390/lib/xor.c | 61 ++++---- arch/s390/mm/init.c | 9 ++ arch/s390/mm/maccess.c | 1 + arch/s390/mm/mmap.c | 42 +++--- arch/s390/mm/pageattr.c | 6 - arch/s390/mm/pgtable.c | 2 - arch/s390/mm/vmem.c | 8 -- arch/s390/pci/Makefile | 2 +- arch/s390/pci/pci_event.c | 21 ++- arch/s390/pci/pci_report.c | 158 +++++++++++++++++++++ arch/s390/pci/pci_report.h | 16 +++ arch/s390/pci/pci_sysfs.c | 12 +- drivers/s390/char/sclp.h | 18 +-- drivers/s390/char/sclp_config.c | 4 +- drivers/s390/char/sclp_early.c | 3 + drivers/s390/char/sclp_pci.c | 19 --- drivers/s390/char/sclp_sd.c | 4 +- drivers/s390/cio/device_ops.c | 2 +- drivers/s390/cio/qdio.h | 9 +- drivers/s390/cio/qdio_setup.c | 21 ++- drivers/s390/crypto/pkey_sysfs.c | 126 ++++++++-------- 65 files changed, 1665 insertions(+), 791 deletions(-) create mode 100644 arch/s390/include/uapi/asm/diag.h create mode 100644 arch/s390/kernel/diag/Makefile rename arch/s390/kernel/{ => diag}/diag.c (98%) create mode 100644 arch/s390/kernel/diag/diag310.c create mode 100644 arch/s390/kernel/diag/diag324.c create mode 100644 arch/s390/kernel/diag/diag_ioctl.h create mode 100644 arch/s390/kernel/diag/diag_misc.c create mode 100644 arch/s390/pci/pci_report.c create mode 100644 arch/s390/pci/pci_report.h