Merge tag 's390-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Sep 2019 21:04:43 +0000 (14:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Sep 2019 21:04:43 +0000 (14:04 -0700)
Pull s390 updates from Vasily Gorbik:

 - Add support for IBM z15 machines.

 - Add SHA3 and CCA AES cipher key support in zcrypt and pkey
   refactoring.

 - Move to arch_stack_walk infrastructure for the stack unwinder.

 - Various kasan fixes and improvements.

 - Various command line parsing fixes.

 - Improve decompressor phase debuggability.

 - Lift no bss usage restriction for the early code.

 - Use refcount_t for reference counters for couple of places in mm
   code.

 - Logging improvements and return code fix in vfio-ccw code.

 - Couple of zpci fixes and minor refactoring.

 - Remove some outdated documentation.

 - Fix secure boot detection.

 - Other various minor code clean ups.

* tag 's390-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (48 commits)
  s390: remove pointless drivers-y in drivers/s390/Makefile
  s390/cpum_sf: Fix line length and format string
  s390/pci: fix MSI message data
  s390: add support for IBM z15 machines
  s390/crypto: Support for SHA3 via CPACF (MSA6)
  s390/startup: add pgm check info printing
  s390/crypto: xts-aes-s390 fix extra run-time crypto self tests finding
  vfio-ccw: fix error return code in vfio_ccw_sch_init()
  s390: vfio-ap: fix warning reset not completed
  s390/base: remove unused s390_base_mcck_handler
  s390/sclp: Fix bit checked for has_sipl
  s390/zcrypt: fix wrong handling of cca cipher keygenflags
  s390/kasan: add kdump support
  s390/setup: avoid using strncmp with hardcoded length
  s390/sclp: avoid using strncmp with hardcoded length
  s390/module: avoid using strncmp with hardcoded length
  s390/pci: avoid using strncmp with hardcoded length
  s390/kaslr: reserve memory for kasan usage
  s390/mem_detect: provide single get_mem_detect_end
  s390/cmma: reuse kstrtobool for option value parsing
  ...

1  2 
arch/s390/boot/boot.h
arch/s390/boot/ipl_parm.c
arch/s390/boot/kaslr.c
arch/s390/configs/debug_defconfig
arch/s390/configs/defconfig
arch/s390/include/asm/setup.h
arch/s390/kernel/head64.S
arch/s390/kernel/setup.c
arch/s390/kernel/vdso.c
arch/s390/mm/gmap.c

diff --combined arch/s390/boot/boot.h
@@@ -8,8 -8,8 +8,9 @@@ void store_ipl_parmblock(void)
  void setup_boot_command_line(void);
  void parse_boot_command_line(void);
  void setup_memory_end(void);
 +void verify_facilities(void);
  void print_missing_facilities(void);
+ void print_pgm_check_info(void);
  unsigned long get_random_base(unsigned long safe_addr);
  
  extern int kaslr_enabled;
@@@ -7,6 -7,7 +7,7 @@@
  #include <asm/sections.h>
  #include <asm/boot_data.h>
  #include <asm/facility.h>
+ #include <asm/pgtable.h>
  #include <asm/uv.h>
  #include "boot.h"
  
@@@ -14,6 -15,7 +15,7 @@@ char __bootdata(early_command_line)[COM
  struct ipl_parameter_block __bootdata_preserved(ipl_block);
  int __bootdata_preserved(ipl_block_valid);
  
+ unsigned long __bootdata(vmalloc_size) = VMALLOC_DEFAULT_SIZE;
  unsigned long __bootdata(memory_end);
  int __bootdata(memory_end_set);
  int __bootdata(noexec_disabled);
@@@ -48,7 -50,9 +50,7 @@@ void store_ipl_parmblock(void
  {
        int rc;
  
 -      uv_set_shared(__pa(&ipl_block));
        rc = __diag308(DIAG308_STORE, &ipl_block);
 -      uv_remove_shared(__pa(&ipl_block));
        if (rc == DIAG308_RC_OK &&
            ipl_block.hdr.version <= IPL_MAX_SUPPORTED_VERSION)
                ipl_block_valid = 1;
@@@ -219,18 -223,21 +221,21 @@@ void parse_boot_command_line(void
        while (*args) {
                args = next_arg(args, &param, &val);
  
-               if (!strcmp(param, "mem")) {
-                       memory_end = memparse(val, NULL);
+               if (!strcmp(param, "mem") && val) {
+                       memory_end = round_down(memparse(val, NULL), PAGE_SIZE);
                        memory_end_set = 1;
                }
  
+               if (!strcmp(param, "vmalloc") && val)
+                       vmalloc_size = round_up(memparse(val, NULL), PAGE_SIZE);
                if (!strcmp(param, "noexec")) {
                        rc = kstrtobool(val, &enabled);
                        if (!rc && !enabled)
                                noexec_disabled = 1;
                }
  
-               if (!strcmp(param, "facilities"))
+               if (!strcmp(param, "facilities") && val)
                        modify_fac_list(val);
  
                if (!strcmp(param, "nokaslr"))
diff --combined arch/s390/boot/kaslr.c
@@@ -3,11 -3,11 +3,12 @@@
   * Copyright IBM Corp. 2019
   */
  #include <asm/mem_detect.h>
+ #include <asm/pgtable.h>
  #include <asm/cpacf.h>
  #include <asm/timex.h>
  #include <asm/sclp.h>
  #include "compressed/decompressor.h"
 +#include "boot.h"
  
  #define PRNG_MODE_TDES         1
  #define PRNG_MODE_SHA512 2
@@@ -90,8 -90,10 +91,10 @@@ static unsigned long get_random(unsigne
  
  unsigned long get_random_base(unsigned long safe_addr)
  {
+       unsigned long memory_limit = memory_end_set ? memory_end : 0;
        unsigned long base, start, end, kernel_size;
        unsigned long block_sum, offset;
+       unsigned long kasan_needs;
        int i;
  
        if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && INITRD_START && INITRD_SIZE) {
        }
        safe_addr = ALIGN(safe_addr, THREAD_SIZE);
  
+       if ((IS_ENABLED(CONFIG_KASAN))) {
+               /*
+                * Estimate kasan memory requirements, which it will reserve
+                * at the very end of available physical memory. To estimate
+                * that, we take into account that kasan would require
+                * 1/8 of available physical memory (for shadow memory) +
+                * creating page tables for the whole memory + shadow memory
+                * region (1 + 1/8). To keep page tables estimates simple take
+                * the double of combined ptes size.
+                */
+               memory_limit = get_mem_detect_end();
+               if (memory_end_set && memory_limit > memory_end)
+                       memory_limit = memory_end;
+               /* for shadow memory */
+               kasan_needs = memory_limit / 8;
+               /* for paging structures */
+               kasan_needs += (memory_limit + kasan_needs) / PAGE_SIZE /
+                              _PAGE_ENTRIES * _PAGE_TABLE_SIZE * 2;
+               memory_limit -= kasan_needs;
+       }
        kernel_size = vmlinux.image_size + vmlinux.bss_size;
        block_sum = 0;
        for_each_mem_detect_block(i, &start, &end) {
-               if (memory_end_set) {
-                       if (start >= memory_end)
+               if (memory_limit) {
+                       if (start >= memory_limit)
                                break;
-                       if (end > memory_end)
-                               end = memory_end;
+                       if (end > memory_limit)
+                               end = memory_limit;
                }
                if (end - start < kernel_size)
                        continue;
                base = safe_addr;
        block_sum = offset = 0;
        for_each_mem_detect_block(i, &start, &end) {
-               if (memory_end_set) {
-                       if (start >= memory_end)
+               if (memory_limit) {
+                       if (start >= memory_limit)
                                break;
-                       if (end > memory_end)
-                               end = memory_end;
+                       if (end > memory_limit)
+                               end = memory_limit;
                }
                if (end - start < kernel_size)
                        continue;
@@@ -3,7 -3,6 +3,7 @@@ CONFIG_POSIX_MQUEUE=
  CONFIG_AUDIT=y
  CONFIG_NO_HZ_IDLE=y
  CONFIG_HIGH_RES_TIMERS=y
 +CONFIG_PREEMPT=y
  CONFIG_BSD_PROCESS_ACCT=y
  CONFIG_BSD_PROCESS_ACCT_V3=y
  CONFIG_TASKSTATS=y
@@@ -19,71 -18,55 +19,71 @@@ CONFIG_BLK_CGROUP=
  CONFIG_CFS_BANDWIDTH=y
  CONFIG_RT_GROUP_SCHED=y
  CONFIG_CGROUP_PIDS=y
 +CONFIG_CGROUP_RDMA=y
  CONFIG_CGROUP_FREEZER=y
  CONFIG_CGROUP_HUGETLB=y
  CONFIG_CPUSETS=y
  CONFIG_CGROUP_DEVICE=y
  CONFIG_CGROUP_CPUACCT=y
  CONFIG_CGROUP_PERF=y
 +CONFIG_CGROUP_BPF=y
  CONFIG_NAMESPACES=y
  CONFIG_USER_NS=y
 +CONFIG_CHECKPOINT_RESTORE=y
  CONFIG_SCHED_AUTOGROUP=y
  CONFIG_BLK_DEV_INITRD=y
  CONFIG_EXPERT=y
  # CONFIG_SYSFS_SYSCALL is not set
 -CONFIG_CHECKPOINT_RESTORE=y
  CONFIG_BPF_SYSCALL=y
  CONFIG_USERFAULTFD=y
  # CONFIG_COMPAT_BRK is not set
  CONFIG_PROFILING=y
 +CONFIG_LIVEPATCH=y
 +CONFIG_TUNE_ZEC12=y
 +CONFIG_NR_CPUS=512
 +CONFIG_NUMA=y
 +CONFIG_HZ_100=y
 +CONFIG_KEXEC_FILE=y
 +CONFIG_EXPOLINE=y
 +CONFIG_EXPOLINE_AUTO=y
 +CONFIG_CHSC_SCH=y
 +CONFIG_VFIO_CCW=m
 +CONFIG_VFIO_AP=m
 +CONFIG_CRASH_DUMP=y
 +CONFIG_HIBERNATION=y
 +CONFIG_PM_DEBUG=y
 +CONFIG_CMM=m
 +CONFIG_APPLDATA_BASE=y
 +CONFIG_KVM=m
 +CONFIG_VHOST_NET=m
 +CONFIG_VHOST_VSOCK=m
  CONFIG_OPROFILE=m
  CONFIG_KPROBES=y
  CONFIG_JUMP_LABEL=y
  CONFIG_STATIC_KEYS_SELFTEST=y
 +CONFIG_REFCOUNT_FULL=y
 +CONFIG_LOCK_EVENT_COUNTS=y
  CONFIG_MODULES=y
  CONFIG_MODULE_FORCE_LOAD=y
  CONFIG_MODULE_UNLOAD=y
  CONFIG_MODULE_FORCE_UNLOAD=y
  CONFIG_MODVERSIONS=y
  CONFIG_MODULE_SRCVERSION_ALL=y
 +CONFIG_MODULE_SIG=y
 +CONFIG_MODULE_SIG_SHA256=y
  CONFIG_BLK_DEV_INTEGRITY=y
  CONFIG_BLK_DEV_THROTTLING=y
  CONFIG_BLK_WBT=y
 -CONFIG_BLK_WBT_SQ=y
 +CONFIG_BLK_CGROUP_IOLATENCY=y
  CONFIG_PARTITION_ADVANCED=y
  CONFIG_IBM_PARTITION=y
  CONFIG_BSD_DISKLABEL=y
  CONFIG_MINIX_SUBPARTITION=y
  CONFIG_SOLARIS_X86_PARTITION=y
  CONFIG_UNIXWARE_DISKLABEL=y
 -CONFIG_CFQ_GROUP_IOSCHED=y
 -CONFIG_DEFAULT_DEADLINE=y
 -CONFIG_LIVEPATCH=y
 -CONFIG_TUNE_ZEC12=y
 -CONFIG_NR_CPUS=512
 -CONFIG_NUMA=y
 -CONFIG_PREEMPT=y
 -CONFIG_HZ_100=y
 -CONFIG_KEXEC_FILE=y
 -CONFIG_KEXEC_VERIFY_SIG=y
 -CONFIG_EXPOLINE=y
 -CONFIG_EXPOLINE_AUTO=y
 +CONFIG_IOSCHED_BFQ=y
 +CONFIG_BFQ_GROUP_IOSCHED=y
 +CONFIG_BINFMT_MISC=m
  CONFIG_MEMORY_HOTPLUG=y
  CONFIG_MEMORY_HOTREMOVE=y
  CONFIG_KSM=y
@@@ -99,8 -82,17 +99,8 @@@ CONFIG_ZSMALLOC=
  CONFIG_ZSMALLOC_STAT=y
  CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
  CONFIG_IDLE_PAGE_TRACKING=y
 -CONFIG_PCI=y
 -CONFIG_PCI_DEBUG=y
 -CONFIG_HOTPLUG_PCI=y
 -CONFIG_HOTPLUG_PCI_S390=y
 -CONFIG_CHSC_SCH=y
 -CONFIG_VFIO_AP=m
 -CONFIG_VFIO_CCW=m
 -CONFIG_CRASH_DUMP=y
 -CONFIG_BINFMT_MISC=m
 -CONFIG_HIBERNATION=y
 -CONFIG_PM_DEBUG=y
 +CONFIG_PERCPU_STATS=y
 +CONFIG_GUP_BENCHMARK=y
  CONFIG_NET=y
  CONFIG_PACKET=y
  CONFIG_PACKET_DIAG=m
@@@ -129,6 -121,9 +129,6 @@@ CONFIG_NET_IPVTI=
  CONFIG_INET_AH=m
  CONFIG_INET_ESP=m
  CONFIG_INET_IPCOMP=m
 -CONFIG_INET_XFRM_MODE_TRANSPORT=m
 -CONFIG_INET_XFRM_MODE_TUNNEL=m
 -CONFIG_INET_XFRM_MODE_BEET=m
  CONFIG_INET_DIAG=m
  CONFIG_INET_UDP_DIAG=m
  CONFIG_TCP_CONG_ADVANCED=y
@@@ -144,6 -139,10 +144,6 @@@ CONFIG_INET6_AH=
  CONFIG_INET6_ESP=m
  CONFIG_INET6_IPCOMP=m
  CONFIG_IPV6_MIP6=m
 -CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 -CONFIG_INET6_XFRM_MODE_TUNNEL=m
 -CONFIG_INET6_XFRM_MODE_BEET=m
 -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
  CONFIG_IPV6_VTI=m
  CONFIG_IPV6_SIT=m
  CONFIG_IPV6_GRE=m
@@@ -265,8 -264,11 +265,8 @@@ CONFIG_IP_VS_SED=
  CONFIG_IP_VS_NQ=m
  CONFIG_IP_VS_FTP=m
  CONFIG_IP_VS_PE_SIP=m
 -CONFIG_NF_CONNTRACK_IPV4=m
  CONFIG_NF_TABLES_IPV4=y
 -CONFIG_NFT_CHAIN_ROUTE_IPV4=m
  CONFIG_NF_TABLES_ARP=y
 -CONFIG_NFT_CHAIN_NAT_IPV4=m
  CONFIG_IP_NF_IPTABLES=m
  CONFIG_IP_NF_MATCH_AH=m
  CONFIG_IP_NF_MATCH_ECN=m
@@@ -285,7 -287,10 +285,7 @@@ CONFIG_IP_NF_SECURITY=
  CONFIG_IP_NF_ARPTABLES=m
  CONFIG_IP_NF_ARPFILTER=m
  CONFIG_IP_NF_ARP_MANGLE=m
 -CONFIG_NF_CONNTRACK_IPV6=m
  CONFIG_NF_TABLES_IPV6=y
 -CONFIG_NFT_CHAIN_ROUTE_IPV6=m
 -CONFIG_NFT_CHAIN_NAT_IPV6=m
  CONFIG_IP6_NF_IPTABLES=m
  CONFIG_IP6_NF_MATCH_AH=m
  CONFIG_IP6_NF_MATCH_EUI64=m
@@@ -304,7 -309,7 +304,7 @@@ CONFIG_IP6_NF_RAW=
  CONFIG_IP6_NF_SECURITY=m
  CONFIG_IP6_NF_NAT=m
  CONFIG_IP6_NF_TARGET_MASQUERADE=m
 -CONFIG_NF_TABLES_BRIDGE=y
 +CONFIG_NF_TABLES_BRIDGE=m
  CONFIG_RDS=m
  CONFIG_RDS_RDMA=m
  CONFIG_RDS_TCP=m
@@@ -370,11 -375,9 +370,11 @@@ CONFIG_NETLINK_DIAG=
  CONFIG_CGROUP_NET_PRIO=y
  CONFIG_BPF_JIT=y
  CONFIG_NET_PKTGEN=m
 +CONFIG_PCI=y
 +CONFIG_PCI_DEBUG=y
 +CONFIG_HOTPLUG_PCI=y
 +CONFIG_HOTPLUG_PCI_S390=y
  CONFIG_DEVTMPFS=y
 -CONFIG_DMA_CMA=y
 -CONFIG_CMA_SIZE_MBYTES=0
  CONFIG_CONNECTOR=y
  CONFIG_ZRAM=m
  CONFIG_BLK_DEV_LOOP=m
@@@ -392,6 -395,7 +392,6 @@@ CONFIG_RAID_ATTRS=
  CONFIG_SCSI=y
  CONFIG_BLK_DEV_SD=y
  CONFIG_CHR_DEV_ST=m
 -CONFIG_CHR_DEV_OSST=m
  CONFIG_BLK_DEV_SR=m
  CONFIG_CHR_DEV_SG=y
  CONFIG_CHR_DEV_SCH=m
@@@ -411,19 -415,17 +411,19 @@@ CONFIG_SCSI_DH_RDAC=
  CONFIG_SCSI_DH_HP_SW=m
  CONFIG_SCSI_DH_EMC=m
  CONFIG_SCSI_DH_ALUA=m
 -CONFIG_SCSI_OSD_INITIATOR=m
 -CONFIG_SCSI_OSD_ULD=m
  CONFIG_MD=y
  CONFIG_BLK_DEV_MD=y
  CONFIG_MD_LINEAR=m
  CONFIG_MD_MULTIPATH=m
  CONFIG_MD_FAULTY=m
 +CONFIG_MD_CLUSTER=m
 +CONFIG_BCACHE=m
  CONFIG_BLK_DEV_DM=m
 +CONFIG_DM_UNSTRIPED=m
  CONFIG_DM_CRYPT=m
  CONFIG_DM_SNAPSHOT=m
  CONFIG_DM_THIN_PROVISIONING=m
 +CONFIG_DM_WRITECACHE=m
  CONFIG_DM_MIRROR=m
  CONFIG_DM_LOG_USERSPACE=m
  CONFIG_DM_RAID=m
@@@ -443,78 -445,23 +443,78 @@@ CONFIG_EQUALIZER=
  CONFIG_IFB=m
  CONFIG_MACVLAN=m
  CONFIG_MACVTAP=m
 -CONFIG_VXLAN=m
  CONFIG_TUN=m
  CONFIG_VETH=m
  CONFIG_VIRTIO_NET=m
  CONFIG_NLMON=m
 +# CONFIG_NET_VENDOR_3COM is not set
 +# CONFIG_NET_VENDOR_ADAPTEC is not set
 +# CONFIG_NET_VENDOR_AGERE is not set
 +# CONFIG_NET_VENDOR_ALACRITECH is not set
 +# CONFIG_NET_VENDOR_ALTEON is not set
 +# CONFIG_NET_VENDOR_AMAZON is not set
 +# CONFIG_NET_VENDOR_AMD is not set
 +# CONFIG_NET_VENDOR_AQUANTIA is not set
  # CONFIG_NET_VENDOR_ARC is not set
 +# CONFIG_NET_VENDOR_ATHEROS is not set
 +# CONFIG_NET_VENDOR_AURORA is not set
 +# CONFIG_NET_VENDOR_BROADCOM is not set
 +# CONFIG_NET_VENDOR_BROCADE is not set
 +# CONFIG_NET_VENDOR_CADENCE is not set
 +# CONFIG_NET_VENDOR_CAVIUM is not set
  # CONFIG_NET_VENDOR_CHELSIO is not set
 +# CONFIG_NET_VENDOR_CISCO is not set
 +# CONFIG_NET_VENDOR_CORTINA is not set
 +# CONFIG_NET_VENDOR_DEC is not set
 +# CONFIG_NET_VENDOR_DLINK is not set
 +# CONFIG_NET_VENDOR_EMULEX is not set
 +# CONFIG_NET_VENDOR_EZCHIP is not set
 +# CONFIG_NET_VENDOR_GOOGLE is not set
 +# CONFIG_NET_VENDOR_HP is not set
 +# CONFIG_NET_VENDOR_HUAWEI is not set
  # CONFIG_NET_VENDOR_INTEL is not set
  # CONFIG_NET_VENDOR_MARVELL is not set
  CONFIG_MLX4_EN=m
  CONFIG_MLX5_CORE=m
  CONFIG_MLX5_CORE_EN=y
 +# CONFIG_MLXFW is not set
 +# CONFIG_NET_VENDOR_MICREL is not set
 +# CONFIG_NET_VENDOR_MICROCHIP is not set
 +# CONFIG_NET_VENDOR_MICROSEMI is not set
 +# CONFIG_NET_VENDOR_MYRI is not set
  # CONFIG_NET_VENDOR_NATSEMI is not set
 +# CONFIG_NET_VENDOR_NETERION is not set
 +# CONFIG_NET_VENDOR_NETRONOME is not set
 +# CONFIG_NET_VENDOR_NI is not set
 +# CONFIG_NET_VENDOR_NVIDIA is not set
 +# CONFIG_NET_VENDOR_OKI is not set
 +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
 +# CONFIG_NET_VENDOR_QLOGIC is not set
 +# CONFIG_NET_VENDOR_QUALCOMM is not set
 +# CONFIG_NET_VENDOR_RDC is not set
 +# CONFIG_NET_VENDOR_REALTEK is not set
 +# CONFIG_NET_VENDOR_RENESAS is not set
 +# CONFIG_NET_VENDOR_ROCKER is not set
 +# CONFIG_NET_VENDOR_SAMSUNG is not set
 +# CONFIG_NET_VENDOR_SEEQ is not set
 +# CONFIG_NET_VENDOR_SOLARFLARE is not set
 +# CONFIG_NET_VENDOR_SILAN is not set
 +# CONFIG_NET_VENDOR_SIS is not set
 +# CONFIG_NET_VENDOR_SMSC is not set
 +# CONFIG_NET_VENDOR_SOCIONEXT is not set
 +# CONFIG_NET_VENDOR_STMICRO is not set
 +# CONFIG_NET_VENDOR_SUN is not set
 +# CONFIG_NET_VENDOR_SYNOPSYS is not set
 +# CONFIG_NET_VENDOR_TEHUTI is not set
 +# CONFIG_NET_VENDOR_TI is not set
 +# CONFIG_NET_VENDOR_VIA is not set
 +# CONFIG_NET_VENDOR_WIZNET is not set
  CONFIG_PPP=m
  CONFIG_PPP_BSDCOMP=m
  CONFIG_PPP_DEFLATE=m
 +CONFIG_PPP_FILTER=y
  CONFIG_PPP_MPPE=m
 +CONFIG_PPP_MULTILINK=y
  CONFIG_PPPOE=m
  CONFIG_PPTP=m
  CONFIG_PPPOL2TP=m
@@@ -526,13 -473,10 +526,13 @@@ CONFIG_INPUT_EVDEV=
  # CONFIG_INPUT_MOUSE is not set
  # CONFIG_SERIO is not set
  CONFIG_LEGACY_PTY_COUNT=0
 +CONFIG_NULL_TTY=m
  CONFIG_HW_RANDOM_VIRTIO=m
  CONFIG_RAW_DRIVER=m
  CONFIG_HANGCHECK_TIMER=m
  CONFIG_TN3270_FS=y
 +CONFIG_PPS=m
 +# CONFIG_PTP_1588_CLOCK is not set
  # CONFIG_HWMON is not set
  CONFIG_WATCHDOG=y
  CONFIG_WATCHDOG_NOWAYOUT=y
@@@ -554,8 -498,8 +554,8 @@@ CONFIG_VFIO_MDEV_DEVICE=
  CONFIG_VIRTIO_PCI=m
  CONFIG_VIRTIO_BALLOON=m
  CONFIG_VIRTIO_INPUT=y
 -CONFIG_S390_AP_IOMMU=y
  CONFIG_S390_CCW_IOMMU=y
 +CONFIG_S390_AP_IOMMU=y
  CONFIG_EXT4_FS=y
  CONFIG_EXT4_FS_POSIX_ACL=y
  CONFIG_EXT4_FS_SECURITY=y
@@@ -575,7 -519,6 +575,7 @@@ CONFIG_OCFS2_FS=
  CONFIG_BTRFS_FS=y
  CONFIG_BTRFS_FS_POSIX_ACL=y
  CONFIG_BTRFS_DEBUG=y
 +CONFIG_BTRFS_ASSERT=y
  CONFIG_NILFS2_FS=m
  CONFIG_FS_DAX=y
  CONFIG_EXPORTFS_BLOCK_OPS=y
@@@ -609,10 -552,8 +609,10 @@@ CONFIG_ECRYPT_FS=
  CONFIG_CRAMFS=m
  CONFIG_SQUASHFS=m
  CONFIG_SQUASHFS_XATTR=y
 +CONFIG_SQUASHFS_LZ4=y
  CONFIG_SQUASHFS_LZO=y
  CONFIG_SQUASHFS_XZ=y
 +CONFIG_SQUASHFS_ZSTD=y
  CONFIG_ROMFS_FS=m
  CONFIG_NFS_FS=m
  CONFIG_NFS_V3_ACL=y
@@@ -623,6 -564,7 +623,6 @@@ CONFIG_NFSD_V3_ACL=
  CONFIG_NFSD_V4=y
  CONFIG_NFSD_V4_SECURITY_LABEL=y
  CONFIG_CIFS=m
 -CONFIG_CIFS_STATS=y
  CONFIG_CIFS_STATS2=y
  CONFIG_CIFS_WEAK_PW_HASH=y
  CONFIG_CIFS_UPCALL=y
@@@ -638,112 -580,19 +638,114 @@@ CONFIG_NLS_ISO8859_1=
  CONFIG_NLS_ISO8859_15=m
  CONFIG_NLS_UTF8=m
  CONFIG_DLM=m
 +CONFIG_UNICODE=y
 +CONFIG_PERSISTENT_KEYRINGS=y
 +CONFIG_BIG_KEYS=y
 +CONFIG_ENCRYPTED_KEYS=m
 +CONFIG_SECURITY=y
 +CONFIG_SECURITY_NETWORK=y
 +CONFIG_FORTIFY_SOURCE=y
 +CONFIG_SECURITY_SELINUX=y
 +CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 +CONFIG_SECURITY_SELINUX_DISABLE=y
 +CONFIG_INTEGRITY_SIGNATURE=y
 +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
 +CONFIG_IMA=y
 +CONFIG_IMA_DEFAULT_HASH_SHA256=y
 +CONFIG_IMA_WRITE_POLICY=y
 +CONFIG_IMA_APPRAISE=y
 +CONFIG_CRYPTO_USER=m
 +# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 +CONFIG_CRYPTO_PCRYPT=m
 +CONFIG_CRYPTO_CRYPTD=m
 +CONFIG_CRYPTO_TEST=m
 +CONFIG_CRYPTO_DH=m
 +CONFIG_CRYPTO_ECDH=m
 +CONFIG_CRYPTO_ECRDSA=m
 +CONFIG_CRYPTO_CHACHA20POLY1305=m
 +CONFIG_CRYPTO_AEGIS128=m
 +CONFIG_CRYPTO_AEGIS128L=m
 +CONFIG_CRYPTO_AEGIS256=m
 +CONFIG_CRYPTO_MORUS640=m
 +CONFIG_CRYPTO_MORUS1280=m
 +CONFIG_CRYPTO_CFB=m
 +CONFIG_CRYPTO_LRW=m
 +CONFIG_CRYPTO_PCBC=m
 +CONFIG_CRYPTO_KEYWRAP=m
 +CONFIG_CRYPTO_ADIANTUM=m
 +CONFIG_CRYPTO_XCBC=m
 +CONFIG_CRYPTO_VMAC=m
 +CONFIG_CRYPTO_CRC32=m
 +CONFIG_CRYPTO_XXHASH=m
 +CONFIG_CRYPTO_MICHAEL_MIC=m
 +CONFIG_CRYPTO_RMD128=m
 +CONFIG_CRYPTO_RMD160=m
 +CONFIG_CRYPTO_RMD256=m
 +CONFIG_CRYPTO_RMD320=m
 +CONFIG_CRYPTO_SHA3=m
 +CONFIG_CRYPTO_SM3=m
 +CONFIG_CRYPTO_TGR192=m
 +CONFIG_CRYPTO_WP512=m
 +CONFIG_CRYPTO_AES_TI=m
 +CONFIG_CRYPTO_ANUBIS=m
 +CONFIG_CRYPTO_ARC4=m
 +CONFIG_CRYPTO_BLOWFISH=m
 +CONFIG_CRYPTO_CAMELLIA=m
 +CONFIG_CRYPTO_CAST5=m
 +CONFIG_CRYPTO_CAST6=m
 +CONFIG_CRYPTO_FCRYPT=m
 +CONFIG_CRYPTO_KHAZAD=m
 +CONFIG_CRYPTO_SALSA20=m
 +CONFIG_CRYPTO_SEED=m
 +CONFIG_CRYPTO_SERPENT=m
 +CONFIG_CRYPTO_SM4=m
 +CONFIG_CRYPTO_TEA=m
 +CONFIG_CRYPTO_TWOFISH=m
 +CONFIG_CRYPTO_842=m
 +CONFIG_CRYPTO_LZ4=m
 +CONFIG_CRYPTO_LZ4HC=m
 +CONFIG_CRYPTO_ZSTD=m
 +CONFIG_CRYPTO_ANSI_CPRNG=m
 +CONFIG_CRYPTO_USER_API_HASH=m
 +CONFIG_CRYPTO_USER_API_SKCIPHER=m
 +CONFIG_CRYPTO_USER_API_RNG=m
 +CONFIG_CRYPTO_USER_API_AEAD=m
 +CONFIG_CRYPTO_STATS=y
 +CONFIG_ZCRYPT=m
 +CONFIG_PKEY=m
 +CONFIG_CRYPTO_PAES_S390=m
 +CONFIG_CRYPTO_SHA1_S390=m
 +CONFIG_CRYPTO_SHA256_S390=m
 +CONFIG_CRYPTO_SHA512_S390=m
++CONFIG_CRYPTO_SHA3_256_S390=m
++CONFIG_CRYPTO_SHA3_512_S390=m
 +CONFIG_CRYPTO_DES_S390=m
 +CONFIG_CRYPTO_AES_S390=m
 +CONFIG_CRYPTO_GHASH_S390=m
 +CONFIG_CRYPTO_CRC32_S390=y
 +CONFIG_CORDIC=m
 +CONFIG_CRC32_SELFTEST=y
 +CONFIG_CRC4=m
 +CONFIG_CRC7=m
 +CONFIG_CRC8=m
 +CONFIG_RANDOM32_SELFTEST=y
 +CONFIG_DMA_CMA=y
 +CONFIG_CMA_SIZE_MBYTES=0
 +CONFIG_DMA_API_DEBUG=y
 +CONFIG_STRING_SELFTEST=y
  CONFIG_PRINTK_TIME=y
  CONFIG_DYNAMIC_DEBUG=y
  CONFIG_DEBUG_INFO=y
  CONFIG_DEBUG_INFO_DWARF4=y
  CONFIG_GDB_SCRIPTS=y
  CONFIG_FRAME_WARN=1024
 -CONFIG_READABLE_ASM=y
  CONFIG_UNUSED_SYMBOLS=y
  CONFIG_HEADERS_INSTALL=y
  CONFIG_HEADERS_CHECK=y
  CONFIG_DEBUG_SECTION_MISMATCH=y
  CONFIG_MAGIC_SYSRQ=y
  CONFIG_DEBUG_PAGEALLOC=y
 +CONFIG_PAGE_OWNER=y
  CONFIG_DEBUG_RODATA_TEST=y
  CONFIG_DEBUG_OBJECTS=y
  CONFIG_DEBUG_OBJECTS_SELFTEST=y
@@@ -796,6 -645,7 +798,6 @@@ CONFIG_STACK_TRACER=
  CONFIG_BLK_DEV_IO_TRACE=y
  CONFIG_FUNCTION_PROFILER=y
  CONFIG_HIST_TRIGGERS=y
 -CONFIG_DMA_API_DEBUG=y
  CONFIG_LKDTM=m
  CONFIG_TEST_LIST_SORT=y
  CONFIG_TEST_SORT=y
@@@ -807,3 -657,87 +809,3 @@@ CONFIG_ATOMIC64_SELFTEST=
  CONFIG_TEST_BPF=m
  CONFIG_BUG_ON_DATA_CORRUPTION=y
  CONFIG_S390_PTDUMP=y
 -CONFIG_PERSISTENT_KEYRINGS=y
 -CONFIG_BIG_KEYS=y
 -CONFIG_ENCRYPTED_KEYS=m
 -CONFIG_SECURITY=y
 -CONFIG_SECURITY_NETWORK=y
 -CONFIG_FORTIFY_SOURCE=y
 -CONFIG_SECURITY_SELINUX=y
 -CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
 -CONFIG_SECURITY_SELINUX_DISABLE=y
 -CONFIG_INTEGRITY_SIGNATURE=y
 -CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
 -CONFIG_IMA=y
 -CONFIG_IMA_DEFAULT_HASH_SHA256=y
 -CONFIG_IMA_WRITE_POLICY=y
 -CONFIG_IMA_APPRAISE=y
 -CONFIG_CRYPTO_DH=m
 -CONFIG_CRYPTO_ECDH=m
 -CONFIG_CRYPTO_USER=m
 -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 -CONFIG_CRYPTO_PCRYPT=m
 -CONFIG_CRYPTO_CRYPTD=m
 -CONFIG_CRYPTO_TEST=m
 -CONFIG_CRYPTO_CHACHA20POLY1305=m
 -CONFIG_CRYPTO_LRW=m
 -CONFIG_CRYPTO_PCBC=m
 -CONFIG_CRYPTO_KEYWRAP=m
 -CONFIG_CRYPTO_XCBC=m
 -CONFIG_CRYPTO_VMAC=m
 -CONFIG_CRYPTO_CRC32=m
 -CONFIG_CRYPTO_MICHAEL_MIC=m
 -CONFIG_CRYPTO_RMD128=m
 -CONFIG_CRYPTO_RMD160=m
 -CONFIG_CRYPTO_RMD256=m
 -CONFIG_CRYPTO_RMD320=m
 -CONFIG_CRYPTO_SHA512=m
 -CONFIG_CRYPTO_SHA3=m
 -CONFIG_CRYPTO_TGR192=m
 -CONFIG_CRYPTO_WP512=m
 -CONFIG_CRYPTO_AES_TI=m
 -CONFIG_CRYPTO_ANUBIS=m
 -CONFIG_CRYPTO_BLOWFISH=m
 -CONFIG_CRYPTO_CAMELLIA=m
 -CONFIG_CRYPTO_CAST5=m
 -CONFIG_CRYPTO_CAST6=m
 -CONFIG_CRYPTO_FCRYPT=m
 -CONFIG_CRYPTO_KHAZAD=m
 -CONFIG_CRYPTO_SALSA20=m
 -CONFIG_CRYPTO_SEED=m
 -CONFIG_CRYPTO_SERPENT=m
 -CONFIG_CRYPTO_TEA=m
 -CONFIG_CRYPTO_TWOFISH=m
 -CONFIG_CRYPTO_842=m
 -CONFIG_CRYPTO_LZ4=m
 -CONFIG_CRYPTO_LZ4HC=m
 -CONFIG_CRYPTO_ANSI_CPRNG=m
 -CONFIG_CRYPTO_USER_API_HASH=m
 -CONFIG_CRYPTO_USER_API_SKCIPHER=m
 -CONFIG_CRYPTO_USER_API_RNG=m
 -CONFIG_CRYPTO_USER_API_AEAD=m
 -CONFIG_ZCRYPT=m
 -CONFIG_PKEY=m
 -CONFIG_CRYPTO_PAES_S390=m
 -CONFIG_CRYPTO_SHA1_S390=m
 -CONFIG_CRYPTO_SHA256_S390=m
 -CONFIG_CRYPTO_SHA512_S390=m
 -CONFIG_CRYPTO_SHA3_256_S390=m
 -CONFIG_CRYPTO_SHA3_512_S390=m
 -CONFIG_CRYPTO_DES_S390=m
 -CONFIG_CRYPTO_AES_S390=m
 -CONFIG_CRYPTO_GHASH_S390=m
 -CONFIG_CRYPTO_CRC32_S390=y
 -CONFIG_PKCS7_MESSAGE_PARSER=y
 -CONFIG_SYSTEM_TRUSTED_KEYRING=y
 -CONFIG_CRC7=m
 -CONFIG_CRC8=m
 -CONFIG_RANDOM32_SELFTEST=y
 -CONFIG_CORDIC=m
 -CONFIG_CMM=m
 -CONFIG_APPLDATA_BASE=y
 -CONFIG_KVM=m
 -CONFIG_KVM_S390_UCONTROL=y
 -CONFIG_VHOST_NET=m
 -CONFIG_VHOST_VSOCK=m
@@@ -12,51 -12,30 +12,51 @@@ CONFIG_TASK_IO_ACCOUNTING=
  CONFIG_IKCONFIG=y
  CONFIG_IKCONFIG_PROC=y
  CONFIG_NUMA_BALANCING=y
 -# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
  CONFIG_MEMCG=y
  CONFIG_MEMCG_SWAP=y
  CONFIG_BLK_CGROUP=y
  CONFIG_CFS_BANDWIDTH=y
  CONFIG_RT_GROUP_SCHED=y
  CONFIG_CGROUP_PIDS=y
 +CONFIG_CGROUP_RDMA=y
  CONFIG_CGROUP_FREEZER=y
  CONFIG_CGROUP_HUGETLB=y
  CONFIG_CPUSETS=y
  CONFIG_CGROUP_DEVICE=y
  CONFIG_CGROUP_CPUACCT=y
  CONFIG_CGROUP_PERF=y
 +CONFIG_CGROUP_BPF=y
  CONFIG_NAMESPACES=y
  CONFIG_USER_NS=y
 +CONFIG_CHECKPOINT_RESTORE=y
  CONFIG_SCHED_AUTOGROUP=y
  CONFIG_BLK_DEV_INITRD=y
  CONFIG_EXPERT=y
  # CONFIG_SYSFS_SYSCALL is not set
 -CONFIG_CHECKPOINT_RESTORE=y
  CONFIG_BPF_SYSCALL=y
  CONFIG_USERFAULTFD=y
  # CONFIG_COMPAT_BRK is not set
  CONFIG_PROFILING=y
 +CONFIG_LIVEPATCH=y
 +CONFIG_TUNE_ZEC12=y
 +CONFIG_NR_CPUS=512
 +CONFIG_NUMA=y
 +# CONFIG_NUMA_EMU is not set
 +CONFIG_HZ_100=y
 +CONFIG_KEXEC_FILE=y
 +CONFIG_EXPOLINE=y
 +CONFIG_EXPOLINE_AUTO=y
 +CONFIG_CHSC_SCH=y
 +CONFIG_VFIO_CCW=m
 +CONFIG_VFIO_AP=m
 +CONFIG_CRASH_DUMP=y
 +CONFIG_HIBERNATION=y
 +CONFIG_PM_DEBUG=y
 +CONFIG_CMM=m
 +CONFIG_APPLDATA_BASE=y
 +CONFIG_KVM=m
 +CONFIG_VHOST_NET=m
 +CONFIG_VHOST_VSOCK=m
  CONFIG_OPROFILE=m
  CONFIG_KPROBES=y
  CONFIG_JUMP_LABEL=y
@@@ -68,18 -47,27 +68,18 @@@ CONFIG_MODVERSIONS=
  CONFIG_MODULE_SRCVERSION_ALL=y
  CONFIG_MODULE_SIG=y
  CONFIG_MODULE_SIG_SHA256=y
 -CONFIG_BLK_DEV_INTEGRITY=y
  CONFIG_BLK_DEV_THROTTLING=y
  CONFIG_BLK_WBT=y
 -CONFIG_BLK_WBT_SQ=y
 +CONFIG_BLK_CGROUP_IOLATENCY=y
  CONFIG_PARTITION_ADVANCED=y
  CONFIG_IBM_PARTITION=y
  CONFIG_BSD_DISKLABEL=y
  CONFIG_MINIX_SUBPARTITION=y
  CONFIG_SOLARIS_X86_PARTITION=y
  CONFIG_UNIXWARE_DISKLABEL=y
 -CONFIG_CFQ_GROUP_IOSCHED=y
 -CONFIG_DEFAULT_DEADLINE=y
 -CONFIG_LIVEPATCH=y
 -CONFIG_TUNE_ZEC12=y
 -CONFIG_NR_CPUS=512
 -CONFIG_NUMA=y
 -CONFIG_HZ_100=y
 -CONFIG_KEXEC_FILE=y
 -CONFIG_KEXEC_VERIFY_SIG=y
 -CONFIG_EXPOLINE=y
 -CONFIG_EXPOLINE_AUTO=y
 +CONFIG_IOSCHED_BFQ=y
 +CONFIG_BFQ_GROUP_IOSCHED=y
 +CONFIG_BINFMT_MISC=m
  CONFIG_MEMORY_HOTPLUG=y
  CONFIG_MEMORY_HOTREMOVE=y
  CONFIG_KSM=y
@@@ -93,8 -81,16 +93,8 @@@ CONFIG_ZSMALLOC=
  CONFIG_ZSMALLOC_STAT=y
  CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
  CONFIG_IDLE_PAGE_TRACKING=y
 -CONFIG_PCI=y
 -CONFIG_HOTPLUG_PCI=y
 -CONFIG_HOTPLUG_PCI_S390=y
 -CONFIG_CHSC_SCH=y
 -CONFIG_VFIO_AP=m
 -CONFIG_VFIO_CCW=m
 -CONFIG_CRASH_DUMP=y
 -CONFIG_BINFMT_MISC=m
 -CONFIG_HIBERNATION=y
 -CONFIG_PM_DEBUG=y
 +CONFIG_PERCPU_STATS=y
 +CONFIG_GUP_BENCHMARK=y
  CONFIG_NET=y
  CONFIG_PACKET=y
  CONFIG_PACKET_DIAG=m
@@@ -123,6 -119,9 +123,6 @@@ CONFIG_NET_IPVTI=
  CONFIG_INET_AH=m
  CONFIG_INET_ESP=m
  CONFIG_INET_IPCOMP=m
 -CONFIG_INET_XFRM_MODE_TRANSPORT=m
 -CONFIG_INET_XFRM_MODE_TUNNEL=m
 -CONFIG_INET_XFRM_MODE_BEET=m
  CONFIG_INET_DIAG=m
  CONFIG_INET_UDP_DIAG=m
  CONFIG_TCP_CONG_ADVANCED=y
@@@ -138,6 -137,10 +138,6 @@@ CONFIG_INET6_AH=
  CONFIG_INET6_ESP=m
  CONFIG_INET6_IPCOMP=m
  CONFIG_IPV6_MIP6=m
 -CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 -CONFIG_INET6_XFRM_MODE_TUNNEL=m
 -CONFIG_INET6_XFRM_MODE_BEET=m
 -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
  CONFIG_IPV6_VTI=m
  CONFIG_IPV6_SIT=m
  CONFIG_IPV6_GRE=m
@@@ -259,8 -262,11 +259,8 @@@ CONFIG_IP_VS_SED=
  CONFIG_IP_VS_NQ=m
  CONFIG_IP_VS_FTP=m
  CONFIG_IP_VS_PE_SIP=m
 -CONFIG_NF_CONNTRACK_IPV4=m
  CONFIG_NF_TABLES_IPV4=y
 -CONFIG_NFT_CHAIN_ROUTE_IPV4=m
  CONFIG_NF_TABLES_ARP=y
 -CONFIG_NFT_CHAIN_NAT_IPV4=m
  CONFIG_IP_NF_IPTABLES=m
  CONFIG_IP_NF_MATCH_AH=m
  CONFIG_IP_NF_MATCH_ECN=m
@@@ -279,7 -285,10 +279,7 @@@ CONFIG_IP_NF_SECURITY=
  CONFIG_IP_NF_ARPTABLES=m
  CONFIG_IP_NF_ARPFILTER=m
  CONFIG_IP_NF_ARP_MANGLE=m
 -CONFIG_NF_CONNTRACK_IPV6=m
  CONFIG_NF_TABLES_IPV6=y
 -CONFIG_NFT_CHAIN_ROUTE_IPV6=m
 -CONFIG_NFT_CHAIN_NAT_IPV6=m
  CONFIG_IP6_NF_IPTABLES=m
  CONFIG_IP6_NF_MATCH_AH=m
  CONFIG_IP6_NF_MATCH_EUI64=m
@@@ -298,7 -307,7 +298,7 @@@ CONFIG_IP6_NF_RAW=
  CONFIG_IP6_NF_SECURITY=m
  CONFIG_IP6_NF_NAT=m
  CONFIG_IP6_NF_TARGET_MASQUERADE=m
 -CONFIG_NF_TABLES_BRIDGE=y
 +CONFIG_NF_TABLES_BRIDGE=m
  CONFIG_RDS=m
  CONFIG_RDS_RDMA=m
  CONFIG_RDS_TCP=m
@@@ -363,11 -372,9 +363,11 @@@ CONFIG_NETLINK_DIAG=
  CONFIG_CGROUP_NET_PRIO=y
  CONFIG_BPF_JIT=y
  CONFIG_NET_PKTGEN=m
 +CONFIG_PCI=y
 +CONFIG_HOTPLUG_PCI=y
 +CONFIG_HOTPLUG_PCI_S390=y
 +CONFIG_UEVENT_HELPER=y
  CONFIG_DEVTMPFS=y
 -CONFIG_DMA_CMA=y
 -CONFIG_CMA_SIZE_MBYTES=0
  CONFIG_CONNECTOR=y
  CONFIG_ZRAM=m
  CONFIG_BLK_DEV_LOOP=m
@@@ -376,7 -383,6 +376,7 @@@ CONFIG_BLK_DEV_DRBD=
  CONFIG_BLK_DEV_NBD=m
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_SIZE=32768
 +# CONFIG_BLK_DEV_XPRAM is not set
  CONFIG_VIRTIO_BLK=y
  CONFIG_BLK_DEV_RBD=m
  CONFIG_BLK_DEV_NVME=m
@@@ -386,6 -392,7 +386,6 @@@ CONFIG_RAID_ATTRS=
  CONFIG_SCSI=y
  CONFIG_BLK_DEV_SD=y
  CONFIG_CHR_DEV_ST=m
 -CONFIG_CHR_DEV_OSST=m
  CONFIG_BLK_DEV_SR=m
  CONFIG_CHR_DEV_SG=y
  CONFIG_CHR_DEV_SCH=m
@@@ -405,19 -412,17 +405,19 @@@ CONFIG_SCSI_DH_RDAC=
  CONFIG_SCSI_DH_HP_SW=m
  CONFIG_SCSI_DH_EMC=m
  CONFIG_SCSI_DH_ALUA=m
 -CONFIG_SCSI_OSD_INITIATOR=m
 -CONFIG_SCSI_OSD_ULD=m
  CONFIG_MD=y
  CONFIG_BLK_DEV_MD=y
  CONFIG_MD_LINEAR=m
  CONFIG_MD_MULTIPATH=m
  CONFIG_MD_FAULTY=m
 +CONFIG_MD_CLUSTER=m
 +CONFIG_BCACHE=m
  CONFIG_BLK_DEV_DM=m
 +CONFIG_DM_UNSTRIPED=m
  CONFIG_DM_CRYPT=m
  CONFIG_DM_SNAPSHOT=m
  CONFIG_DM_THIN_PROVISIONING=m
 +CONFIG_DM_WRITECACHE=m
  CONFIG_DM_MIRROR=m
  CONFIG_DM_LOG_USERSPACE=m
  CONFIG_DM_RAID=m
@@@ -430,7 -435,6 +430,7 @@@ CONFIG_DM_UEVENT=
  CONFIG_DM_FLAKEY=m
  CONFIG_DM_VERITY=m
  CONFIG_DM_SWITCH=m
 +CONFIG_DM_INTEGRITY=m
  CONFIG_NETDEVICES=y
  CONFIG_BONDING=m
  CONFIG_DUMMY=m
@@@ -438,78 -442,23 +438,78 @@@ CONFIG_EQUALIZER=
  CONFIG_IFB=m
  CONFIG_MACVLAN=m
  CONFIG_MACVTAP=m
 -CONFIG_VXLAN=m
  CONFIG_TUN=m
  CONFIG_VETH=m
  CONFIG_VIRTIO_NET=m
  CONFIG_NLMON=m
 +# CONFIG_NET_VENDOR_3COM is not set
 +# CONFIG_NET_VENDOR_ADAPTEC is not set
 +# CONFIG_NET_VENDOR_AGERE is not set
 +# CONFIG_NET_VENDOR_ALACRITECH is not set
 +# CONFIG_NET_VENDOR_ALTEON is not set
 +# CONFIG_NET_VENDOR_AMAZON is not set
 +# CONFIG_NET_VENDOR_AMD is not set
 +# CONFIG_NET_VENDOR_AQUANTIA is not set
  # CONFIG_NET_VENDOR_ARC is not set
 +# CONFIG_NET_VENDOR_ATHEROS is not set
 +# CONFIG_NET_VENDOR_AURORA is not set
 +# CONFIG_NET_VENDOR_BROADCOM is not set
 +# CONFIG_NET_VENDOR_BROCADE is not set
 +# CONFIG_NET_VENDOR_CADENCE is not set
 +# CONFIG_NET_VENDOR_CAVIUM is not set
  # CONFIG_NET_VENDOR_CHELSIO is not set
 +# CONFIG_NET_VENDOR_CISCO is not set
 +# CONFIG_NET_VENDOR_CORTINA is not set
 +# CONFIG_NET_VENDOR_DEC is not set
 +# CONFIG_NET_VENDOR_DLINK is not set
 +# CONFIG_NET_VENDOR_EMULEX is not set
 +# CONFIG_NET_VENDOR_EZCHIP is not set
 +# CONFIG_NET_VENDOR_GOOGLE is not set
 +# CONFIG_NET_VENDOR_HP is not set
 +# CONFIG_NET_VENDOR_HUAWEI is not set
  # CONFIG_NET_VENDOR_INTEL is not set
  # CONFIG_NET_VENDOR_MARVELL is not set
  CONFIG_MLX4_EN=m
  CONFIG_MLX5_CORE=m
  CONFIG_MLX5_CORE_EN=y
 +# CONFIG_MLXFW is not set
 +# CONFIG_NET_VENDOR_MICREL is not set
 +# CONFIG_NET_VENDOR_MICROCHIP is not set
 +# CONFIG_NET_VENDOR_MICROSEMI is not set
 +# CONFIG_NET_VENDOR_MYRI is not set
  # CONFIG_NET_VENDOR_NATSEMI is not set
 +# CONFIG_NET_VENDOR_NETERION is not set
 +# CONFIG_NET_VENDOR_NETRONOME is not set
 +# CONFIG_NET_VENDOR_NI is not set
 +# CONFIG_NET_VENDOR_NVIDIA is not set
 +# CONFIG_NET_VENDOR_OKI is not set
 +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
 +# CONFIG_NET_VENDOR_QLOGIC is not set
 +# CONFIG_NET_VENDOR_QUALCOMM is not set
 +# CONFIG_NET_VENDOR_RDC is not set
 +# CONFIG_NET_VENDOR_REALTEK is not set
 +# CONFIG_NET_VENDOR_RENESAS is not set
 +# CONFIG_NET_VENDOR_ROCKER is not set
 +# CONFIG_NET_VENDOR_SAMSUNG is not set
 +# CONFIG_NET_VENDOR_SEEQ is not set
 +# CONFIG_NET_VENDOR_SOLARFLARE is not set
 +# CONFIG_NET_VENDOR_SILAN is not set
 +# CONFIG_NET_VENDOR_SIS is not set
 +# CONFIG_NET_VENDOR_SMSC is not set
 +# CONFIG_NET_VENDOR_SOCIONEXT is not set
 +# CONFIG_NET_VENDOR_STMICRO is not set
 +# CONFIG_NET_VENDOR_SUN is not set
 +# CONFIG_NET_VENDOR_SYNOPSYS is not set
 +# CONFIG_NET_VENDOR_TEHUTI is not set
 +# CONFIG_NET_VENDOR_TI is not set
 +# CONFIG_NET_VENDOR_VIA is not set
 +# CONFIG_NET_VENDOR_WIZNET is not set
  CONFIG_PPP=m
  CONFIG_PPP_BSDCOMP=m
  CONFIG_PPP_DEFLATE=m
 +CONFIG_PPP_FILTER=y
  CONFIG_PPP_MPPE=m
 +CONFIG_PPP_MULTILINK=y
  CONFIG_PPPOE=m
  CONFIG_PPTP=m
  CONFIG_PPPOL2TP=m
@@@ -521,21 -470,17 +521,21 @@@ CONFIG_INPUT_EVDEV=
  # CONFIG_INPUT_MOUSE is not set
  # CONFIG_SERIO is not set
  CONFIG_LEGACY_PTY_COUNT=0
 +CONFIG_NULL_TTY=m
  CONFIG_HW_RANDOM_VIRTIO=m
  CONFIG_RAW_DRIVER=m
  CONFIG_HANGCHECK_TIMER=m
  CONFIG_TN3270_FS=y
 +# CONFIG_PTP_1588_CLOCK is not set
  # CONFIG_HWMON is not set
  CONFIG_WATCHDOG=y
 +CONFIG_WATCHDOG_CORE=y
  CONFIG_WATCHDOG_NOWAYOUT=y
  CONFIG_SOFT_WATCHDOG=m
  CONFIG_DIAG288_WATCHDOG=m
  CONFIG_DRM=y
  CONFIG_DRM_VIRTIO_GPU=y
 +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
  CONFIG_FRAMEBUFFER_CONSOLE=y
  # CONFIG_HID is not set
  # CONFIG_USB_SUPPORT is not set
@@@ -550,8 -495,8 +550,8 @@@ CONFIG_VFIO_MDEV_DEVICE=
  CONFIG_VIRTIO_PCI=m
  CONFIG_VIRTIO_BALLOON=m
  CONFIG_VIRTIO_INPUT=y
 -CONFIG_S390_AP_IOMMU=y
  CONFIG_S390_CCW_IOMMU=y
 +CONFIG_S390_AP_IOMMU=y
  CONFIG_EXT4_FS=y
  CONFIG_EXT4_FS_POSIX_ACL=y
  CONFIG_EXT4_FS_SECURITY=y
@@@ -601,10 -546,8 +601,10 @@@ CONFIG_ECRYPT_FS=
  CONFIG_CRAMFS=m
  CONFIG_SQUASHFS=m
  CONFIG_SQUASHFS_XATTR=y
 +CONFIG_SQUASHFS_LZ4=y
  CONFIG_SQUASHFS_LZO=y
  CONFIG_SQUASHFS_XZ=y
 +CONFIG_SQUASHFS_ZSTD=y
  CONFIG_ROMFS_FS=m
  CONFIG_NFS_FS=m
  CONFIG_NFS_V3_ACL=y
@@@ -615,6 -558,7 +615,6 @@@ CONFIG_NFSD_V3_ACL=
  CONFIG_NFSD_V4=y
  CONFIG_NFSD_V4_SECURITY_LABEL=y
  CONFIG_CIFS=m
 -CONFIG_CIFS_STATS=y
  CONFIG_CIFS_STATS2=y
  CONFIG_CIFS_WEAK_PW_HASH=y
  CONFIG_CIFS_UPCALL=y
@@@ -630,7 -574,31 +630,7 @@@ CONFIG_NLS_ISO8859_1=
  CONFIG_NLS_ISO8859_15=m
  CONFIG_NLS_UTF8=m
  CONFIG_DLM=m
 -CONFIG_PRINTK_TIME=y
 -CONFIG_DEBUG_INFO=y
 -CONFIG_DEBUG_INFO_DWARF4=y
 -CONFIG_GDB_SCRIPTS=y
 -# CONFIG_ENABLE_MUST_CHECK is not set
 -CONFIG_FRAME_WARN=1024
 -CONFIG_UNUSED_SYMBOLS=y
 -CONFIG_MAGIC_SYSRQ=y
 -CONFIG_DEBUG_MEMORY_INIT=y
 -CONFIG_PANIC_ON_OOPS=y
 -CONFIG_RCU_TORTURE_TEST=m
 -CONFIG_RCU_CPU_STALL_TIMEOUT=60
 -CONFIG_LATENCYTOP=y
 -CONFIG_SCHED_TRACER=y
 -CONFIG_FTRACE_SYSCALLS=y
 -CONFIG_STACK_TRACER=y
 -CONFIG_BLK_DEV_IO_TRACE=y
 -CONFIG_FUNCTION_PROFILER=y
 -CONFIG_HIST_TRIGGERS=y
 -CONFIG_LKDTM=m
 -CONFIG_PERCPU_TEST=m
 -CONFIG_ATOMIC64_SELFTEST=y
 -CONFIG_TEST_BPF=m
 -CONFIG_BUG_ON_DATA_CORRUPTION=y
 -CONFIG_S390_PTDUMP=y
 +CONFIG_UNICODE=y
  CONFIG_PERSISTENT_KEYRINGS=y
  CONFIG_BIG_KEYS=y
  CONFIG_ENCRYPTED_KEYS=m
@@@ -638,6 -606,7 +638,6 @@@ CONFIG_SECURITY=
  CONFIG_SECURITY_NETWORK=y
  CONFIG_SECURITY_SELINUX=y
  CONFIG_SECURITY_SELINUX_BOOTPARAM=y
 -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
  CONFIG_SECURITY_SELINUX_DISABLE=y
  CONFIG_INTEGRITY_SIGNATURE=y
  CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
@@@ -646,42 -615,31 +646,42 @@@ CONFIG_IMA_DEFAULT_HASH_SHA256=
  CONFIG_IMA_WRITE_POLICY=y
  CONFIG_IMA_APPRAISE=y
  CONFIG_CRYPTO_FIPS=y
 -CONFIG_CRYPTO_DH=m
 -CONFIG_CRYPTO_ECDH=m
  CONFIG_CRYPTO_USER=m
  # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
  CONFIG_CRYPTO_PCRYPT=m
  CONFIG_CRYPTO_CRYPTD=m
  CONFIG_CRYPTO_TEST=m
 +CONFIG_CRYPTO_DH=m
 +CONFIG_CRYPTO_ECDH=m
 +CONFIG_CRYPTO_ECRDSA=m
  CONFIG_CRYPTO_CHACHA20POLY1305=m
 +CONFIG_CRYPTO_AEGIS128=m
 +CONFIG_CRYPTO_AEGIS128L=m
 +CONFIG_CRYPTO_AEGIS256=m
 +CONFIG_CRYPTO_MORUS640=m
 +CONFIG_CRYPTO_MORUS1280=m
 +CONFIG_CRYPTO_CFB=m
  CONFIG_CRYPTO_LRW=m
 +CONFIG_CRYPTO_OFB=m
  CONFIG_CRYPTO_PCBC=m
  CONFIG_CRYPTO_KEYWRAP=m
 +CONFIG_CRYPTO_ADIANTUM=m
  CONFIG_CRYPTO_XCBC=m
  CONFIG_CRYPTO_VMAC=m
  CONFIG_CRYPTO_CRC32=m
 +CONFIG_CRYPTO_XXHASH=m
  CONFIG_CRYPTO_MICHAEL_MIC=m
  CONFIG_CRYPTO_RMD128=m
  CONFIG_CRYPTO_RMD160=m
  CONFIG_CRYPTO_RMD256=m
  CONFIG_CRYPTO_RMD320=m
 -CONFIG_CRYPTO_SHA512=m
  CONFIG_CRYPTO_SHA3=m
 +CONFIG_CRYPTO_SM3=m
  CONFIG_CRYPTO_TGR192=m
  CONFIG_CRYPTO_WP512=m
  CONFIG_CRYPTO_AES_TI=m
  CONFIG_CRYPTO_ANUBIS=m
 +CONFIG_CRYPTO_ARC4=m
  CONFIG_CRYPTO_BLOWFISH=m
  CONFIG_CRYPTO_CAMELLIA=m
  CONFIG_CRYPTO_CAST5=m
@@@ -691,57 -649,34 +691,59 @@@ CONFIG_CRYPTO_KHAZAD=
  CONFIG_CRYPTO_SALSA20=m
  CONFIG_CRYPTO_SEED=m
  CONFIG_CRYPTO_SERPENT=m
 +CONFIG_CRYPTO_SM4=m
  CONFIG_CRYPTO_TEA=m
  CONFIG_CRYPTO_TWOFISH=m
  CONFIG_CRYPTO_842=m
  CONFIG_CRYPTO_LZ4=m
  CONFIG_CRYPTO_LZ4HC=m
 +CONFIG_CRYPTO_ZSTD=m
  CONFIG_CRYPTO_ANSI_CPRNG=m
  CONFIG_CRYPTO_USER_API_HASH=m
  CONFIG_CRYPTO_USER_API_SKCIPHER=m
  CONFIG_CRYPTO_USER_API_RNG=m
  CONFIG_CRYPTO_USER_API_AEAD=m
 +CONFIG_CRYPTO_STATS=y
  CONFIG_ZCRYPT=m
  CONFIG_PKEY=m
  CONFIG_CRYPTO_PAES_S390=m
  CONFIG_CRYPTO_SHA1_S390=m
  CONFIG_CRYPTO_SHA256_S390=m
  CONFIG_CRYPTO_SHA512_S390=m
+ CONFIG_CRYPTO_SHA3_256_S390=m
+ CONFIG_CRYPTO_SHA3_512_S390=m
  CONFIG_CRYPTO_DES_S390=m
  CONFIG_CRYPTO_AES_S390=m
  CONFIG_CRYPTO_GHASH_S390=m
  CONFIG_CRYPTO_CRC32_S390=y
 +CONFIG_CORDIC=m
 +CONFIG_CRC4=m
  CONFIG_CRC7=m
  CONFIG_CRC8=m
 -CONFIG_CORDIC=m
 -CONFIG_CMM=m
 -CONFIG_APPLDATA_BASE=y
 -CONFIG_KVM=m
 -CONFIG_KVM_S390_UCONTROL=y
 -CONFIG_VHOST_NET=m
 -CONFIG_VHOST_VSOCK=m
 +CONFIG_DMA_CMA=y
 +CONFIG_CMA_SIZE_MBYTES=0
 +CONFIG_PRINTK_TIME=y
 +CONFIG_DEBUG_INFO=y
 +CONFIG_DEBUG_INFO_DWARF4=y
 +CONFIG_GDB_SCRIPTS=y
 +CONFIG_FRAME_WARN=1024
 +CONFIG_UNUSED_SYMBOLS=y
 +CONFIG_DEBUG_SECTION_MISMATCH=y
 +CONFIG_MAGIC_SYSRQ=y
 +CONFIG_DEBUG_MEMORY_INIT=y
 +CONFIG_PANIC_ON_OOPS=y
 +CONFIG_RCU_TORTURE_TEST=m
 +CONFIG_RCU_CPU_STALL_TIMEOUT=60
 +CONFIG_LATENCYTOP=y
 +CONFIG_SCHED_TRACER=y
 +CONFIG_FTRACE_SYSCALLS=y
 +CONFIG_STACK_TRACER=y
 +CONFIG_BLK_DEV_IO_TRACE=y
 +CONFIG_FUNCTION_PROFILER=y
 +CONFIG_HIST_TRIGGERS=y
 +CONFIG_LKDTM=m
 +CONFIG_PERCPU_TEST=m
 +CONFIG_ATOMIC64_SELFTEST=y
 +CONFIG_TEST_BPF=m
 +CONFIG_BUG_ON_DATA_CORRUPTION=y
 +CONFIG_S390_PTDUMP=y
@@@ -83,8 -83,8 +83,9 @@@ struct parmarea 
  extern int noexec_disabled;
  extern int memory_end_set;
  extern unsigned long memory_end;
+ extern unsigned long vmalloc_size;
  extern unsigned long max_physmem_end;
 +extern unsigned long __swsusp_reset_dma;
  
  #define MACHINE_IS_VM         (S390_lowcore.machine_flags & MACHINE_FLAG_VM)
  #define MACHINE_IS_KVM                (S390_lowcore.machine_flags & MACHINE_FLAG_KVM)
@@@ -34,11 -34,9 +34,9 @@@ ENTRY(startup_continue
        larl    %r14,init_task
        stg     %r14,__LC_CURRENT
        larl    %r15,init_thread_union+THREAD_SIZE-STACK_FRAME_OVERHEAD
- #
- # Early setup functions that may not rely on an initialized bss section,
- # like moving the initrd. Returns with an initialized bss section.
- #
-       brasl   %r14,startup_init_nobss
+ #ifdef CONFIG_KASAN
+       brasl   %r14,kasan_early_init
+ #endif
  #
  # Early machine initialization and detection functions.
  #
  
        .align  16
  .LPG1:
 -.Lpcmsk:.quad 0x0000000180000000
 -.L4malign:.quad 0xffffffffffc00000
 -.Lscan2g:.quad        0x80000000 + 0x20000 - 8        # 2GB + 128K - 8
 -.Lnop:        .long   0x07000700
 -.Lparmaddr:
 -      .quad   PARMAREA
 -      .align  64
  .Ldw: .quad   0x0002000180000000,0x0000000000000000
  .Laregs:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
diff --combined arch/s390/kernel/setup.c
@@@ -99,6 -99,7 +99,7 @@@ int __bootdata_preserved(prot_virt_gues
  int __bootdata(noexec_disabled);
  int __bootdata(memory_end_set);
  unsigned long __bootdata(memory_end);
+ unsigned long __bootdata(vmalloc_size);
  unsigned long __bootdata(max_physmem_end);
  struct mem_detect_info __bootdata(mem_detect);
  
@@@ -168,15 -169,15 +169,15 @@@ static void __init set_preferred_consol
  static int __init conmode_setup(char *str)
  {
  #if defined(CONFIG_SCLP_CONSOLE) || defined(CONFIG_SCLP_VT220_CONSOLE)
-       if (strncmp(str, "hwc", 4) == 0 || strncmp(str, "sclp", 5) == 0)
+       if (!strcmp(str, "hwc") || !strcmp(str, "sclp"))
                  SET_CONSOLE_SCLP;
  #endif
  #if defined(CONFIG_TN3215_CONSOLE)
-       if (strncmp(str, "3215", 5) == 0)
+       if (!strcmp(str, "3215"))
                SET_CONSOLE_3215;
  #endif
  #if defined(CONFIG_TN3270_CONSOLE)
-       if (strncmp(str, "3270", 5) == 0)
+       if (!strcmp(str, "3270"))
                SET_CONSOLE_3270;
  #endif
        set_preferred_console();
@@@ -211,7 -212,7 +212,7 @@@ static void __init conmode_default(void
  #endif
                        return;
                }
-               if (strncmp(ptr + 8, "3270", 4) == 0) {
+               if (str_has_prefix(ptr + 8, "3270")) {
  #if defined(CONFIG_TN3270_CONSOLE)
                        SET_CONSOLE_3270;
  #elif defined(CONFIG_TN3215_CONSOLE)
  #elif defined(CONFIG_SCLP_CONSOLE) || defined(CONFIG_SCLP_VT220_CONSOLE)
                        SET_CONSOLE_SCLP;
  #endif
-               } else if (strncmp(ptr + 8, "3215", 4) == 0) {
+               } else if (str_has_prefix(ptr + 8, "3215")) {
  #if defined(CONFIG_TN3215_CONSOLE)
                        SET_CONSOLE_3215;
  #elif defined(CONFIG_TN3270_CONSOLE)
@@@ -302,15 -303,6 +303,6 @@@ void machine_power_off(void
  void (*pm_power_off)(void) = machine_power_off;
  EXPORT_SYMBOL_GPL(pm_power_off);
  
- static int __init parse_vmalloc(char *arg)
- {
-       if (!arg)
-               return -EINVAL;
-       VMALLOC_END = (memparse(arg, &arg) + PAGE_SIZE - 1) & PAGE_MASK;
-       return 0;
- }
- early_param("vmalloc", parse_vmalloc);
  void *restart_stack __section(.data);
  
  unsigned long stack_alloc(void)
@@@ -563,10 -555,9 +555,9 @@@ static void __init setup_resources(void
  
  static void __init setup_memory_end(void)
  {
-       unsigned long vmax, vmalloc_size, tmp;
+       unsigned long vmax, tmp;
  
        /* Choose kernel address space layout: 3 or 4 levels. */
-       vmalloc_size = VMALLOC_END ?: (128UL << 30) - MODULES_LEN;
        if (IS_ENABLED(CONFIG_KASAN)) {
                vmax = IS_ENABLED(CONFIG_KASAN_S390_4_LEVEL_PAGING)
                           ? _REGION1_SIZE
@@@ -990,6 -981,10 +981,10 @@@ static int __init setup_hwcaps(void
        case 0x3907:
                strcpy(elf_platform, "z14");
                break;
+       case 0x8561:
+       case 0x8562:
+               strcpy(elf_platform, "z15");
+               break;
        }
  
        /*
@@@ -1114,7 -1109,8 +1109,7 @@@ void __init setup_arch(char **cmdline_p
  
          ROOT_DEV = Root_RAM0;
  
 -      /* Is init_mm really needed? */
 -      init_mm.start_code = PAGE_OFFSET;
 +      init_mm.start_code = (unsigned long) _text;
        init_mm.end_code = (unsigned long) _etext;
        init_mm.end_data = (unsigned long) _edata;
        init_mm.brk = (unsigned long) _end;
diff --combined arch/s390/kernel/vdso.c
@@@ -97,21 -97,13 +97,13 @@@ static const struct vm_special_mapping 
        .mremap = vdso_mremap,
  };
  
- static int __init vdso_setup(char *s)
+ static int __init vdso_setup(char *str)
  {
-       unsigned long val;
-       int rc;
-       rc = 0;
-       if (strncmp(s, "on", 3) == 0)
-               vdso_enabled = 1;
-       else if (strncmp(s, "off", 4) == 0)
-               vdso_enabled = 0;
-       else {
-               rc = kstrtoul(s, 0, &val);
-               vdso_enabled = rc ? 0 : !!val;
-       }
-       return !rc;
+       bool enabled;
+       if (!kstrtobool(str, &enabled))
+               vdso_enabled = enabled;
+       return 1;
  }
  __setup("vdso=", vdso_setup);
  
@@@ -216,6 -208,11 +208,6 @@@ int arch_setup_additional_pages(struct 
  
        if (!vdso_enabled)
                return 0;
 -      /*
 -       * Only map the vdso for dynamically linked elf binaries.
 -       */
 -      if (!uses_interp)
 -              return 0;
  
        vdso_pages = vdso64_pages;
  #ifdef CONFIG_COMPAT_VDSO
diff --combined arch/s390/mm/gmap.c
@@@ -67,7 -67,7 +67,7 @@@ static struct gmap *gmap_alloc(unsigne
        INIT_RADIX_TREE(&gmap->host_to_rmap, GFP_ATOMIC);
        spin_lock_init(&gmap->guest_table_lock);
        spin_lock_init(&gmap->shadow_lock);
-       atomic_set(&gmap->ref_count, 1);
+       refcount_set(&gmap->ref_count, 1);
        page = alloc_pages(GFP_KERNEL, CRST_ALLOC_ORDER);
        if (!page)
                goto out_free;
@@@ -214,7 -214,7 +214,7 @@@ static void gmap_free(struct gmap *gmap
   */
  struct gmap *gmap_get(struct gmap *gmap)
  {
-       atomic_inc(&gmap->ref_count);
+       refcount_inc(&gmap->ref_count);
        return gmap;
  }
  EXPORT_SYMBOL_GPL(gmap_get);
   */
  void gmap_put(struct gmap *gmap)
  {
-       if (atomic_dec_return(&gmap->ref_count) == 0)
+       if (refcount_dec_and_test(&gmap->ref_count))
                gmap_free(gmap);
  }
  EXPORT_SYMBOL_GPL(gmap_put);
@@@ -1594,7 -1594,7 +1594,7 @@@ static struct gmap *gmap_find_shadow(st
                        continue;
                if (!sg->initialized)
                        return ERR_PTR(-EAGAIN);
-               atomic_inc(&sg->ref_count);
+               refcount_inc(&sg->ref_count);
                return sg;
        }
        return NULL;
@@@ -1682,7 -1682,7 +1682,7 @@@ struct gmap *gmap_shadow(struct gmap *p
                        }
                }
        }
-       atomic_set(&new->ref_count, 2);
+       refcount_set(&new->ref_count, 2);
        list_add(&new->list, &parent->children);
        if (asce & _ASCE_REAL_SPACE) {
                /* nothing to protect, return right away */
@@@ -2424,8 -2424,8 +2424,8 @@@ EXPORT_SYMBOL_GPL(gmap_pmdp_idte_global
   * This function is assumed to be called with the guest_table_lock
   * held.
   */
 -bool gmap_test_and_clear_dirty_pmd(struct gmap *gmap, pmd_t *pmdp,
 -                                 unsigned long gaddr)
 +static bool gmap_test_and_clear_dirty_pmd(struct gmap *gmap, pmd_t *pmdp,
 +                                        unsigned long gaddr)
  {
        if (pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID)
                return false;