Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c09931b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull s390 updates from Martin Schwidefsky:
 "The main new feature is machine support for System zEC12 including
  transactional memory, runtime instrumentation, support for scm block
  devices via eadm subchannels, and support for CEX4 crypto cards.

  In addition there are some nice improvements: bpf jit compiler, arch
  backend for cmpxchg_double, relative exception table entries, dasd
  partition detection independent from the dasd driver ioctls, and cpu
  cache information in /proc/cpuinfo and /sys/device/cpu.

  And last but not least a series of cleanup patches from Heiko."

Fix up trivial add-add conflict in arch/s390/Kconfig due to commit
b952741c ("cputime: Generalize CONFIG_VIRT_CPU_ACCOUNTING")

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (76 commits)
  s390: update defconfig
  s390/jump label,nss: let shared kernel support depend on !JUMP_LABEL
  s390/disassembler: fix decoding of risblg instruction
  s390/bpf,jit: add support for BPF_S_ANC_ALU_XOR_X instruction
  s390/traps: move call to print_modules() out of show_regs()
  s390/mm: mark free_initrd_mem() as __init
  s390/dasd: check count address during online setting
  drivers/s390/char/monreader.c: fix error return code
  s390/cmpxchg,percpu: implement cmpxchg_double()
  s390/percpu: implement this_cpu_add_return()
  s390/percpu: implement this_cpu_xchg()
  s390/kexec: remove CONFIG_KEXEC
  s390/irq: use designated initializers for irq class array
  s390: add uninitialized_var() to suppress false positive compiler warnings
  s390/crashdump: move fill_cpu_elf_notes() prototype to header file
  s390/process: add missing header include
  s390/ptrace: add missing ifdef
  s390/ipl,decrompressor: disable branch profiling
  s390/perf_events: compile only for CONFIG_64BIT
  s390/tape: remove even more tape block leftovers
  ...
parents b3eda8d0 c397031f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5,3 +5,4 @@ obj-$(CONFIG_CRYPTO_HW) += crypto/
obj-$(CONFIG_S390_HYPFS_FS)	+= hypfs/
obj-$(CONFIG_APPLDATA_BASE)	+= appldata/
obj-$(CONFIG_MATHEMU)		+= math-emu/
obj-y				+= net/
+222 −196
Original line number Diff line number Diff line
@@ -52,6 +52,12 @@ config PGSTE
config ARCH_SUPPORTS_DEBUG_PAGEALLOC
	def_bool y

config KEXEC
	def_bool y

config AUDIT_ARCH
	def_bool y

config S390
	def_bool y
	select USE_GENERIC_SMP_HELPERS if SMP
@@ -81,11 +87,13 @@ config S390
	select HAVE_KERNEL_XZ
	select HAVE_ARCH_MUTEX_CPU_RELAX
	select HAVE_ARCH_JUMP_LABEL if !MARCH_G5
	select HAVE_BPF_JIT if 64BIT && PACK_STACK
	select ARCH_SAVE_PAGE_KEYS if HIBERNATION
	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
	select HAVE_MEMBLOCK
	select HAVE_MEMBLOCK_NODE_MAP
	select HAVE_CMPXCHG_LOCAL
	select HAVE_CMPXCHG_DOUBLE
	select HAVE_VIRT_CPU_ACCOUNTING
	select VIRT_CPU_ACCOUNTING
	select ARCH_DISCARD_MEMBLOCK
@@ -132,9 +140,79 @@ source "init/Kconfig"

source "kernel/Kconfig.freezer"

menu "Base setup"
menu "Processor type and features"

config HAVE_MARCH_Z900_FEATURES
	def_bool n

config HAVE_MARCH_Z990_FEATURES
	def_bool n
	select HAVE_MARCH_Z900_FEATURES

config HAVE_MARCH_Z9_109_FEATURES
	def_bool n
	select HAVE_MARCH_Z990_FEATURES

config HAVE_MARCH_Z10_FEATURES
	def_bool n
	select HAVE_MARCH_Z9_109_FEATURES

config HAVE_MARCH_Z196_FEATURES
	def_bool n
	select HAVE_MARCH_Z10_FEATURES

choice
	prompt "Processor type"
	default MARCH_G5

config MARCH_G5
	bool "System/390 model G5 and G6"
	depends on !64BIT
	help
	  Select this to build a 31 bit kernel that works
	  on all ESA/390 and z/Architecture machines.

comment "Processor type and features"
config MARCH_Z900
	bool "IBM zSeries model z800 and z900"
	select HAVE_MARCH_Z900_FEATURES if 64BIT
	help
	  Select this to enable optimizations for model z800/z900 (2064 and
	  2066 series). This will enable some optimizations that are not
	  available on older ESA/390 (31 Bit) only CPUs.

config MARCH_Z990
	bool "IBM zSeries model z890 and z990"
	select HAVE_MARCH_Z990_FEATURES if 64BIT
	help
	  Select this to enable optimizations for model z890/z990 (2084 and
	  2086 series). The kernel will be slightly faster but will not work
	  on older machines.

config MARCH_Z9_109
	bool "IBM System z9"
	select HAVE_MARCH_Z9_109_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM System z9 (2094 and
	  2096 series). The kernel will be slightly faster but will not work
	  on older machines.

config MARCH_Z10
	bool "IBM System z10"
	select HAVE_MARCH_Z10_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM System z10 (2097 and
	  2098 series). The kernel will be slightly faster but will not work
	  on older machines.

config MARCH_Z196
	bool "IBM zEnterprise 114 and 196"
	select HAVE_MARCH_Z196_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM zEnterprise 114 and 196
	  (2818 and 2817 series). The kernel will be slightly faster but will
	  not work on older machines.

endchoice

config 64BIT
	def_bool y
@@ -146,6 +224,24 @@ config 64BIT
config 32BIT
	def_bool y if !64BIT

config COMPAT
	def_bool y
	prompt "Kernel support for 31 bit emulation"
	depends on 64BIT
	select COMPAT_BINFMT_ELF if BINFMT_ELF
	select ARCH_WANT_OLD_COMPAT_IPC
	help
	  Select this option if you want to enable your system kernel to
	  handle system-calls from ELF binaries for 31 bit ESA.  This option
	  (and some other stuff like libraries and such) is needed for
	  executing 31 bit applications.  It is safe to say "Y".

config SYSVIPC_COMPAT
	def_bool y if COMPAT && SYSVIPC

config KEYS_COMPAT
	def_bool y if COMPAT && KEYS

config SMP
	def_bool y
	prompt "Symmetric multi-processing support"
@@ -201,6 +297,8 @@ config SCHED_BOOK
	  Book scheduler support improves the CPU scheduler's decision making
	  when dealing with machines that have several books.

source kernel/Kconfig.preempt

config MATHEMU
	def_bool y
	prompt "IEEE FPU emulation"
@@ -210,100 +308,35 @@ config MATHEMU
	  on older ESA/390 machines. Say Y unless you know your machine doesn't
	  need this.

config COMPAT
	def_bool y
	prompt "Kernel support for 31 bit emulation"
	depends on 64BIT
	select COMPAT_BINFMT_ELF if BINFMT_ELF
	select ARCH_WANT_OLD_COMPAT_IPC
	help
	  Select this option if you want to enable your system kernel to
	  handle system-calls from ELF binaries for 31 bit ESA.  This option
	  (and some other stuff like libraries and such) is needed for
	  executing 31 bit applications.  It is safe to say "Y".
source kernel/Kconfig.hz

config SYSVIPC_COMPAT
	def_bool y if COMPAT && SYSVIPC
endmenu

config KEYS_COMPAT
	def_bool y if COMPAT && KEYS
menu "Memory setup"

config AUDIT_ARCH
config ARCH_SPARSEMEM_ENABLE
	def_bool y
	select SPARSEMEM_VMEMMAP_ENABLE
	select SPARSEMEM_VMEMMAP
	select SPARSEMEM_STATIC if !64BIT

config HAVE_MARCH_Z900_FEATURES
	def_bool n

config HAVE_MARCH_Z990_FEATURES
	def_bool n
	select HAVE_MARCH_Z900_FEATURES

config HAVE_MARCH_Z9_109_FEATURES
	def_bool n
	select HAVE_MARCH_Z990_FEATURES

config HAVE_MARCH_Z10_FEATURES
	def_bool n
	select HAVE_MARCH_Z9_109_FEATURES

config HAVE_MARCH_Z196_FEATURES
	def_bool n
	select HAVE_MARCH_Z10_FEATURES

comment "Code generation options"

choice
	prompt "Processor type"
	default MARCH_G5

config MARCH_G5
	bool "System/390 model G5 and G6"
	depends on !64BIT
	help
	  Select this to build a 31 bit kernel that works
	  on all ESA/390 and z/Architecture machines.

config MARCH_Z900
	bool "IBM zSeries model z800 and z900"
	select HAVE_MARCH_Z900_FEATURES if 64BIT
	help
	  Select this to enable optimizations for model z800/z900 (2064 and
	  2066 series). This will enable some optimizations that are not
	  available on older ESA/390 (31 Bit) only CPUs.
config ARCH_SPARSEMEM_DEFAULT
	def_bool y

config MARCH_Z990
	bool "IBM zSeries model z890 and z990"
	select HAVE_MARCH_Z990_FEATURES if 64BIT
	help
	  Select this to enable optimizations for model z890/z990 (2084 and
	  2086 series). The kernel will be slightly faster but will not work
	  on older machines.
config ARCH_SELECT_MEMORY_MODEL
	def_bool y

config MARCH_Z9_109
	bool "IBM System z9"
	select HAVE_MARCH_Z9_109_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM System z9 (2094 and
	  2096 series). The kernel will be slightly faster but will not work
	  on older machines.
config ARCH_ENABLE_MEMORY_HOTPLUG
	def_bool y if SPARSEMEM

config MARCH_Z10
	bool "IBM System z10"
	select HAVE_MARCH_Z10_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM System z10 (2097 and
	  2098 series). The kernel will be slightly faster but will not work
	  on older machines.
config ARCH_ENABLE_MEMORY_HOTREMOVE
	def_bool y

config MARCH_Z196
	bool "IBM zEnterprise 114 and 196"
	select HAVE_MARCH_Z196_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM zEnterprise 114 and 196
	  (2818 and 2817 series). The kernel will be slightly faster but will
	  not work on older machines.
config FORCE_MAX_ZONEORDER
	int
	default "9"

endchoice
source "mm/Kconfig"

config PACK_STACK
	def_bool y
@@ -367,34 +400,9 @@ config WARN_DYNAMIC_STACK

	  Say N if you are unsure.

comment "Kernel preemption"

source "kernel/Kconfig.preempt"

config ARCH_SPARSEMEM_ENABLE
	def_bool y
	select SPARSEMEM_VMEMMAP_ENABLE
	select SPARSEMEM_VMEMMAP
	select SPARSEMEM_STATIC if !64BIT

config ARCH_SPARSEMEM_DEFAULT
	def_bool y

config ARCH_SELECT_MEMORY_MODEL
	def_bool y

config ARCH_ENABLE_MEMORY_HOTPLUG
	def_bool y if SPARSEMEM

config ARCH_ENABLE_MEMORY_HOTREMOVE
	def_bool y

config ARCH_HIBERNATION_POSSIBLE
	def_bool y if 64BIT

source "mm/Kconfig"
endmenu

comment "I/O subsystem configuration"
menu "I/O subsystem"

config QDIO
	def_tristate y
@@ -425,13 +433,102 @@ config CHSC_SCH

	  If unsure, say N.

comment "Misc"
config SCM_BUS
	def_bool y
	depends on 64BIT
	prompt "SCM bus driver"
	help
	  Bus driver for Storage Class Memory.

config EADM_SCH
	def_tristate m
	prompt "Support for EADM subchannels"
	depends on SCM_BUS
	help
	  This driver allows usage of EADM subchannels. EADM subchannels act
	  as a communication vehicle for SCM increments.

	  To compile this driver as a module, choose M here: the
	  module will be called eadm_sch.

endmenu

menu "Dump support"

config CRASH_DUMP
	bool "kernel crash dumps"
	depends on 64BIT && SMP
	select KEXEC
	help
	  Generate crash dump after being started by kexec.
	  Crash dump kernels are loaded in the main kernel with kexec-tools
	  into a specially reserved region and then later executed after
	  a crash by kdump/kexec.
	  For more details see Documentation/kdump/kdump.txt

config ZFCPDUMP
	def_bool n
	prompt "zfcpdump support"
	select SMP
	help
	  Select this option if you want to build an zfcpdump enabled kernel.
	  Refer to <file:Documentation/s390/zfcpdump.txt> for more details on this.

endmenu

menu "Executable file formats / Emulations"

source "fs/Kconfig.binfmt"

config FORCE_MAX_ZONEORDER
	int
	default "9"
config SECCOMP
	def_bool y
	prompt "Enable seccomp to safely compute untrusted bytecode"
	depends on PROC_FS
	help
	  This kernel feature is useful for number crunching applications
	  that may need to compute untrusted bytecode during their
	  execution. By using pipes or other transports made available to
	  the process as file descriptors supporting the read/write
	  syscalls, it's possible to isolate those applications in
	  their own address space using seccomp. Once seccomp is
	  enabled via /proc/<pid>/seccomp, it cannot be disabled
	  and the task is only allowed to execute a few safe syscalls
	  defined by each seccomp mode.

	  If unsure, say Y.

endmenu

menu "Power Management"

config ARCH_HIBERNATION_POSSIBLE
	def_bool y if 64BIT

source "kernel/power/Kconfig"

endmenu

source "net/Kconfig"

config PCMCIA
	def_bool n

config CCW
	def_bool y

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/s390/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"

menu "Virtualization"

config PFAULT
	def_bool y
@@ -447,8 +544,8 @@ config PFAULT
	  this option.

config SHARED_KERNEL
	def_bool y
	prompt "VM shared kernel support"
	bool "VM shared kernel support"
	depends on !JUMP_LABEL
	help
	  Select this option, if you want to share the text segment of the
	  Linux kernel between different VM guests. This reduces memory
@@ -543,8 +640,6 @@ config APPLDATA_NET_SUM
	  This can also be compiled as a module, which will be called
	  appldata_net_sum.o.

source kernel/Kconfig.hz

config S390_HYPFS_FS
	def_bool y
	prompt "s390 hypervisor file system support"
@@ -553,90 +648,21 @@ config S390_HYPFS_FS
	  This is a virtual file system intended to provide accounting
	  information in an s390 hypervisor environment.

config KEXEC
	def_bool n
	prompt "kexec system call"
	help
	  kexec is a system call that implements the ability to shutdown your
	  current kernel, and to start another kernel.  It is like a reboot
	  but is independent of hardware/microcode support.

config CRASH_DUMP
	bool "kernel crash dumps"
	depends on 64BIT && SMP
	select KEXEC
	help
	  Generate crash dump after being started by kexec.
	  Crash dump kernels are loaded in the main kernel with kexec-tools
	  into a specially reserved region and then later executed after
	  a crash by kdump/kexec.
	  For more details see Documentation/kdump/kdump.txt

config ZFCPDUMP
	def_bool n
	prompt "zfcpdump support"
	select SMP
	help
	  Select this option if you want to build an zfcpdump enabled kernel.
	  Refer to <file:Documentation/s390/zfcpdump.txt> for more details on this.
source "arch/s390/kvm/Kconfig"

config S390_GUEST
	def_bool y
	prompt "s390 guest support for KVM (EXPERIMENTAL)"
	prompt "s390 support for virtio devices (EXPERIMENTAL)"
	depends on 64BIT && EXPERIMENTAL
	select VIRTUALIZATION
	select VIRTIO
	select VIRTIO_RING
	select VIRTIO_CONSOLE
	help
	  Select this option if you want to run the kernel as a guest under
	  the KVM hypervisor. This will add detection for KVM as well  as a
	  virtio transport. If KVM is detected, the virtio console will be
	  the default console.

config SECCOMP
	def_bool y
	prompt "Enable seccomp to safely compute untrusted bytecode"
	depends on PROC_FS
	help
	  This kernel feature is useful for number crunching applications
	  that may need to compute untrusted bytecode during their
	  execution. By using pipes or other transports made available to
	  the process as file descriptors supporting the read/write
	  syscalls, it's possible to isolate those applications in
	  their own address space using seccomp. Once seccomp is
	  enabled via /proc/<pid>/seccomp, it cannot be disabled
	  and the task is only allowed to execute a few safe syscalls
	  defined by each seccomp mode.

	  If unsure, say Y.

endmenu
	  Enabling this option adds support for virtio based paravirtual device
	  drivers on s390.

menu "Power Management"

source "kernel/power/Kconfig"
	  Select this option if you want to run the kernel as a guest under
	  the KVM hypervisor.

endmenu

source "net/Kconfig"

config PCMCIA
	def_bool n

config CCW
	def_bool y

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/s390/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"

source "arch/s390/kvm/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \
	   sizes.h head$(BITS).o

KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
KBUILD_CFLAGS += $(cflags-y)
KBUILD_CFLAGS += $(call cc-option,-mpacked-stack)
KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
+24 −21
Original line number Diff line number Diff line
@@ -71,34 +71,37 @@ void *memset(void *s, int c, size_t n)
{
	char *xs;

	if (c == 0)
		return __builtin_memset(s, 0, n);

	xs = (char *) s;
	if (n > 0)
		do {
	xs = s;
	while (n--)
		*xs++ = c;
		} while (--n > 0);
	return s;
}

void *memcpy(void *__dest, __const void *__src, size_t __n)
void *memcpy(void *dest, const void *src, size_t n)
{
	return __builtin_memcpy(__dest, __src, __n);
	const char *s = src;
	char *d = dest;

	while (n--)
		*d++ = *s++;
	return dest;
}

void *memmove(void *__dest, __const void *__src, size_t __n)
void *memmove(void *dest, const void *src, size_t n)
{
	char *d;
	const char *s;

	if (__dest <= __src)
		return __builtin_memcpy(__dest, __src, __n);
	d = __dest + __n;
	s = __src + __n;
	while (__n--)
	const char *s = src;
	char *d = dest;

	if (d <= s) {
		while (n--)
			*d++ = *s++;
	} else {
		d += n;
		s += n;
		while (n--)
			*--d = *--s;
	return __dest;
	}
	return dest;
}

static void error(char *x)
+7 −7
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@ CONFIG_CGROUPS=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEMCG=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_CGROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
@@ -32,20 +32,19 @@ CONFIG_EXPERT=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_IBM_PARTITION=y
CONFIG_DEFAULT_DEADLINE=y
CONFIG_PREEMPT=y
CONFIG_HZ_100=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_KSM=y
CONFIG_BINFMT_MISC=m
CONFIG_CMM=m
CONFIG_HZ_100=y
CONFIG_CRASH_DUMP=y
CONFIG_BINFMT_MISC=m
CONFIG_HIBERNATION=y
CONFIG_PACKET=y
CONFIG_UNIX=y
@@ -75,6 +74,7 @@ CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_BPF_JIT=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
CONFIG_BLK_DEV_LOOP=m
@@ -121,7 +121,6 @@ CONFIG_DEBUG_NOTIFIERS=y
CONFIG_RCU_TRACE=y
CONFIG_KPROBES_SANITY_TEST=y
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
CONFIG_LATENCYTOP=y
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_BLK_DEV_IO_TRACE=y
@@ -173,3 +172,4 @@ CONFIG_CRYPTO_SHA512_S390=m
CONFIG_CRYPTO_DES_S390=m
CONFIG_CRYPTO_AES_S390=m
CONFIG_CRC7=m
CONFIG_CMM=m
Loading