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

Commit 69b4a3a0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull s390 fixes from Martin Schwidefsky:
 "Enable LZ4 compression for the kernel image, add the machine id for
  the new zBC12 model, fix an issue with hanging dasd devices, correct a
  Kconfig dependency, fix a compile error in the perf module with
  CONFIG_KVM=n and fix the find_next_bit_left primitive for the PCI base
  layer"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/dasd: fix hanging devices after path events
  s390/perf: fix compile error (undefined reference sie_exit)
  s390/bitops: fix find_next_bit_left
  s390: add support for IBM zBC12 machine
  s390/Kconfig: select 'TTY' when 'S390_GUEST' is enabled
  s390: add support for LZ4-compressed kernel
parents 6160968c 0e003b70
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ config S390
	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
	select HAVE_KERNEL_BZIP2
	select HAVE_KERNEL_GZIP
	select HAVE_KERNEL_LZ4
	select HAVE_KERNEL_LZMA
	select HAVE_KERNEL_LZO
	select HAVE_KERNEL_XZ
@@ -227,11 +228,12 @@ config MARCH_Z196
	  not work on older machines.

config MARCH_ZEC12
	bool "IBM zEC12"
	bool "IBM zBC12 and zEC12"
	select HAVE_MARCH_ZEC12_FEATURES if 64BIT
	help
	  Select this to enable optimizations for IBM zEC12 (2827 series). The
	  kernel will be slightly faster but will not work on older machines.
	  Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
	  2827 series). The kernel will be slightly faster but will not work on
	  older machines.

endchoice

@@ -709,6 +711,7 @@ config S390_GUEST
	def_bool y
	prompt "s390 support for virtio devices"
	depends on 64BIT
	select TTY
	select VIRTUALIZATION
	select VIRTIO
	select VIRTIO_CONSOLE
+6 −3
Original line number Diff line number Diff line
@@ -6,9 +6,9 @@

BITS := $(if $(CONFIG_64BIT),64,31)

targets	:= vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \
	   vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo misc.o piggy.o \
	   sizes.h head$(BITS).o
targets	:= vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2
targets += vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.lz4
targets += misc.o piggy.o sizes.h head$(BITS).o

KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
@@ -48,6 +48,7 @@ vmlinux.bin.all-y := $(obj)/vmlinux.bin

suffix-$(CONFIG_KERNEL_GZIP)  := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2
suffix-$(CONFIG_KERNEL_LZ4)  := lz4
suffix-$(CONFIG_KERNEL_LZMA)  := lzma
suffix-$(CONFIG_KERNEL_LZO)  := lzo
suffix-$(CONFIG_KERNEL_XZ)  := xz
@@ -56,6 +57,8 @@ $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y)
	$(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y)
	$(call if_changed,bzip2)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y)
	$(call if_changed,lz4)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y)
	$(call if_changed,lzma)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y)
+4 −0
Original line number Diff line number Diff line
@@ -47,6 +47,10 @@ static unsigned long free_mem_end_ptr;
#include "../../../../lib/decompress_bunzip2.c"
#endif

#ifdef CONFIG_KERNEL_LZ4
#include "../../../../lib/decompress_unlz4.c"
#endif

#ifdef CONFIG_KERNEL_LZMA
#include "../../../../lib/decompress_unlzma.c"
#endif
+1 −1
Original line number Diff line number Diff line
@@ -693,7 +693,7 @@ static inline int find_next_bit_left(const unsigned long *addr,
	size -= offset;
	p = addr + offset / BITS_PER_LONG;
	if (bit) {
		set = __flo_word(0, *p & (~0UL << bit));
		set = __flo_word(0, *p & (~0UL >> bit));
		if (set >= size)
			return size + offset;
		if (set < BITS_PER_LONG)
+5 −4
Original line number Diff line number Diff line
@@ -52,12 +52,13 @@ static struct kvm_s390_sie_block *sie_block(struct pt_regs *regs)

static bool is_in_guest(struct pt_regs *regs)
{
	unsigned long ip = instruction_pointer(regs);

	if (user_mode(regs))
		return false;

	return ip == (unsigned long) &sie_exit;
#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
	return instruction_pointer(regs) == (unsigned long) &sie_exit;
#else
	return false;
#endif
}

static unsigned long guest_is_user_mode(struct pt_regs *regs)
Loading