Skip to content

Commit 7eb3625

Browse files
committed
Merge tag 's390-5.17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Vasily Gorbik: - Fix loading of modules with lots of relocations and add a regression test for it. - Fix machine check handling for vector validity and guarded storage validity failures in KVM guests. - Fix hypervisor performance data to include z/VM guests with access control group set. - Fix z900 build problem in uaccess code. - Update defconfigs. * tag 's390-5.17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/hypfs: include z/VM guests with access control group set s390: update defconfigs s390/module: test loading modules with a lot of relocations s390/module: fix loading modules with a lot of relocations s390/uaccess: fix compile error s390/nmi: handle vector validity failures for KVM guests s390/nmi: handle guarded storage validity failures for KVM guests
2 parents 8157f47 + 663d34c commit 7eb3625

File tree

12 files changed

+184
-45
lines changed

12 files changed

+184
-45
lines changed

arch/s390/Kconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,9 @@ config S390_GUEST
945945

946946
endmenu
947947

948+
config S390_MODULES_SANITY_TEST_HELPERS
949+
def_bool n
950+
948951
menu "Selftests"
949952

950953
config S390_UNWIND_SELFTEST
@@ -971,4 +974,16 @@ config S390_KPROBES_SANITY_TEST
971974

972975
Say N if you are unsure.
973976

977+
config S390_MODULES_SANITY_TEST
978+
def_tristate n
979+
depends on KUNIT
980+
default KUNIT_ALL_TESTS
981+
prompt "Enable s390 specific modules tests"
982+
select S390_MODULES_SANITY_TEST_HELPERS
983+
help
984+
This option enables an s390 specific modules test. This option is
985+
not useful for distributions or general kernels, but only for
986+
kernel developers working on architecture code.
987+
988+
Say N if you are unsure.
974989
endmenu

arch/s390/configs/debug_defconfig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ CONFIG_APPLDATA_BASE=y
6363
CONFIG_KVM=m
6464
CONFIG_S390_UNWIND_SELFTEST=m
6565
CONFIG_S390_KPROBES_SANITY_TEST=m
66+
CONFIG_S390_MODULES_SANITY_TEST=m
6667
CONFIG_KPROBES=y
6768
CONFIG_JUMP_LABEL=y
6869
CONFIG_STATIC_KEYS_SELFTEST=y
@@ -96,7 +97,6 @@ CONFIG_MEMORY_HOTPLUG=y
9697
CONFIG_MEMORY_HOTREMOVE=y
9798
CONFIG_KSM=y
9899
CONFIG_TRANSPARENT_HUGEPAGE=y
99-
CONFIG_FRONTSWAP=y
100100
CONFIG_CMA_DEBUG=y
101101
CONFIG_CMA_DEBUGFS=y
102102
CONFIG_CMA_SYSFS=y
@@ -109,14 +109,14 @@ CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
109109
CONFIG_IDLE_PAGE_TRACKING=y
110110
CONFIG_PERCPU_STATS=y
111111
CONFIG_GUP_TEST=y
112+
CONFIG_ANON_VMA_NAME=y
112113
CONFIG_NET=y
113114
CONFIG_PACKET=y
114115
CONFIG_PACKET_DIAG=m
115116
CONFIG_UNIX=y
116117
CONFIG_UNIX_DIAG=m
117118
CONFIG_XFRM_USER=m
118119
CONFIG_NET_KEY=m
119-
CONFIG_NET_SWITCHDEV=y
120120
CONFIG_SMC=m
121121
CONFIG_SMC_DIAG=m
122122
CONFIG_INET=y
@@ -185,7 +185,6 @@ CONFIG_NF_CT_NETLINK_TIMEOUT=m
185185
CONFIG_NF_TABLES=m
186186
CONFIG_NF_TABLES_INET=y
187187
CONFIG_NFT_CT=m
188-
CONFIG_NFT_COUNTER=m
189188
CONFIG_NFT_LOG=m
190189
CONFIG_NFT_LIMIT=m
191190
CONFIG_NFT_NAT=m
@@ -391,6 +390,7 @@ CONFIG_OPENVSWITCH=m
391390
CONFIG_VSOCKETS=m
392391
CONFIG_VIRTIO_VSOCKETS=m
393392
CONFIG_NETLINK_DIAG=m
393+
CONFIG_NET_SWITCHDEV=y
394394
CONFIG_CGROUP_NET_PRIO=y
395395
CONFIG_NET_PKTGEN=m
396396
CONFIG_PCI=y
@@ -400,6 +400,7 @@ CONFIG_PCI_IOV=y
400400
CONFIG_HOTPLUG_PCI=y
401401
CONFIG_HOTPLUG_PCI_S390=y
402402
CONFIG_DEVTMPFS=y
403+
CONFIG_DEVTMPFS_SAFE=y
403404
CONFIG_CONNECTOR=y
404405
CONFIG_ZRAM=y
405406
CONFIG_BLK_DEV_LOOP=m
@@ -501,6 +502,7 @@ CONFIG_NLMON=m
501502
# CONFIG_NET_VENDOR_DEC is not set
502503
# CONFIG_NET_VENDOR_DLINK is not set
503504
# CONFIG_NET_VENDOR_EMULEX is not set
505+
# CONFIG_NET_VENDOR_ENGLEDER is not set
504506
# CONFIG_NET_VENDOR_EZCHIP is not set
505507
# CONFIG_NET_VENDOR_GOOGLE is not set
506508
# CONFIG_NET_VENDOR_HUAWEI is not set
@@ -511,7 +513,6 @@ CONFIG_NLMON=m
511513
CONFIG_MLX4_EN=m
512514
CONFIG_MLX5_CORE=m
513515
CONFIG_MLX5_CORE_EN=y
514-
CONFIG_MLX5_ESWITCH=y
515516
# CONFIG_NET_VENDOR_MICREL is not set
516517
# CONFIG_NET_VENDOR_MICROCHIP is not set
517518
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -542,6 +543,7 @@ CONFIG_MLX5_ESWITCH=y
542543
# CONFIG_NET_VENDOR_SYNOPSYS is not set
543544
# CONFIG_NET_VENDOR_TEHUTI is not set
544545
# CONFIG_NET_VENDOR_TI is not set
546+
# CONFIG_NET_VENDOR_VERTEXCOM is not set
545547
# CONFIG_NET_VENDOR_VIA is not set
546548
# CONFIG_NET_VENDOR_WIZNET is not set
547549
# CONFIG_NET_VENDOR_XILINX is not set
@@ -592,6 +594,7 @@ CONFIG_VIRTIO_BALLOON=m
592594
CONFIG_VIRTIO_INPUT=y
593595
CONFIG_VHOST_NET=m
594596
CONFIG_VHOST_VSOCK=m
597+
# CONFIG_SURFACE_PLATFORMS is not set
595598
CONFIG_S390_CCW_IOMMU=y
596599
CONFIG_S390_AP_IOMMU=y
597600
CONFIG_EXT4_FS=y
@@ -756,9 +759,6 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
756759
CONFIG_CRYPTO_USER_API_RNG=m
757760
CONFIG_CRYPTO_USER_API_AEAD=m
758761
CONFIG_CRYPTO_STATS=y
759-
CONFIG_CRYPTO_LIB_BLAKE2S=m
760-
CONFIG_CRYPTO_LIB_CURVE25519=m
761-
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
762762
CONFIG_ZCRYPT=m
763763
CONFIG_PKEY=m
764764
CONFIG_CRYPTO_PAES_S390=m
@@ -774,6 +774,8 @@ CONFIG_CRYPTO_GHASH_S390=m
774774
CONFIG_CRYPTO_CRC32_S390=y
775775
CONFIG_CRYPTO_DEV_VIRTIO=m
776776
CONFIG_CORDIC=m
777+
CONFIG_CRYPTO_LIB_CURVE25519=m
778+
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
777779
CONFIG_CRC32_SELFTEST=y
778780
CONFIG_CRC4=m
779781
CONFIG_CRC7=m
@@ -807,7 +809,6 @@ CONFIG_SLUB_DEBUG_ON=y
807809
CONFIG_SLUB_STATS=y
808810
CONFIG_DEBUG_STACK_USAGE=y
809811
CONFIG_DEBUG_VM=y
810-
CONFIG_DEBUG_VM_VMACACHE=y
811812
CONFIG_DEBUG_VM_PGFLAGS=y
812813
CONFIG_DEBUG_MEMORY_INIT=y
813814
CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m
@@ -819,12 +820,11 @@ CONFIG_PANIC_ON_OOPS=y
819820
CONFIG_DETECT_HUNG_TASK=y
820821
CONFIG_WQ_WATCHDOG=y
821822
CONFIG_TEST_LOCKUP=m
822-
CONFIG_DEBUG_TIMEKEEPING=y
823823
CONFIG_PROVE_LOCKING=y
824824
CONFIG_LOCK_STAT=y
825-
CONFIG_DEBUG_LOCKDEP=y
826825
CONFIG_DEBUG_ATOMIC_SLEEP=y
827826
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
827+
CONFIG_DEBUG_IRQFLAGS=y
828828
CONFIG_DEBUG_SG=y
829829
CONFIG_DEBUG_NOTIFIERS=y
830830
CONFIG_BUG_ON_DATA_CORRUPTION=y

arch/s390/configs/defconfig

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ CONFIG_APPLDATA_BASE=y
6161
CONFIG_KVM=m
6262
CONFIG_S390_UNWIND_SELFTEST=m
6363
CONFIG_S390_KPROBES_SANITY_TEST=m
64+
CONFIG_S390_MODULES_SANITY_TEST=m
6465
CONFIG_KPROBES=y
6566
CONFIG_JUMP_LABEL=y
6667
# CONFIG_GCC_PLUGINS is not set
@@ -91,7 +92,6 @@ CONFIG_MEMORY_HOTPLUG=y
9192
CONFIG_MEMORY_HOTREMOVE=y
9293
CONFIG_KSM=y
9394
CONFIG_TRANSPARENT_HUGEPAGE=y
94-
CONFIG_FRONTSWAP=y
9595
CONFIG_CMA_SYSFS=y
9696
CONFIG_CMA_AREAS=7
9797
CONFIG_MEM_SOFT_DIRTY=y
@@ -101,14 +101,14 @@ CONFIG_ZSMALLOC_STAT=y
101101
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
102102
CONFIG_IDLE_PAGE_TRACKING=y
103103
CONFIG_PERCPU_STATS=y
104+
CONFIG_ANON_VMA_NAME=y
104105
CONFIG_NET=y
105106
CONFIG_PACKET=y
106107
CONFIG_PACKET_DIAG=m
107108
CONFIG_UNIX=y
108109
CONFIG_UNIX_DIAG=m
109110
CONFIG_XFRM_USER=m
110111
CONFIG_NET_KEY=m
111-
CONFIG_NET_SWITCHDEV=y
112112
CONFIG_SMC=m
113113
CONFIG_SMC_DIAG=m
114114
CONFIG_INET=y
@@ -177,7 +177,6 @@ CONFIG_NF_CT_NETLINK_TIMEOUT=m
177177
CONFIG_NF_TABLES=m
178178
CONFIG_NF_TABLES_INET=y
179179
CONFIG_NFT_CT=m
180-
CONFIG_NFT_COUNTER=m
181180
CONFIG_NFT_LOG=m
182181
CONFIG_NFT_LIMIT=m
183182
CONFIG_NFT_NAT=m
@@ -382,6 +381,7 @@ CONFIG_OPENVSWITCH=m
382381
CONFIG_VSOCKETS=m
383382
CONFIG_VIRTIO_VSOCKETS=m
384383
CONFIG_NETLINK_DIAG=m
384+
CONFIG_NET_SWITCHDEV=y
385385
CONFIG_CGROUP_NET_PRIO=y
386386
CONFIG_NET_PKTGEN=m
387387
CONFIG_PCI=y
@@ -391,6 +391,7 @@ CONFIG_HOTPLUG_PCI=y
391391
CONFIG_HOTPLUG_PCI_S390=y
392392
CONFIG_UEVENT_HELPER=y
393393
CONFIG_DEVTMPFS=y
394+
CONFIG_DEVTMPFS_SAFE=y
394395
CONFIG_CONNECTOR=y
395396
CONFIG_ZRAM=y
396397
CONFIG_BLK_DEV_LOOP=m
@@ -492,6 +493,7 @@ CONFIG_NLMON=m
492493
# CONFIG_NET_VENDOR_DEC is not set
493494
# CONFIG_NET_VENDOR_DLINK is not set
494495
# CONFIG_NET_VENDOR_EMULEX is not set
496+
# CONFIG_NET_VENDOR_ENGLEDER is not set
495497
# CONFIG_NET_VENDOR_EZCHIP is not set
496498
# CONFIG_NET_VENDOR_GOOGLE is not set
497499
# CONFIG_NET_VENDOR_HUAWEI is not set
@@ -502,7 +504,6 @@ CONFIG_NLMON=m
502504
CONFIG_MLX4_EN=m
503505
CONFIG_MLX5_CORE=m
504506
CONFIG_MLX5_CORE_EN=y
505-
CONFIG_MLX5_ESWITCH=y
506507
# CONFIG_NET_VENDOR_MICREL is not set
507508
# CONFIG_NET_VENDOR_MICROCHIP is not set
508509
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -533,6 +534,7 @@ CONFIG_MLX5_ESWITCH=y
533534
# CONFIG_NET_VENDOR_SYNOPSYS is not set
534535
# CONFIG_NET_VENDOR_TEHUTI is not set
535536
# CONFIG_NET_VENDOR_TI is not set
537+
# CONFIG_NET_VENDOR_VERTEXCOM is not set
536538
# CONFIG_NET_VENDOR_VIA is not set
537539
# CONFIG_NET_VENDOR_WIZNET is not set
538540
# CONFIG_NET_VENDOR_XILINX is not set
@@ -582,6 +584,7 @@ CONFIG_VIRTIO_BALLOON=m
582584
CONFIG_VIRTIO_INPUT=y
583585
CONFIG_VHOST_NET=m
584586
CONFIG_VHOST_VSOCK=m
587+
# CONFIG_SURFACE_PLATFORMS is not set
585588
CONFIG_S390_CCW_IOMMU=y
586589
CONFIG_S390_AP_IOMMU=y
587590
CONFIG_EXT4_FS=y
@@ -743,9 +746,6 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
743746
CONFIG_CRYPTO_USER_API_RNG=m
744747
CONFIG_CRYPTO_USER_API_AEAD=m
745748
CONFIG_CRYPTO_STATS=y
746-
CONFIG_CRYPTO_LIB_BLAKE2S=m
747-
CONFIG_CRYPTO_LIB_CURVE25519=m
748-
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
749749
CONFIG_ZCRYPT=m
750750
CONFIG_PKEY=m
751751
CONFIG_CRYPTO_PAES_S390=m
@@ -762,6 +762,8 @@ CONFIG_CRYPTO_CRC32_S390=y
762762
CONFIG_CRYPTO_DEV_VIRTIO=m
763763
CONFIG_CORDIC=m
764764
CONFIG_PRIME_NUMBERS=m
765+
CONFIG_CRYPTO_LIB_CURVE25519=m
766+
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
765767
CONFIG_CRC4=m
766768
CONFIG_CRC7=m
767769
CONFIG_CRC8=m

arch/s390/configs/zfcpdump_defconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# CONFIG_SWAP is not set
22
CONFIG_NO_HZ_IDLE=y
33
CONFIG_HIGH_RES_TIMERS=y
4+
CONFIG_BPF_SYSCALL=y
45
# CONFIG_CPU_ISOLATION is not set
56
# CONFIG_UTS_NS is not set
67
# CONFIG_TIME_NS is not set
@@ -34,6 +35,7 @@ CONFIG_NET=y
3435
# CONFIG_PCPU_DEV_REFCNT is not set
3536
# CONFIG_ETHTOOL_NETLINK is not set
3637
CONFIG_DEVTMPFS=y
38+
CONFIG_DEVTMPFS_SAFE=y
3739
CONFIG_BLK_DEV_RAM=y
3840
# CONFIG_DCSSBLK is not set
3941
# CONFIG_DASD is not set
@@ -58,6 +60,7 @@ CONFIG_ZFCP=y
5860
# CONFIG_HID is not set
5961
# CONFIG_VIRTIO_MENU is not set
6062
# CONFIG_VHOST_MENU is not set
63+
# CONFIG_SURFACE_PLATFORMS is not set
6164
# CONFIG_IOMMU_SUPPORT is not set
6265
# CONFIG_DNOTIFY is not set
6366
# CONFIG_INOTIFY_USER is not set

arch/s390/hypfs/hypfs_vm.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
static char local_guest[] = " ";
2222
static char all_guests[] = "* ";
23+
static char *all_groups = all_guests;
2324
static char *guest_query;
2425

2526
struct diag2fc_data {
@@ -62,10 +63,11 @@ static int diag2fc(int size, char* query, void *addr)
6263

6364
memcpy(parm_list.userid, query, NAME_LEN);
6465
ASCEBC(parm_list.userid, NAME_LEN);
65-
parm_list.addr = (unsigned long) addr ;
66+
memcpy(parm_list.aci_grp, all_groups, NAME_LEN);
67+
ASCEBC(parm_list.aci_grp, NAME_LEN);
68+
parm_list.addr = (unsigned long)addr;
6669
parm_list.size = size;
6770
parm_list.fmt = 0x02;
68-
memset(parm_list.aci_grp, 0x40, NAME_LEN);
6971
rc = -1;
7072

7173
diag_stat_inc(DIAG_STAT_X2FC);

arch/s390/include/asm/uaccess.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n);
4747
int __put_user_bad(void) __attribute__((noreturn));
4848
int __get_user_bad(void) __attribute__((noreturn));
4949

50-
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES
51-
5250
union oac {
5351
unsigned int val;
5452
struct {
@@ -71,6 +69,8 @@ union oac {
7169
};
7270
};
7371

72+
#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES
73+
7474
#define __put_get_user_asm(to, from, size, oac_spec) \
7575
({ \
7676
int __rc; \

arch/s390/kernel/module.c

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#define DEBUGP(fmt , ...)
3434
#endif
3535

36-
#define PLT_ENTRY_SIZE 20
36+
#define PLT_ENTRY_SIZE 22
3737

3838
void *module_alloc(unsigned long size)
3939
{
@@ -341,27 +341,26 @@ static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
341341
case R_390_PLTOFF32: /* 32 bit offset from GOT to PLT. */
342342
case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */
343343
if (info->plt_initialized == 0) {
344-
unsigned int insn[5];
345-
unsigned int *ip = me->core_layout.base +
346-
me->arch.plt_offset +
347-
info->plt_offset;
348-
349-
insn[0] = 0x0d10e310; /* basr 1,0 */
350-
insn[1] = 0x100a0004; /* lg 1,10(1) */
344+
unsigned char insn[PLT_ENTRY_SIZE];
345+
char *plt_base;
346+
char *ip;
347+
348+
plt_base = me->core_layout.base + me->arch.plt_offset;
349+
ip = plt_base + info->plt_offset;
350+
*(int *)insn = 0x0d10e310; /* basr 1,0 */
351+
*(int *)&insn[4] = 0x100c0004; /* lg 1,12(1) */
351352
if (IS_ENABLED(CONFIG_EXPOLINE) && !nospec_disable) {
352-
unsigned int *ij;
353-
ij = me->core_layout.base +
354-
me->arch.plt_offset +
355-
me->arch.plt_size - PLT_ENTRY_SIZE;
356-
insn[2] = 0xa7f40000 + /* j __jump_r1 */
357-
(unsigned int)(u16)
358-
(((unsigned long) ij - 8 -
359-
(unsigned long) ip) / 2);
353+
char *jump_r1;
354+
355+
jump_r1 = plt_base + me->arch.plt_size -
356+
PLT_ENTRY_SIZE;
357+
/* brcl 0xf,__jump_r1 */
358+
*(short *)&insn[8] = 0xc0f4;
359+
*(int *)&insn[10] = (jump_r1 - (ip + 8)) / 2;
360360
} else {
361-
insn[2] = 0x07f10000; /* br %r1 */
361+
*(int *)&insn[8] = 0x07f10000; /* br %r1 */
362362
}
363-
insn[3] = (unsigned int) (val >> 32);
364-
insn[4] = (unsigned int) val;
363+
*(long *)&insn[14] = val;
365364

366365
write(ip, insn, sizeof(insn));
367366
info->plt_initialized = 1;

0 commit comments

Comments
 (0)