Hello Linus, please pull s390 updates for the 6.3 merge window. Please note that there will be a trivial merge conflict with the tip tree (sched/core branch): within both trees are commits which remove code from s390's arch_cpu_idle(). The merge resolution is to simply remove all lines specified in both trees. Also the shortstat when merging will look slightly different to the one generated with 'git request-pull' below, since I merged our fixes branch twice to avoid merge conflicts. So the real shortstat should look like: 102 files changed, 4581 insertions(+), 4583 deletions(-) Thanks, Heiko The following changes since commit b7bfaa761d760e72a969d116517eaa12e404c262: Linux 6.2-rc3 (2023-01-08 11:49:43 -0600) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-6.3-1 for you to fetch changes up to 6472a2dcc4274452bb46fb5a0d968a1c1ed772ee: s390/irq,idle: simplify idle check (2023-02-15 11:07:01 +0100) ---------------------------------------------------------------- s390 updates for 6.3 merge window - Large cleanup of the con3270/tty3270 driver. Among others this fixes: * Background Color Support * ASCII Line Character Support * VT100 Support * Geometries other than 80x24 - Cleanup and improve cmpxchg() code. Also add cmpxchg_user_key() to uaccess functions, which will be used by KVM to access KVM guest memory with a specific storage key. - Add support for user space events counting to CPUMF. - Cleanup the vfio/ccw code, which also allows now to properly support 2K Format-2 IDALs. - Move kernel page table allocation and initialization to decompressor, which finally allows to enter the kernel with dynamic address translation enabled. This in turn allows to get rid of code with special handling in the kernel, which has to distinguish if DAT is on or off. - Replace kretprobe with rethook. - Various improvements to vfio/ap queue resets: * Use TAPQ to verify completion of a reset in progress rather than multiple invocations of ZAPQ. * Check TAPQ response codes when verifying successful completion of ZAPQ. * Fix erroneous handling of some error response codes. * Increase the maximum amount of time to wait for successful completion of ZAPQ. - Rework system call wrappers to get rid of alias functions, which were only left on s390. - Cleanup diag288_wdt watchdog driver. It has been agreed on with Guenter Roeck that this goes upstream via the s390 tree. - Add missing loadparm parameter handling for list-directed ECKD ipl/reipl. - Various improvements to memory detection code. - Remove arch_cpu_idle_time() since the current implementation is broken, and allows user space observable accounted idle times which can temporarily decrease. - Add Reset DAT-Protection support: (only) allow to change PTEs from RO to RW with a new RDP instruction. Unlike the currently used IPTE instruction, this does not necessarily guarantee that TLBs of all CPUs are synchronously flushed; and that remote CPUs can see spurious protection faults. The overall improvement for not requiring an all CPU synchronization, like it is required with IPTE, should be beneficial. - Fix KFENCE page fault reporting. - Smaller cleanups and improvement all over the place. ---------------------------------------------------------------- Alexander Egorenkov (8): s390/kexec: fix ipl report address for kdump watchdog: diag288_wdt: do not use stack buffers for hardware data watchdog: diag288_wdt: fix __diag288() inline assembly watchdog: diag288_wdt: get rid of register asm watchdog: diag288_wdt: remove power management watchdog: diag288_wdt: unify command buffer handling for diag288 zvm watchdog: diag288_wdt: de-duplicate diag_stat_inc() calls watchdog: diag288_wdt: unify lpar and zvm diag288 helpers Alexander Gordeev (16): s390: expicitly align _edata and _end symbols on page boundary s390/boot: cleanup decompressor header files s390/early: fix sclp_early_sccb variable lifetime s390/kasan: sort out physical vs virtual memory confusion s390/kasan: cleanup setup of zero pgtable s390/kasan: cleanup setup of untracked memory pgtables s390/kasan: use set_pXe_bit() for pgtable entries setup s390/pgtable: add REGION3_KERNEL_EXEC protection s390/boot: detect and enable memory facilities s390/mm: start kernel with DAT enabled s390/maccess: remove dead DAT-off code s390/kasan: remove identity mapping support s390/boot: allow setup of different virtual address types s390/mm: allocate Real Memory Copy Area in decompressor s390/mm: allocate Absolute Lowcore Area in decompressor s390/mem_detect: do not update output parameters on failure Christophe JAILLET (2): s390/vfio-ap: fix an error handling path in vfio_ap_mdev_probe_queue() s390/ipl: use kstrtobool() instead of strtobool() Eric Farman (17): vfio/ccw: cleanup some of the mdev commentary vfio/ccw: simplify the cp_get_orb interface vfio/ccw: allow non-zero storage keys vfio/ccw: move where IDA flag is set in ORB vfio/ccw: replace copy_from_iova with vfio_dma_rw vfio/ccw: simplify CCW chain fetch routines vfio/ccw: remove unnecessary malloc alignment vfio/ccw: pass page count to page_array struct vfio/ccw: populate page_array struct inline vfio/ccw: refactor the idaw counter vfio/ccw: read only one Format-1 IDAW vfio/ccw: calculate number of IDAWs regardless of format vfio/ccw: allocate/populate the guest idal vfio/ccw: handle a guest Format-1 IDAL vfio/ccw: don't group contiguous pages on 2K IDAWs vfio/ccw: remove old IDA format restrictions vfio/ccw: remove WARN_ON during shutdown Gerald Schaefer (1): s390/mm: add support for RDP (Reset DAT-Protection) Halil Pasic (3): s390: vfio-ap: tighten the NIB validity check s390/ap: fix status returned by ap_aqic() s390/ap: fix status returned by ap_qact() Harald Freudenberger (1): s390/zcrypt: introduce ctfm field in struct CPRBX Heiko Carstens (41): s390/cmpxchg: use symbolic names for inline assembly operands s390/cmpxchg: make variables local to each case label s390/cmpxchg: remove digits from input constraints s390/extable: add EX_TABLE_UA_LOAD_REGPAIR() macro s390/uaccess: add cmpxchg_user_key() s390/uaccess: avoid __ashlti3() call s390/con3270: move condev definition s390/archrandom: add missing header include s390/cpum_sf: add READ_ONCE() semantics to compare and swap loops s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple() KVM: s390: interrupt: use READ_ONCE() before cmpxchg() s390: update defconfigs s390: move __amode31_base declaration to proper header file s390: workaround invalid gcc-11 out of bounds read warning Merge branch 'fixes' into features s390/cache: change type from unsigned long long to unsigned long s390/syscalls: remove SYSCALL_METADATA() from compat syscalls s390/syscalls: remove __SC_COMPAT_TYPE define s390/syscalls: move __S390_SYS_STUBx() macro s390/syscalls: remove trailing semicolon s390/syscalls: get rid of system call alias functions s390/hmcdrv: use strscpy() instead of strlcpy() s390/rethook: add local rethook header file s390/diag: make __diag8c_tmp_amode31 static Merge branch 'fixes' into features Merge branch 'cmpxchg_user_key' into features s390/idle: move idle time accounting to account_idle_time_irq() s390/idle: mark arch_cpu_idle() noinstr s390/processor: always inline cpu flag helper functions MAINTAINERS: add diag288_wdt driver to s390 maintained files s390/vx: add 64 and 128 bit members to __vector128 struct s390/vx: use simple assignments to access __vector128 members s390/idle: remove arch_cpu_idle_time() and corresponding code Revert "s390/mem_detect: do not update output parameters on failure" s390/vx: remove __uint128_t type from __vector128 struct again s390/entry: remove toolchain dependent micro-optimization s390: remove confusing comment from uapi types header file s390/kfence: fix page fault reporting s390/processor: let cpu helper functions return boolean values s390/processor: add test_and_set_cpu_flag() and test_and_clear_cpu_flag() s390/irq,idle: simplify idle check Ilya Leoshkevich (1): s390: discard .interp section Janis Schoetterl-Glausch (2): s390/cmpxchg: make loop condition for 1,2 byte cases precise s390/uaccess: limit number of retries for cmpxchg_user_key() Jiapeng Chong (1): s390/vmem: use swap() instead of open coding it Masahiro Yamada (2): s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 s390: fix -Wundef warning for CONFIG_KERNEL_ZSTD Nicholas Piggin (1): s390: remove the last remnants of cputime_t Niklas Schnelle (1): s390/debug: add _ASM_S390_ prefix to header guard Peter Xu (1): s390/mm: define private VM_FAULT_* reasons from top bits Randy Dunlap (1): Documentation: s390: correct spelling Sven Schnelle (58): s390/tty3270: add tty3270_create_view() s390/3270: unify con3270 + tty3270 s390/tty3270: rename to con3270 s390/tty3270: add support for diag 8c s390/con3270: fix formatting issues s390/raw3270: fix formatting issues s390/tty3270: use switch/case in tty3270_erase_line() s390/tty3270: use switch/case in tty3270_erase_display() s390/raw3270: use __packed instead of __attribute__((packed)) s390/tty3270: add struct tty3270_attribute s390/tty3270: add support for background color s390/tty3270: add support for graphic escape s390/tty3270: add support for VT100 graphics escape s390/tty3270: ignore NUL characters s390/tty3270: add AID defines s390/raw3270: add raw3270_start_request() helper s390/tty3270: move resize work to raw3270 s390/tty3270: resize terminal when the clear key is pressed s390/tty3270: split up tty3270_convert_line() s390/con3270: add helper to get number of tty rows s390/tty3270: allocate screen with scrollback s390/raw3270: make raw3270_buffer_address() accept x/y coordinates s390/con3270: move tty3270_convert_line() s390/tty3270: move ASCII->EBCDIC conversion to convert_line() s390/tty3270: add 3270 datastream helpers s390/con3270: generate status line during output s390/tty3270: convert lines during output s390/tty3270: use normal char buffer for prompt/input s390/con3270: rewrite command line recalling s390/con3270: reduce f_color and b_color attribute size to 4 bit s390/con3270: reduce highlight width to 3 bits s390/con3270: add key help to status area s390/con3270: fix camelcase in enum members s390/con3270: fix multiple assignments in one line s390/con3270: use msecs_to_jiffies() s390/con3270: fix minor checkpatch issues s390/raw3270: move EXPORT_SYMBOL() next to functions s390/raw3270: fix indentation/whitespace errors s390/raw3270: fix raw3270 declarations s390/raw3270: add comment to spinlock member s390/raw3270: use DEVICE_ATTR_RO() for sysfs attributes s390/raw3270: remove BUG_ON in raw3270_request_reset() s390/raw3270: split up raw3270_activate_view() s390/raw3270: fix nullpointer check s390/fs3270: fix whitespace errors s390/fs3270: add missing braces to if/else s390/fs3270: remove duplicate assignment s390/fs3270: use *ptr instead of struct in kzalloc s390/fs3270: fix function prototypes s390/fs3270: fix screen reset on activate s390/fs3270: split header files s390/diag: use __packed __aligned s390/con3270: return from notifier when activate view fails s390/con3270: simplify update flags s390/con3270: set SBA and RA addresses when converting lines s390/con3270: add special output handling when oops_in_progress is set s390/ipl: add DEFINE_GENERIC_LOADPARM() s390/ipl: add loadparm parameter to eckd ipl/reipl data Thomas Richter (12): s390/cpumf: support user space events for counting s390/cpum_sf: move functions from header file to source file s390/cpum_sf: remove debug statements from function setup_pmc_cpu s390/cpum_sf: sampling buffer setup to handle virtual addresses s390/cpum_sf: rework macro AUX_SDB_NUM_xxx s390/cpum_sf: diagnostic sampling buffer setup to handle virtual addresses s390/cpum_cf: simplify hw_perf_event_destroy() s390/cpum_cf: move cpum_cf_ctrset_size() s390/cpum_cf: move stccm_avail() s390/cpum_cf: remove in-kernel counting facility interface s390/cpum_cf: merge source files for CPU Measurement counter facility s390/cpum_cf: simplify PMC_INIT and PMC_RELEASE usage Tony Krowiak (6): s390/vfio-ap: verify reset complete in separate function s390/vfio_ap: check TAPQ response code when waiting for queue reset s390/vfio_ap: use TAPQ to verify reset in progress completes s390/vfio_ap: verify ZAPQ completion after return of response code zero s390/vfio_ap: fix handling of error response codes s390/vfio_ap: increase max wait time for reset verification Vasily Gorbik (18): s390/kprobes: replace kretprobe with rethook s390/decompressor: specify __decompress() buf len to avoid overflow s390/boot: avoid mapping standby memory s390/boot: remove pgtable_populate_end s390/mm,ptdump: avoid Kasan vs Memcpy Real markers swapping s390/mem_detect: fix detect_memory() error handling s390/kasan: update kasan memory layout note s390/vmem: fix empty page tables cleanup under KASAN s390/vmem: remove unnecessary KASAN checks s390/mem_detect: rely on diag260() if sclp_early_get_memsize() fails s390/boot: fix mem_detect extended area allocation s390/mem_detect: handle online memory limit just once s390/mem_detect: add get_mem_detect_online_total() s390/boot: avoid page tables memory in kaslr s390/kasan: avoid mapping KASAN shadow for standby memory s390/boot: move detect_facilities() after cmd line parsing s390/boot: avoid potential amode31 truncation s390/mem_detect: do not truncate online memory ranges info Vineeth Vijayan (4): docs/ABI: use linux-s390 list as the main contact s390/cio: evaluate devices with non-operational paths s390/cio: introduce locking for register/unregister functions MAINTAINERS: add entry for s390 SCM driver Xu Panda (1): s390/zcrypt: use strscpy() to instead of strncpy() Documentation/ABI/testing/sysfs-bus-css | 15 +- Documentation/s390/pci.rst | 4 +- Documentation/s390/vfio-ccw.rst | 6 +- MAINTAINERS | 8 + arch/s390/Kconfig | 1 + arch/s390/boot/Makefile | 2 +- arch/s390/boot/boot.h | 40 +- arch/s390/boot/decompressor.c | 7 +- arch/s390/boot/decompressor.h | 26 - arch/s390/boot/kaslr.c | 20 +- arch/s390/boot/mem_detect.c | 72 +- arch/s390/boot/startup.c | 86 +- arch/s390/boot/vmem.c | 278 ++++ arch/s390/configs/debug_defconfig | 7 +- arch/s390/configs/defconfig | 6 +- arch/s390/configs/zfcpdump_defconfig | 2 +- arch/s390/crypto/arch_random.c | 1 + arch/s390/include/asm/abs_lowcore.h | 16 +- arch/s390/include/asm/ap.h | 12 +- arch/s390/include/asm/asm-extable.h | 4 + arch/s390/include/asm/ccwdev.h | 2 + arch/s390/include/asm/cmpxchg.h | 109 +- arch/s390/include/asm/cpu_mcf.h | 112 -- arch/s390/include/asm/cpu_mf.h | 82 +- arch/s390/include/asm/cputime.h | 19 - arch/s390/include/asm/debug.h | 6 +- arch/s390/include/asm/diag.h | 16 +- arch/s390/include/asm/fpu/internal.h | 4 +- arch/s390/include/asm/idals.h | 12 + arch/s390/include/asm/idle.h | 5 - arch/s390/include/asm/kasan.h | 12 +- arch/s390/include/asm/kprobes.h | 2 - arch/s390/include/asm/maccess.h | 2 +- arch/s390/include/asm/mem_detect.h | 39 +- arch/s390/include/asm/percpu.h | 2 +- arch/s390/include/asm/pgtable.h | 69 +- arch/s390/include/asm/processor.h | 29 +- arch/s390/include/asm/ptrace.h | 2 +- arch/s390/include/asm/setup.h | 6 + arch/s390/include/asm/syscall_wrapper.h | 144 +- arch/s390/include/asm/uaccess.h | 208 +++ arch/s390/include/asm/unwind.h | 10 +- arch/s390/include/uapi/asm/fs3270.h | 25 + arch/s390/include/uapi/asm/raw3270.h | 75 + arch/s390/include/uapi/asm/types.h | 15 +- arch/s390/include/uapi/asm/zcrypt.h | 3 +- arch/s390/kernel/Makefile | 3 +- arch/s390/kernel/abs_lowcore.c | 49 - arch/s390/kernel/cache.c | 2 +- arch/s390/kernel/compat_signal.c | 4 +- arch/s390/kernel/crash_dump.c | 2 +- arch/s390/kernel/diag.c | 26 + arch/s390/kernel/early.c | 8 +- arch/s390/kernel/entry.S | 6 - arch/s390/kernel/entry.h | 1 - arch/s390/kernel/head64.S | 1 + arch/s390/kernel/idle.c | 91 +- arch/s390/kernel/ipl.c | 101 +- arch/s390/kernel/irq.c | 8 +- arch/s390/kernel/kprobes.c | 30 - arch/s390/kernel/machine_kexec.c | 5 +- arch/s390/kernel/machine_kexec_file.c | 5 +- arch/s390/kernel/mcount.S | 12 +- arch/s390/kernel/os_info.c | 5 +- arch/s390/kernel/perf_cpum_cf.c | 308 +++- arch/s390/kernel/perf_cpum_cf_common.c | 233 --- arch/s390/kernel/perf_cpum_sf.c | 245 +++- arch/s390/kernel/perf_pai_ext.c | 2 +- arch/s390/kernel/process.c | 4 +- arch/s390/kernel/ptrace.c | 6 +- arch/s390/kernel/rethook.c | 34 + arch/s390/kernel/rethook.h | 7 + arch/s390/kernel/setup.c | 95 +- arch/s390/kernel/signal.c | 4 +- arch/s390/kernel/smp.c | 14 +- arch/s390/kernel/stacktrace.c | 6 +- arch/s390/kernel/text_amode31.S | 13 + arch/s390/kernel/vmlinux.lds.S | 8 + arch/s390/kvm/interrupt.c | 12 +- arch/s390/lib/test_unwind.c | 12 +- arch/s390/mm/dump_pagetables.c | 16 +- arch/s390/mm/extable.c | 9 +- arch/s390/mm/fault.c | 63 +- arch/s390/mm/init.c | 35 +- arch/s390/mm/kasan_init.c | 246 +--- arch/s390/mm/maccess.c | 28 +- arch/s390/mm/pgtable.c | 25 + arch/s390/mm/vmem.c | 103 +- drivers/s390/char/Kconfig | 11 +- drivers/s390/char/Makefile | 4 +- drivers/s390/char/con3270.c | 2409 +++++++++++++++++++++++++------ drivers/s390/char/diag_ftp.c | 4 +- drivers/s390/char/fs3270.c | 124 +- drivers/s390/char/raw3270.c | 376 ++--- drivers/s390/char/raw3270.h | 227 +-- drivers/s390/char/sclp_early.c | 2 +- drivers/s390/char/sclp_ftp.c | 6 +- drivers/s390/char/tty3270.c | 1963 ------------------------- drivers/s390/char/tty3270.h | 15 - drivers/s390/cio/css.c | 21 +- drivers/s390/cio/css.h | 2 +- drivers/s390/cio/device.c | 9 + drivers/s390/cio/vfio_ccw_cp.c | 365 ++--- drivers/s390/cio/vfio_ccw_cp.h | 3 +- drivers/s390/cio/vfio_ccw_drv.c | 2 +- drivers/s390/cio/vfio_ccw_fsm.c | 2 +- drivers/s390/crypto/vfio_ap_ops.c | 116 +- drivers/s390/crypto/zcrypt_api.c | 6 +- drivers/watchdog/diag288_wdt.c | 161 +-- 109 files changed, 4690 insertions(+), 4648 deletions(-) create mode 100644 arch/s390/boot/vmem.c delete mode 100644 arch/s390/include/asm/cpu_mcf.h create mode 100644 arch/s390/include/uapi/asm/fs3270.h create mode 100644 arch/s390/include/uapi/asm/raw3270.h delete mode 100644 arch/s390/kernel/perf_cpum_cf_common.c create mode 100644 arch/s390/kernel/rethook.c create mode 100644 arch/s390/kernel/rethook.h delete mode 100644 drivers/s390/char/tty3270.c delete mode 100644 drivers/s390/char/tty3270.h