[GIT PULL] s390 patches for the 6.11 merge window

From: Vasily Gorbik
Date: Wed Jul 17 2024 - 16:13:17 EST


Hello Linus,

Please pull s390 changes for 6.11. There is a conflict with the mm tree
(not yet pulled as of now) which contains the KMSAN implementation for
s390. Please apply the following fix-up if possible to avoid build breakage:
https://lore.kernel.org/all/20240627150405.27663-1-iii@xxxxxxxxxxxxx
---
arch/s390/include/asm/kmsan.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/s390/include/asm/kmsan.h b/arch/s390/include/asm/kmsan.h
index 27db65fbf3f6..f73e181d09ae 100644
--- a/arch/s390/include/asm/kmsan.h
+++ b/arch/s390/include/asm/kmsan.h
@@ -12,8 +12,8 @@

static inline bool is_lowcore_addr(void *addr)
{
- return addr >= (void *)&S390_lowcore &&
- addr < (void *)(&S390_lowcore + 1);
+ return addr >= (void *)get_lowcore() &&
+ addr < (void *)(get_lowcore() + 1);
}

static inline void *arch_kmsan_get_meta_or_null(void *addr, bool is_origin)
@@ -25,7 +25,7 @@ static inline void *arch_kmsan_get_meta_or_null(void *addr, bool is_origin)
* order to get a distinct struct page.
*/
addr += (void *)lowcore_ptr[raw_smp_processor_id()] -
- (void *)&S390_lowcore;
+ (void *)get_lowcore();
if (KMSAN_WARN_ON(is_lowcore_addr(addr)))
return NULL;
return kmsan_get_metadata(addr, is_origin);
--

Thank you,
Vasily

The following changes since commit c3f38fa61af77b49866b006939479069cd451173:

Linux 6.10-rc2 (2024-06-02 15:44:56 -0700)

are available in the Git repository at:

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

for you to fetch changes up to df39038cd89525d465c2c8827eb64116873f141a:

s390/mm: Fix VM_FAULT_HWPOISON handling in do_exception() (2024-07-17 14:30:30 +0200)

----------------------------------------------------------------
s390 updates for 6.11 merge window

- Remove restrictions on PAI NNPA and crypto counters, enabling
concurrent per-task and system-wide sampling and counting events

- Switch to GENERIC_CPU_DEVICES by setting up the CPU present mask in
the architecture code and letting the generic code handle CPU bring-up

- Add support for the diag204 busy indication facility to prevent
undesirable blocking during hypervisor logical CPU utilization
queries. Implement results caching

- Improve the handling of Store Data SCLP events by suppressing
unnecessary warning, preventing buffer release in I/O during failures,
and adding timeout handling for Store Data requests to address potential
firmware issues

- Provide optimized __arch_hweight*() implementations

- Remove the unnecessary CPU KOBJ_CHANGE uevents generated during topology
updates, as they are unused and also not present on other architectures

- Cleanup atomic_ops, optimize __atomic_set() for small values and
__atomic_cmpxchg_bool() for compilers supporting flag output constraint

- Couple of cleanups for KVM:
- Move and improve KVM struct definitions for DAT tables from gaccess.c
to a new header
- Pass the asce as parameter to sie64a()

- Make the crdte() and cspg() page table handling wrappers return a
boolean to indicate success, like the other existing "compare and swap"
wrappers

- Add documentation for HWCAP flags

- Switch to obtaining total RAM pages from memblock instead of
totalram_pages() during mm init, to ensure correct calculation of zero
page size, when defer_init is enabled

- Refactor lowcore access and switch to using the get_lowcore() function
instead of the S390_lowcore macro

- Cleanups for PG_arch_1 and folio handling in UV and hugetlb code

- Add missing MODULE_DESCRIPTION() macros

- Fix VM_FAULT_HWPOISON handling in do_exception()

----------------------------------------------------------------
Alexander Gordeev (1):
s390/sclp: Define commands for storage (un)assignment

Claudio Imbrenda (3):
s390/pgtable: Make crdte() and cspg() return a value
s390/entry: Pass the asce as parameter to sie64a()
s390/kvm: Move bitfields for dat tables

David Hildenbrand (10):
s390/uv: Don't call folio_wait_writeback() without a folio reference
s390/uv: gmap_make_secure() cleanups for further changes
s390/uv: Split large folios in gmap_make_secure()
s390/uv: Convert PG_arch_1 users to only work on small folios
s390/uv: Update PG_arch_1 comment
s390/uv: Make uv_convert_from_secure() a static function
s390/uv: Convert uv_destroy_owned_page() to uv_destroy_(folio|pte)()
s390/uv: Convert uv_convert_owned_from_secure() to uv_convert_from_secure_(folio|pte)()
s390/uv: Implement HAVE_ARCH_MAKE_FOLIO_ACCESSIBLE
s390/hugetlb: Convert PG_arch_1 code to work on folio->flags

Gerald Schaefer (1):
s390/mm: Fix VM_FAULT_HWPOISON handling in do_exception()

Heiko Carstens (5):
s390: Provide optimized __arch_hweight*() implementations
s390/hwcaps: Add documentation for HWCAP flags
s390/atomic_ops: Use symbolic names
s390/atomic_ops: Improve __atomic_set() for small values
s390/atomic_ops: Make use of flag output constraint

Jeff Johnson (5):
s390/crc32: Add missing MODULE_DESCRIPTION() macro
s390/lib: Add missing MODULE_DESCRIPTION() macros
s390/mm: Add missing MODULE_DESCRIPTION() macro
s390/dcssblk: Add missing MODULE_DESCRIPTION() macro
s390/3270: Add missing MODULE_DESCRIPTION() macros

Mete Durlu (8):
s390/topology: Remove CPU KOBJ_CHANGE uevents
s390/sclp: Diag204 busy indication facility detection
s390/diag: Return errno's from diag204
s390/diag: Diag204 add busy return errno
s390/diag: Add busy-indication-facility requirements
s390/hypfs_diag: Diag204 busy loop
s390/sthyi: Move diag operations
s390/sthyi: Use cached data when diag is busy

Peter Oberparleiter (3):
s390/sclp: Suppress unnecessary Store Data warning
s390/sclp: Prevent release of buffer in I/O
s390/sclp: Add timeout to Store Data requests

Sven Schnelle (11):
s390: Add get_lowcore() function
s390: Replace S390_lowcore by get_lowcore()
s390/drivers: Replace S390_lowcore by get_lowcore()
s390/boot: Replace S390_lowcore by get_lowcore()
s390/nmi: Remove duplicate get_lowcore() calls
s390/smp: Remove duplicate get_lowcore() calls
s390/vtime: Remove duplicate get_lowcore() calls
s390/idle: Remove duplicate get_lowcore() calls
s390/mm: Remove duplicate get_lowcore() calls
s390: Remove S390_lowcore
s390/smp: Switch to GENERIC_CPU_DEVICES

Thomas Richter (6):
s390/pai_crypto: Enable concurrent system-wide counting/sampling event
s390/pai_crypto: Enable per-task counting event
s390/pai_crypto: Enable per-task and system-wide sampling event
s390/pai_ext: Enable concurrent system-wide counting/sampling
s390/pai_ext: Enable per-task counting event
s390/pai_ext: Enable per-task and system-wide sampling event

Wei Yang (1):
s390/mm: Get total ram pages from memblock

arch/s390/Kconfig | 3 +-
arch/s390/boot/ipl_parm.c | 4 +-
arch/s390/boot/ipl_report.c | 2 +-
arch/s390/boot/pgm_check_info.c | 18 +--
arch/s390/boot/physmem_info.c | 8 +-
arch/s390/boot/startup.c | 12 +-
arch/s390/boot/vmem.c | 12 +-
arch/s390/crypto/crc32-vx.c | 1 +
arch/s390/hypfs/hypfs_dbfs.c | 4 +-
arch/s390/hypfs/hypfs_diag.c | 17 ++-
arch/s390/include/asm/arch_hweight.h | 76 +++++++++++++
arch/s390/include/asm/atomic_ops.h | 84 ++++++++++----
arch/s390/include/asm/bitops.h | 3 +-
arch/s390/include/asm/current.h | 2 +-
arch/s390/include/asm/dat-bits.h | 170 ++++++++++++++++++++++++++++
arch/s390/include/asm/diag.h | 8 ++
arch/s390/include/asm/elf.h | 8 ++
arch/s390/include/asm/facility.h | 4 +-
arch/s390/include/asm/hardirq.h | 6 +-
arch/s390/include/asm/kvm_host.h | 7 +-
arch/s390/include/asm/lowcore.h | 5 +-
arch/s390/include/asm/mmu_context.h | 8 +-
arch/s390/include/asm/page.h | 5 +
arch/s390/include/asm/pai.h | 17 ++-
arch/s390/include/asm/percpu.h | 2 +-
arch/s390/include/asm/pgtable.h | 33 +++++-
arch/s390/include/asm/preempt.h | 30 ++---
arch/s390/include/asm/processor.h | 8 +-
arch/s390/include/asm/sclp.h | 1 +
arch/s390/include/asm/setup.h | 34 +++---
arch/s390/include/asm/smp.h | 4 +-
arch/s390/include/asm/softirq_stack.h | 2 +-
arch/s390/include/asm/spinlock.h | 2 +-
arch/s390/include/asm/stacktrace.h | 1 +
arch/s390/include/asm/timex.h | 10 +-
arch/s390/include/asm/uv.h | 12 +-
arch/s390/include/asm/vtime.h | 16 ++-
arch/s390/kernel/asm-offsets.c | 1 +
arch/s390/kernel/diag.c | 12 +-
arch/s390/kernel/dumpstack.c | 8 +-
arch/s390/kernel/early.c | 36 +++---
arch/s390/kernel/entry.S | 8 +-
arch/s390/kernel/idle.c | 11 +-
arch/s390/kernel/irq.c | 18 +--
arch/s390/kernel/machine_kexec.c | 4 +-
arch/s390/kernel/nmi.c | 31 ++---
arch/s390/kernel/perf_cpum_sf.c | 2 +-
arch/s390/kernel/perf_pai_crypto.c | 189 +++++++++++++++++++------------
arch/s390/kernel/perf_pai_ext.c | 146 ++++++++++++++++--------
arch/s390/kernel/process.c | 6 +-
arch/s390/kernel/setup.c | 24 ++--
arch/s390/kernel/smp.c | 88 +++++++--------
arch/s390/kernel/sthyi.c | 95 +++++++++++-----
arch/s390/kernel/syscall.c | 4 +-
arch/s390/kernel/time.c | 22 ++--
arch/s390/kernel/topology.c | 8 +-
arch/s390/kernel/traps.c | 28 ++---
arch/s390/kernel/uv.c | 207 +++++++++++++++++++++++-----------
arch/s390/kernel/vtime.c | 82 +++++++-------
arch/s390/kvm/gaccess.c | 163 +-------------------------
arch/s390/kvm/kvm-s390.c | 5 +-
arch/s390/kvm/vsie.c | 2 +-
arch/s390/lib/spinlock.c | 4 +-
arch/s390/lib/test_kprobes.c | 1 +
arch/s390/lib/test_modules.c | 1 +
arch/s390/lib/test_unwind.c | 3 +-
arch/s390/lib/uaccess.c | 4 +-
arch/s390/mm/cmm.c | 1 +
arch/s390/mm/dump_pagetables.c | 2 +-
arch/s390/mm/fault.c | 33 +++---
arch/s390/mm/gmap.c | 16 +--
arch/s390/mm/hugetlbpage.c | 8 +-
arch/s390/mm/init.c | 3 +-
arch/s390/mm/pageattr.c | 2 +-
arch/s390/mm/pgalloc.c | 4 +-
arch/s390/pci/pci.c | 2 +-
drivers/s390/block/dcssblk.c | 1 +
drivers/s390/char/con3270.c | 1 +
drivers/s390/char/fs3270.c | 1 +
drivers/s390/char/raw3270.c | 1 +
drivers/s390/char/sclp_cmd.c | 7 +-
drivers/s390/char/sclp_config.c | 2 +-
drivers/s390/char/sclp_early.c | 5 +-
drivers/s390/char/sclp_early_core.c | 12 +-
drivers/s390/char/sclp_sd.c | 26 ++++-
drivers/s390/cio/qdio_main.c | 2 +-
drivers/s390/cio/qdio_thinint.c | 2 +-
drivers/s390/cio/trace.h | 2 +-
88 files changed, 1207 insertions(+), 778 deletions(-)
create mode 100644 arch/s390/include/asm/arch_hweight.h
create mode 100644 arch/s390/include/asm/dat-bits.h