Commit 69b4a3a0 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

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
...@@ -118,6 +118,7 @@ config S390 ...@@ -118,6 +118,7 @@ config S390
select HAVE_FUNCTION_TRACE_MCOUNT_TEST select HAVE_FUNCTION_TRACE_MCOUNT_TEST
select HAVE_KERNEL_BZIP2 select HAVE_KERNEL_BZIP2
select HAVE_KERNEL_GZIP select HAVE_KERNEL_GZIP
select HAVE_KERNEL_LZ4
select HAVE_KERNEL_LZMA select HAVE_KERNEL_LZMA
select HAVE_KERNEL_LZO select HAVE_KERNEL_LZO
select HAVE_KERNEL_XZ select HAVE_KERNEL_XZ
...@@ -227,11 +228,12 @@ config MARCH_Z196 ...@@ -227,11 +228,12 @@ config MARCH_Z196
not work on older machines. not work on older machines.
config MARCH_ZEC12 config MARCH_ZEC12
bool "IBM zEC12" bool "IBM zBC12 and zEC12"
select HAVE_MARCH_ZEC12_FEATURES if 64BIT select HAVE_MARCH_ZEC12_FEATURES if 64BIT
help help
Select this to enable optimizations for IBM zEC12 (2827 series). The Select this to enable optimizations for IBM zBC12 and zEC12 (2828 and
kernel will be slightly faster but will not work on older machines. 2827 series). The kernel will be slightly faster but will not work on
older machines.
endchoice endchoice
...@@ -709,6 +711,7 @@ config S390_GUEST ...@@ -709,6 +711,7 @@ config S390_GUEST
def_bool y def_bool y
prompt "s390 support for virtio devices" prompt "s390 support for virtio devices"
depends on 64BIT depends on 64BIT
select TTY
select VIRTUALIZATION select VIRTUALIZATION
select VIRTIO select VIRTIO
select VIRTIO_CONSOLE select VIRTIO_CONSOLE
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
BITS := $(if $(CONFIG_64BIT),64,31) BITS := $(if $(CONFIG_64BIT),64,31)
targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \ 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 \ targets += vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.lz4
sizes.h head$(BITS).o targets += misc.o piggy.o sizes.h head$(BITS).o
KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
...@@ -48,6 +48,7 @@ vmlinux.bin.all-y := $(obj)/vmlinux.bin ...@@ -48,6 +48,7 @@ vmlinux.bin.all-y := $(obj)/vmlinux.bin
suffix-$(CONFIG_KERNEL_GZIP) := gz suffix-$(CONFIG_KERNEL_GZIP) := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2 suffix-$(CONFIG_KERNEL_BZIP2) := bz2
suffix-$(CONFIG_KERNEL_LZ4) := lz4
suffix-$(CONFIG_KERNEL_LZMA) := lzma suffix-$(CONFIG_KERNEL_LZMA) := lzma
suffix-$(CONFIG_KERNEL_LZO) := lzo suffix-$(CONFIG_KERNEL_LZO) := lzo
suffix-$(CONFIG_KERNEL_XZ) := xz suffix-$(CONFIG_KERNEL_XZ) := xz
...@@ -56,6 +57,8 @@ $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) ...@@ -56,6 +57,8 @@ $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y)
$(call if_changed,gzip) $(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y)
$(call if_changed,bzip2) $(call if_changed,bzip2)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y)
$(call if_changed,lz4)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y)
$(call if_changed,lzma) $(call if_changed,lzma)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y)
......
...@@ -47,6 +47,10 @@ static unsigned long free_mem_end_ptr; ...@@ -47,6 +47,10 @@ static unsigned long free_mem_end_ptr;
#include "../../../../lib/decompress_bunzip2.c" #include "../../../../lib/decompress_bunzip2.c"
#endif #endif
#ifdef CONFIG_KERNEL_LZ4
#include "../../../../lib/decompress_unlz4.c"
#endif
#ifdef CONFIG_KERNEL_LZMA #ifdef CONFIG_KERNEL_LZMA
#include "../../../../lib/decompress_unlzma.c" #include "../../../../lib/decompress_unlzma.c"
#endif #endif
......
...@@ -693,7 +693,7 @@ static inline int find_next_bit_left(const unsigned long *addr, ...@@ -693,7 +693,7 @@ static inline int find_next_bit_left(const unsigned long *addr,
size -= offset; size -= offset;
p = addr + offset / BITS_PER_LONG; p = addr + offset / BITS_PER_LONG;
if (bit) { if (bit) {
set = __flo_word(0, *p & (~0UL << bit)); set = __flo_word(0, *p & (~0UL >> bit));
if (set >= size) if (set >= size)
return size + offset; return size + offset;
if (set < BITS_PER_LONG) if (set < BITS_PER_LONG)
......
...@@ -52,12 +52,13 @@ static struct kvm_s390_sie_block *sie_block(struct pt_regs *regs) ...@@ -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) static bool is_in_guest(struct pt_regs *regs)
{ {
unsigned long ip = instruction_pointer(regs);
if (user_mode(regs)) if (user_mode(regs))
return false; return false;
#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
return ip == (unsigned long) &sie_exit; return instruction_pointer(regs) == (unsigned long) &sie_exit;
#else
return false;
#endif
} }
static unsigned long guest_is_user_mode(struct pt_regs *regs) static unsigned long guest_is_user_mode(struct pt_regs *regs)
......
...@@ -994,6 +994,7 @@ static void __init setup_hwcaps(void) ...@@ -994,6 +994,7 @@ static void __init setup_hwcaps(void)
strcpy(elf_platform, "z196"); strcpy(elf_platform, "z196");
break; break;
case 0x2827: case 0x2827:
case 0x2828:
strcpy(elf_platform, "zEC12"); strcpy(elf_platform, "zEC12");
break; break;
} }
......
...@@ -69,6 +69,7 @@ static void __init setup_zero_pages(void) ...@@ -69,6 +69,7 @@ static void __init setup_zero_pages(void)
order = 2; order = 2;
break; break;
case 0x2827: /* zEC12 */ case 0x2827: /* zEC12 */
case 0x2828: /* zEC12 */
default: default:
order = 5; order = 5;
break; break;
......
...@@ -440,7 +440,7 @@ static int oprofile_hwsampler_init(struct oprofile_operations *ops) ...@@ -440,7 +440,7 @@ static int oprofile_hwsampler_init(struct oprofile_operations *ops)
switch (id.machine) { switch (id.machine) {
case 0x2097: case 0x2098: ops->cpu_type = "s390/z10"; break; case 0x2097: case 0x2098: ops->cpu_type = "s390/z10"; break;
case 0x2817: case 0x2818: ops->cpu_type = "s390/z196"; break; case 0x2817: case 0x2818: ops->cpu_type = "s390/z196"; break;
case 0x2827: ops->cpu_type = "s390/zEC12"; break; case 0x2827: case 0x2828: ops->cpu_type = "s390/zEC12"; break;
default: return -ENODEV; default: return -ENODEV;
} }
} }
......
...@@ -2392,6 +2392,12 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) ...@@ -2392,6 +2392,12 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr)
rc = cqr->intrc; rc = cqr->intrc;
else else
rc = -EIO; rc = -EIO;
/* kick tasklets */
dasd_schedule_device_bh(device);
if (device->block)
dasd_schedule_block_bh(device->block);
return rc; return rc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment