forked from Minki/linux
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
This commit is contained in:
commit
69b4a3a030
@ -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
|
|||||||
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
|
|||||||
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 @@
|
|||||||
|
|
||||||
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
|
|||||||
|
|
||||||
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)
|
|||||||
$(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;
|
|||||||
#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,
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user