s390 patches for the 4.2 merge window #2
Subsystems (4)
Hi Linus,
please pull from the 'for-linus' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git for-linus
to receive the following updates:
The second part of the s390 patches for the 4.2 merge window.
There is one larger patch for the AP bus code to make it work with the longer reset periods of the latest crypto cards.
A new default configuration, a naming cleanup for SMP and a few fixes.
Heiko Carstens (2):
s390: new default configuration
s390/kdump: fix compile for !SMP
Ingo Tuchscherer (1):
s390/zcrypt: Fixed reset and interrupt handling of AP queues
Martin Schwidefsky (2):
s390/smp: fix sigp cpu detection loop s390/smp: cleanup core vs. cpu in the SCLP interface
Michael Holzheu (3):
s390/bpf: Fix backward jumps
s390/kdump: fix REGSET_VX_LOW vector register ELF notes s390/kdump: fix nosmt kernel parameter
arch/s390/configs/default_defconfig | 15 +- arch/s390/configs/gcov_defconfig | 13 +- arch/s390/configs/performance_defconfig | 16 +- arch/s390/defconfig | 12 +- arch/s390/include/asm/cpu.h | 2 - arch/s390/include/asm/ipl.h | 1 - arch/s390/include/asm/sclp.h | 18 +- arch/s390/include/asm/smp.h | 2 + arch/s390/kernel/base.S | 21 +- arch/s390/kernel/crash_dump.c | 27 +- arch/s390/kernel/setup.c | 5 + arch/s390/kernel/smp.c | 150 +++++------ arch/s390/net/bpf_jit_comp.c | 2 +- drivers/s390/char/sclp_cmd.c | 23 +- drivers/s390/char/sclp_early.c | 10 +- drivers/s390/char/zcore.c | 2 +- drivers/s390/crypto/ap_bus.c | 424 +++++++++++++++++--------------- drivers/s390/crypto/ap_bus.h | 13 +- drivers/s390/crypto/zcrypt_cex4.c | 2 +- 19 files changed, 401 insertions(+), 357 deletions(-)
arch/s390/configs/default_defconfig +7 -8
@@ -17,13 +17,15 @@ CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_PERF=y CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y +CONFIG_BPF_SYSCALL=y # CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y CONFIG_OPROFILE=m
@@ -44,6 +46,7 @@ CONFIG_SOLARIS_X86_PARTITION=y CONFIG_UNIXWARE_DISKLABEL=y CONFIG_CFQ_GROUP_IOSCHED=y CONFIG_DEFAULT_DEADLINE=y +CONFIG_LIVEPATCH=y CONFIG_MARCH_Z196=y CONFIG_TUNE_ZEC12=y CONFIG_NR_CPUS=256
@@ -242,9 +245,9 @@ CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m -CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_TABLES_ARP=m CONFIG_NF_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m
@@ -264,8 +267,8 @@ CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NF_CONNTRACK_IPV6=m CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m -CONFIG_NFT_CHAIN_NAT_IPV6=m CONFIG_NF_NAT_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
@@ -353,7 +356,6 @@ CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_OSD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=32768 -CONFIG_BLK_DEV_XIP=y CONFIG_CDROM_PKTCDVD=m CONFIG_ATA_OVER_ETH=m CONFIG_VIRTIO_BLK=y
@@ -458,7 +460,6 @@ CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT2_FS_XIP=y CONFIG_EXT3_FS=y # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set CONFIG_EXT3_FS_POSIX_ACL=y
@@ -544,7 +545,6 @@ CONFIG_FRAME_WARN=1024 CONFIG_READABLE_ASM=y CONFIG_UNUSED_SYMBOLS=y CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_PAGEALLOC=y CONFIG_DEBUG_OBJECTS=y CONFIG_DEBUG_OBJECTS_SELFTEST=y
@@ -558,6 +558,7 @@ CONFIG_SLUB_STATS=y CONFIG_DEBUG_STACK_USAGE=y CONFIG_DEBUG_VM=y CONFIG_DEBUG_VM_RB=y +CONFIG_DEBUG_MEMORY_INIT=y CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m CONFIG_DEBUG_PER_CPU_MAPS=y CONFIG_DEBUG_SHIRQ=y
@@ -575,7 +576,6 @@ CONFIG_DEBUG_LIST=y CONFIG_DEBUG_SG=y CONFIG_DEBUG_NOTIFIERS=y CONFIG_DEBUG_CREDENTIALS=y -CONFIG_PROVE_RCU=y CONFIG_RCU_TORTURE_TEST=m CONFIG_RCU_CPU_STALL_TIMEOUT=300 CONFIG_NOTIFIER_ERROR_INJECTION=m
@@ -611,7 +611,6 @@ CONFIG_TEST_BPF=m # CONFIG_STRICT_DEVMEM is not set CONFIG_S390_PTDUMP=y CONFIG_ENCRYPTED_KEYS=m -CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_SELINUX=y
arch/s390/configs/gcov_defconfig +6 -7
@@ -17,11 +17,13 @@ CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_PERF=y CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y +CONFIG_BPF_SYSCALL=y # CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y CONFIG_OPROFILE=m
@@ -240,9 +242,9 @@ CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m -CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_TABLES_ARP=m CONFIG_NF_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m
@@ -262,8 +264,8 @@ CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NF_CONNTRACK_IPV6=m CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m -CONFIG_NFT_CHAIN_NAT_IPV6=m CONFIG_NF_NAT_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
@@ -350,7 +352,6 @@ CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_OSD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=32768 -CONFIG_BLK_DEV_XIP=y CONFIG_CDROM_PKTCDVD=m CONFIG_ATA_OVER_ETH=m CONFIG_VIRTIO_BLK=y
@@ -455,7 +456,6 @@ CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT2_FS_XIP=y CONFIG_EXT3_FS=y # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set CONFIG_EXT3_FS_POSIX_ACL=y
@@ -538,7 +538,7 @@ CONFIG_DEBUG_INFO=y CONFIG_FRAME_WARN=1024 CONFIG_UNUSED_SYMBOLS=y CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MEMORY_INIT=y CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m CONFIG_PANIC_ON_OOPS=y CONFIG_TIMER_STATS=y
@@ -558,7 +558,6 @@ CONFIG_ATOMIC64_SELFTEST=y # CONFIG_STRICT_DEVMEM is not set CONFIG_S390_PTDUMP=y CONFIG_ENCRYPTED_KEYS=m -CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_SELINUX=y
arch/s390/configs/performance_defconfig +8 -8
@@ -17,11 +17,13 @@ CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_PERF=y CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y +CONFIG_BPF_SYSCALL=y # CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y CONFIG_OPROFILE=m
@@ -42,9 +44,10 @@ CONFIG_SOLARIS_X86_PARTITION=y CONFIG_UNIXWARE_DISKLABEL=y CONFIG_CFQ_GROUP_IOSCHED=y CONFIG_DEFAULT_DEADLINE=y +CONFIG_LIVEPATCH=y CONFIG_MARCH_Z196=y CONFIG_TUNE_ZEC12=y -CONFIG_NR_CPUS=256 +CONFIG_NR_CPUS=512 CONFIG_HZ_100=y CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTREMOVE=y
@@ -238,9 +241,9 @@ CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m -CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_TABLES_ARP=m CONFIG_NF_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m
@@ -260,8 +263,8 @@ CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NF_CONNTRACK_IPV6=m CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m -CONFIG_NFT_CHAIN_NAT_IPV6=m CONFIG_NF_NAT_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
@@ -348,7 +351,6 @@ CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_OSD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=32768 -CONFIG_BLK_DEV_XIP=y CONFIG_CDROM_PKTCDVD=m CONFIG_ATA_OVER_ETH=m CONFIG_VIRTIO_BLK=y
@@ -453,7 +455,6 @@ CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT2_FS_XIP=y CONFIG_EXT3_FS=y # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set CONFIG_EXT3_FS_POSIX_ACL=y
@@ -536,7 +537,7 @@ CONFIG_DEBUG_INFO=y CONFIG_FRAME_WARN=1024 CONFIG_UNUSED_SYMBOLS=y CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MEMORY_INIT=y CONFIG_PANIC_ON_OOPS=y CONFIG_TIMER_STATS=y CONFIG_RCU_TORTURE_TEST=m
@@ -553,7 +554,6 @@ CONFIG_ATOMIC64_SELFTEST=y # CONFIG_STRICT_DEVMEM is not set CONFIG_S390_PTDUMP=y CONFIG_ENCRYPTED_KEYS=m -CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_SELINUX=y
arch/s390/defconfig +9 -3
@@ -8,7 +8,6 @@ CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_RCU_FAST_NO_HZ=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_CGROUPS=y
@@ -31,9 +30,11 @@ CONFIG_JUMP_LABEL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y +CONFIG_BLK_DEV_INTEGRITY=y CONFIG_PARTITION_ADVANCED=y CONFIG_IBM_PARTITION=y CONFIG_DEFAULT_DEADLINE=y +CONFIG_LIVEPATCH=y CONFIG_MARCH_Z196=y CONFIG_NR_CPUS=256 CONFIG_HZ_100=y
@@ -41,7 +42,6 @@ CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTREMOVE=y CONFIG_KSM=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_CMA=y CONFIG_CRASH_DUMP=y CONFIG_BINFMT_MISC=m CONFIG_HIBERNATION=y
@@ -125,6 +125,7 @@ CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_PAGEALLOC=y CONFIG_DETECT_HUNG_TASK=y +CONFIG_PANIC_ON_OOPS=y CONFIG_TIMER_STATS=y CONFIG_DEBUG_RT_MUTEXES=y CONFIG_PROVE_LOCKING=y
@@ -135,12 +136,16 @@ CONFIG_DEBUG_LIST=y CONFIG_DEBUG_PI_LIST=y CONFIG_DEBUG_SG=y CONFIG_DEBUG_NOTIFIERS=y -CONFIG_PROVE_RCU=y CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_CPU_STALL_INFO is not set CONFIG_RCU_TRACE=y CONFIG_LATENCYTOP=y CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y +CONFIG_TRACER_SNAPSHOT=y +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y +CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_UPROBE_EVENT=y CONFIG_KPROBES_SANITY_TEST=y # CONFIG_STRICT_DEVMEM is not set CONFIG_S390_PTDUMP=y
@@ -187,6 +192,7 @@ CONFIG_CRYPTO_ZLIB=m CONFIG_CRYPTO_LZO=m CONFIG_CRYPTO_LZ4=m CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ANSI_CPRNG=m CONFIG_ZCRYPT=m CONFIG_CRYPTO_SHA1_S390=m CONFIG_CRYPTO_SHA256_S390=m
arch/s390/include/asm/cpu.h +0 -2
@@ -8,8 +8,6 @@#ifndef _ASM_S390_CPU_H#define _ASM_S390_CPU_H -#define MAX_CPU_ADDRESS 255 -#ifndef __ASSEMBLY__#include <linux/types.h>
arch/s390/include/asm/ipl.h +0 -1
@@ -94,7 +94,6 @@ struct dump_save_areas { };extern struct dump_save_areas dump_save_areas; -struct save_area_ext *dump_save_area_create (int cpu);extern void do_reipl (void );extern void do_halt (void );
arch/s390/include/asm/sclp.h +9 -9
@@ -11,6 +11,7 @@#include <asm/cpu.h> #define SCLP_CHP_INFO_MASK_SIZE 32 +#define SCLP_MAX_CORES 256struct sclp_chp_info {u8 recognized[SCLP_CHP_INFO_MASK_SIZE ];
@@ -26,7 +27,7 @@ struct sclp_ipl_info {char loadparm[LOADPARM_LEN ]; }; -struct sclp_cpu_entry { +struct sclp_core_entry {u8 core_id;u8 reserved0[2 ]; u8 : 3;
@@ -38,12 +39,11 @@ struct sclp_cpu_entry {u8 reserved1; } __attribute__((packed)); -struct sclp_cpu_info { +struct sclp_core_info {unsigned int configured;unsigned int standby;unsigned int combined; -int has_cpu_type; -struct sclp_cpu_entry cpu[MAX_CPU_ADDRESS +1 ]; +struct sclp_core_entry core[SCLP_MAX_CORES ]; };struct sclp_info {
@@ -51,7 +51,7 @@ struct sclp_info { unsigned char has_vt220 : 1; unsigned char has_siif : 1; unsigned char has_sigpif : 1; - unsigned char has_cpu_type : 1; + unsigned char has_core_type : 1; unsigned char has_sprp : 1;unsigned int ibc;unsigned int mtid;
@@ -60,15 +60,15 @@ struct sclp_info {unsigned long long rzm;unsigned long long rnmax;unsigned long long hamax; -unsigned int max_cpu; +unsigned int max_cores;unsigned long hsa_size;unsigned long long facilities; };extern struct sclp_info sclp; -int sclp_get_cpu_info (struct sclp_cpu_info *info); -int sclp_cpu_configure (u8 cpu); -int sclp_cpu_deconfigure (u8 cpu); +int sclp_get_core_info (struct sclp_core_info *info); +int sclp_core_configure (u8 core); +int sclp_core_deconfigure (u8 core);int sclp_sdias_blk_count (void );int sclp_sdias_copy (void *dest,int blk_num,int nr_blks);int sclp_chp_configure (struct chp_id chpid);
arch/s390/include/asm/smp.h +2 -0
@@ -29,6 +29,7 @@ extern void smp_call_ipl_cpu(void (*func)(void *), void *);extern int smp_find_processor_id (u16 address);extern int smp_store_status (int cpu); +extern void smp_save_dump_cpus (void );extern int smp_vcpu_scheduled (int cpu);extern void smp_yield_cpu (int cpu);extern void smp_cpu_set_polarization (int cpu,int val);
@@ -54,6 +55,7 @@ static inline int smp_store_status(int cpu) { return 0; }static inline int smp_vcpu_scheduled (int cpu) {return 1 ; }static inline void smp_yield_cpu (int cpu) { }static inline void smp_fill_possible_mask (void ) { } +static inline void smp_save_dump_cpus (void ) { }#endif /* CONFIG_SMP */
arch/s390/kernel/base.S +17 -4
@@ -78,15 +78,20 @@ s390_base_pgm_handler_fn: # # Calls diag 308 subcode 1 and continues execution # -# The following conditions must be ensured before calling this function: -# * Prefix register = 0 -# * Lowcore protection is disabled -# ENTRY(diag308_reset) larl %r4,.Lctlregs # Save control registers stctg %c0,%c15,0(%r4) + lg %r2,0(%r4) # Disable lowcore protection + nilh %r2,0xefff + larl %r4,.Lctlreg0 + stg %r2,0(%r4) + lctlg %c0,%c0,0(%r4) larl %r4,.Lfpctl # Floating point control register stfpc 0(%r4) + larl %r4,.Lprefix # Save prefix register + stpx 0(%r4) + larl %r4,.Lprefix_zero # Set prefix register to 0 + spx 0(%r4) larl %r4,.Lcontinue_psw # Save PSW flags epsw %r2,%r3 stm %r2,%r3,0(%r4)
@@ -106,6 +111,8 @@ ENTRY(diag308_reset) lctlg %c0,%c15,0(%r4) larl %r4,.Lfpctl # Restore floating point ctl register lfpc 0(%r4) + larl %r4,.Lprefix # Restore prefix register + spx 0(%r4) larl %r4,.Lcontinue_psw # Restore PSW flags lpswe 0(%r4) .Lcontinue:
@@ -122,10 +129,16 @@ ENTRY(diag308_reset) .section .bss .align 8 +.Lctlreg0: + .quad 0 .Lctlregs: .rept 16 .quad 0 .endr .Lfpctl: .long 0 +.Lprefix: + .long 0 +.Lprefix_zero: + .long 0 .previous
arch/s390/kernel/crash_dump.c +1 -26
@@ -45,31 +45,6 @@ static struct memblock_type oldmem_type = {struct dump_save_areas dump_save_areas;/* -* Allocate and add a save area for a CPU -*/ -struct save_area_ext *dump_save_area_create (int cpu) -{ -struct save_area_ext **save_areas, *save_area; - - save_area =kmalloc (sizeof (*save_area),GFP_KERNEL ); -if (!save_area) -return NULL ; -if (cpu +1 > dump_save_areas.count) { - dump_save_areas.count = cpu +1 ; - save_areas =krealloc (dump_save_areas.areas, - dump_save_areas.count *sizeof (void *), -GFP_KERNEL | __GFP_ZERO); -if (!save_areas) { -kfree (save_area); -return NULL ; - } - dump_save_areas.areas = save_areas; - } - dump_save_areas.areas[cpu] = save_area; -return save_area; -} - -/* * Return physical address for virtual address */ static inline void *load_real_addr (void *addr)
@@ -416,7 +391,7 @@ static void *nt_s390_vx_low(void *ptr, __vector128 *vx_regs) ptr += len;/* Copy lower halves of SIMD registers 0-15 */ for (i =0 ; i <16 ; i++) { -memcpy (ptr, &vx_regs[i],8 ); +memcpy (ptr, &vx_regs[i].u[2 ],8 ); ptr +=8 ; }return ptr;
arch/s390/kernel/setup.c +5 -0
@@ -868,6 +868,11 @@ void __init setup_arch(char **cmdline_p)check_initrd ();reserve_crashkernel (); +/* +* Be aware that smp_save_dump_cpus() triggers a system reset. +* Therefore CPU and device initialization should be done afterwards. +*/ +smp_save_dump_cpus ();setup_resources ();setup_vmcoreinfo ();
arch/s390/kernel/smp.c +80 -70
283 lines not on this page · raw message
arch/s390/net/bpf_jit_comp.c +1 -1
@@ -250,7 +250,7 @@ static inline void reg_set_seen(struct bpf_jit *jit, u32 b1) ({ \/* Branch instruction needs 6 bytes */ \int rel = (addrs[i + off +1 ] - (addrs[i +1 ] -6 )) /2 ;\ -_EMIT6 (op1 |reg (b1, b2) <<16 | rel, op2 | mask); \ +_EMIT6 (op1 |reg (b1, b2) <<16 | (rel &0xffff ), op2 | mask); \REG_SET_SEEN (b1); \REG_SET_SEEN (b2); \ })
drivers/s390/char/sclp_cmd.c +11 -12
@@ -92,8 +92,8 @@ struct read_cpu_info_sccb {u8 reserved[4096 -16 ]; } __attribute__((packed, aligned(PAGE_SIZE))); -static void sclp_fill_cpu_info (struct sclp_cpu_info *info, -struct read_cpu_info_sccb *sccb) +static void sclp_fill_core_info (struct sclp_core_info *info, +struct read_cpu_info_sccb *sccb) {char *page = (char *) sccb;
@@ -101,12 +101,11 @@ static void sclp_fill_cpu_info(struct sclp_cpu_info *info, info->configured = sccb->nr_configured; info->standby = sccb->nr_standby; info->combined = sccb->nr_configured + sccb->nr_standby; - info->has_cpu_type = sclp.has_cpu_type; -memcpy (&info->cpu, page + sccb->offset_configured, - info->combined *sizeof (struct sclp_cpu_entry )); +memcpy (&info->core, page + sccb->offset_configured, + info->combined *sizeof (struct sclp_core_entry )); } -int sclp_get_cpu_info (struct sclp_cpu_info *info) +int sclp_get_core_info (struct sclp_core_info *info) {int rc;struct read_cpu_info_sccb *sccb;
@@ -127,7 +126,7 @@ int sclp_get_cpu_info(struct sclp_cpu_info *info) rc = -EIO ; goto out; } -sclp_fill_cpu_info (info, sccb); +sclp_fill_core_info (info, sccb); out:free_page ((unsigned long ) sccb);return rc;
@@ -137,7 +136,7 @@ struct cpu_configure_sccb {struct sccb_header header; } __attribute__((packed, aligned(8))); -static int do_cpu_configure (sclp_cmdw_t cmd) +static int do_core_configure (sclp_cmdw_t cmd) {struct cpu_configure_sccb *sccb;int rc;
@@ -171,14 +170,14 @@ out:return rc; } -int sclp_cpu_configure (u8 cpu) +int sclp_core_configure (u8 core) { -return do_cpu_configure (SCLP_CMDW_CONFIGURE_CPU | cpu <<8 ); +return do_core_configure (SCLP_CMDW_CONFIGURE_CPU | core <<8 ); } -int sclp_cpu_deconfigure (u8 cpu) +int sclp_core_deconfigure (u8 core) { -return do_cpu_configure (SCLP_CMDW_DECONFIGURE_CPU | cpu <<8 ); +return do_core_configure (SCLP_CMDW_DECONFIGURE_CPU | core <<8 ); }#ifdef CONFIG_MEMORY_HOTPLUG
drivers/s390/char/sclp_early.c +5 -5
@@ -98,7 +98,7 @@ static int __init sclp_read_info_early(struct read_info_sccb *sccb)static void __init sclp_facilities_detect (struct read_info_sccb *sccb) { -struct sclp_cpu_entry *cpue; +struct sclp_core_entry *cpue;u16 boot_cpu_address, cpu;if (sclp_read_info_early (sccb))
@@ -106,7 +106,7 @@ static void __init sclp_facilities_detect(struct read_info_sccb *sccb) sclp.facilities = sccb->facilities; sclp.has_sprp = !!(sccb->fac84 &0x02 ); - sclp.has_cpu_type = !!(sccb->fac84 &0x01 ); + sclp.has_core_type = !!(sccb->fac84 &0x01 );if (sccb->fac85 &0x02 ) S390_lowcore.machine_flags |=MACHINE_FLAG_ESOP ; sclp.rnmax = sccb->rnmax ? sccb->rnmax : sccb->rnmax2;
@@ -116,11 +116,11 @@ static void __init sclp_facilities_detect(struct read_info_sccb *sccb)if (!sccb->hcpua) {if (MACHINE_IS_VM ) - sclp.max_cpu =64 ; + sclp.max_cores =64 ;else - sclp.max_cpu = sccb->ncpurl; + sclp.max_cores = sccb->ncpurl; }else { - sclp.max_cpu = sccb->hcpua +1 ; + sclp.max_cores = sccb->hcpua +1 ; } boot_cpu_address =stap ();
drivers/s390/char/zcore.c +1 -1
@@ -154,7 +154,7 @@ static int __init init_cpu_info(enum arch_id arch)/* get info for boot cpu from lowcore, stored in the HSA */ - sa_ext =dump_save_area_create (0 ); + sa_ext = dump_save_areas.areas[0 ];if (!sa_ext)return -ENOMEM ; if (memcpy_hsa_kernel(&sa_ext->sa, sys_info.sa_base,
drivers/s390/crypto/ap_bus.c +226 -198
593 lines not on this page · raw message
drivers/s390/crypto/ap_bus.h +12 -1
@@ -32,11 +32,13 @@#define AP_DEVICES 64/* Number of AP devices. */ #define AP_DOMAINS 256/* Number of AP domains. */ -#define AP_MAX_RESET 90/* Maximum number of resets. */ #define AP_RESET_TIMEOUT (HZ*0.7)/* Time in ticks for reset timeouts. */ #define AP_CONFIG_TIME 30/* Time in seconds between AP bus rescans. */ #define AP_POLL_TIME 1/* Time in ticks between receive polls. */ +#define AP_POLL_IMMEDIATELY 1/* continue running poll tasklet */ +#define AP_POLL_AFTER_TIMEOUT 2/* run poll tasklet again after timout */ +extern int ap_domain_index;/**
@@ -135,6 +137,14 @@ static inline int ap_test_bit(unsigned int *ptr, unsigned int nr)#define AP_RESET_IGNORE 0/* request timeout will be ignored */ #define AP_RESET_ARMED 1/* request timeout timer is active */ #define AP_RESET_DO 2/* AP reset required */ +#define AP_RESET_IN_PROGRESS 3/* AP reset in progress */ + +/* +* AP interrupt states +*/ +#define AP_INTR_DISABLED 0/* AP interrupt disabled */ +#define AP_INTR_ENABLED 1/* AP interrupt enabled */ +#define AP_INTR_IN_PROGRESS 3/* AP interrupt in progress */ struct ap_device ;struct ap_message ;
@@ -168,6 +178,7 @@ struct ap_device {struct timer_list timeout;/* Timer for request timeouts. */ int reset;/* Reset required after req. timeout. */ +int interrupt;/* indicate if interrupts are enabled */ int queue_count;/* # messages currently on AP queue. */ struct list_head pendingq;/* List of message sent to AP queue. */
drivers/s390/crypto/zcrypt_cex4.c +1 -1
@@ -39,7 +39,7 @@* But the maximum time limit managed by the stomper code is set to 60sec. * Hence we have to wait at least that time period. */ -#define CEX4_CLEANUP_TIME (61*HZ) +#define CEX4_CLEANUP_TIME (900*HZ)static struct ap_device_id zcrypt_cex4_ids[] = { {AP_DEVICE (AP_DEVICE_TYPE_CEX4 ) },