[GIT PULL] s390 patches for 4.8 merge window
From: Martin Schwidefsky
Date: Mon Jul 25 2016 - 12:23:03 EST
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:
There are a couple of new things for s390 with this merge request:
* A new scheduling domain "drawer" is added to reflect the unusual
topology found on z13 machines. Performance tests showed up to
8 percent gain with the additional domain.
* The new crc-32 checksum crypto module uses the vector-galois-field
multiply and sum SIMD instruction to speed up crc-32 and crc-32c.
* Proper __ro_after_init support, this requires RO_AFTER_INIT_DATA
in the generic vmlinux.lds linker script definitions.
* Kcov instrumentation support. A prerequisite for that is the
inline assembly basic block cleanup, which is the reason for the
net/iucv/iucv.c change.
* Support for 2GB pages is added to the hugetlbfs backend.
Then there are two removals:
* The oprofile hardware sampling support is dead code and is removed.
The oprofile user space uses the perf interface nowadays.
* The ETR clock synchronization is removed, this has been superseeded
be the STP clock synchronization. And it always has been "interesting"
code..
And the usual bug fixes and cleanups.
The shortlog:
Bhaktipriya Shridhar (1):
s390/cio/chp : Remove deprecated create_singlethread_workqueue
Christian Borntraeger (1):
s390: dump_stack: fill in arch description
Dan Carpenter (1):
s390/smp: clean up a condition
Daniel van Gerpen (1):
s390: use canonical include guard style
David Hildenbrand (1):
s390/mm: fix gmap tlb flush issues
Gerald Schaefer (1):
s390/mm: add support for 2GB hugepages
Heiko Carstens (49):
s390/pgtable: introduce and use generic csp inline asm
s390/vmem: align segment and region tables to 16k
s390/vmem: introduce and use SEGMENT_KERNEL and REGION3_KERNEL
s390/pgtable: get rid of _REGION3_ENTRY_RO
s390/vmem: make use of pte_clear()
s390/mm: always use PAGE_KERNEL when mapping pages
s390/pgtable: make pmd and pud helper functions available
s390/pageattr: allow kernel page table splitting
s390/vmem: simplify vmem code for read-only mappings
s390/pgtable: add mapping statistics
s390/cpuinfo: print cache info and all single cpu lines on first iteration
s390/cpuinfo: show dynamic and static cpu mhz
s390/mm: align swapper_pg_dir to 16k
s390/kexec: fix update of os_info crash kernel size
s390/kexec: fix crash on resize of reserved memory
vmlinux.lds.h: allow arch specific handling of ro_after_init data section
s390: add proper __ro_after_init support
s390: use __section macro everywhere
s390/uaccess: fix whitespace damage
s390/uaccess: use __builtin_expect for get_user/put_user
s390: avoid extable collisions
s390/ipl: use load normal for LPAR re-ipl
s390/ipl: rename diagnose enums
topology/sysfs: provide drawer id and siblings attributes
s390/topology: add drawer scheduling domain level
s390/topology: remove z10 special handling
s390/mm: fix compile for PAGE_DEFAULT_KEY != 0
s390: calculate loops_per_jiffies with fp instructions
s390: remove math emulation code
s390/oprofile: remove hardware sampler support
s390/perf: remove perf_release/reserver_sampling functions
s390/cpuinfo: rename cpu field to cpu number
s390/uaccess: fix __put_get_user_asm define
s390/lib: use basic blocks for inline assemblies
s390/mm: use basic block for essa inline assembly
s390/crypto: use basic blocks for ap bus inline assemblies
s390/iucv: use basic blocks for iucv inline assemblies
s390/pci: use basic blocks for pci inline assemblies
s390/cio: use basic blocks for cmf inline assemblies
s390/cio: use basic blocks for i/o inline assemblies
s390/smp: use basic blocks for sigp inline assemblies
s390/sysinfo: use basic block for stsi inline assembly
s390/hypfs: use basic block for diag inline assembly
s390/cpumf: use basic block for ecctr inline assembly
s390: enable kcov support
s390: remove pointless load within __switch_to
s390: stack address vs thread_info
s390/cpuinfo: show maximum thread id
s390: have unique symbol for __switch_to address
Hendrik Brueckner (4):
s390/vx: add support functions for in-kernel FPU use
s390/crc32-vx: use vector instructions to optimize CRC-32 computation
s390/crc32-vx: add crypto API module for optimized CRC-32 algorithms
s390: Updated kernel config files
Jason Baron (1):
s390: add explicit <linux/stringify.h> for jump label
Markus Elfring (1):
s390/pci: Delete an unnecessary check before the function call "pci_dev_put"
Martin Schwidefsky (9):
s390/time: STP sync clock correction
s390/time: move PTFF definitions
s390/time: LPAR offset handling
s390/time: add leap seconds to initial system time
s390/time: remove ETR support
s390/mm: fix vunmap vs finish_arch_post_lock_switch
bitmap: bitmap_equal memcmp optimization
s390/mm: simplify the TLB flushing code
s390/ptrace: clarify bits in the per_struct
Muhammad Falak R Wani (1):
s390/keyboard: use memdup_user_nul()
Peter Oberparleiter (1):
s390/console: Make preferred console handling more consistent
Sebastian Ott (9):
s390: use SPARSE_IRQ
s390/pci: ensure page aligned dma start address
s390/pci: ensure to not cross a dma segment boundary
s390/cio: allow to reset channel measurement block
s390/cio/device_ops: fix kernel doc
s390/chsc: fix ioctl CHSC_INFO_CU command
s390/cio: make fmt1 channel path descriptor optional
s390/chsc: sanitize fmt check for chp_desc determination
s390/chsc: improve channel path descriptor determination
Thomas Richter (1):
s390/Documentation: improve sort command for trace buffer
Documentation/cputopology.txt | 40 +-
Documentation/kernel-parameters.txt | 2 -
Documentation/s390/s390dbf.txt | 2 +-
arch/s390/Kconfig | 16 +-
arch/s390/boot/compressed/Makefile | 2 +
arch/s390/configs/default_defconfig | 1 +
arch/s390/configs/gcov_defconfig | 1 +
arch/s390/configs/performance_defconfig | 1 +
arch/s390/crypto/Makefile | 3 +
arch/s390/crypto/crc32-vx.c | 310 ++++++++
arch/s390/crypto/crc32be-vx.S | 207 ++++++
arch/s390/crypto/crc32le-vx.S | 268 +++++++
arch/s390/defconfig | 4 +
arch/s390/hypfs/hypfs_diag.c | 14 +-
arch/s390/hypfs/hypfs_vm.c | 2 +-
arch/s390/include/asm/cache.h | 5 +-
arch/s390/include/asm/cio.h | 2 +-
arch/s390/include/asm/cpu_mf.h | 17 +-
arch/s390/include/asm/diag.h | 2 +-
arch/s390/include/asm/etr.h | 261 -------
arch/s390/include/asm/fcx.h | 2 +-
arch/s390/include/asm/fpu/api.h | 75 ++
arch/s390/include/asm/fpu/types.h | 10 +
arch/s390/include/asm/hugetlb.h | 5 +-
arch/s390/include/asm/ipl.h | 10 +-
arch/s390/include/asm/irq.h | 7 +-
arch/s390/include/asm/jump_label.h | 1 +
arch/s390/include/asm/kprobes.h | 4 +-
arch/s390/include/asm/mathemu.h | 28 -
arch/s390/include/asm/mmu.h | 2 +-
arch/s390/include/asm/mmu_context.h | 15 +-
arch/s390/include/asm/page.h | 8 +-
arch/s390/include/asm/perf_event.h | 12 -
arch/s390/include/asm/pgtable.h | 272 +++++--
arch/s390/include/asm/processor.h | 17 +-
arch/s390/include/asm/sections.h | 1 +
arch/s390/include/asm/setup.h | 4 +
arch/s390/include/asm/sfp-machine.h | 142 ----
arch/s390/include/asm/sfp-util.h | 67 --
arch/s390/include/asm/sigp.h | 17 +-
arch/s390/include/asm/stp.h | 51 ++
arch/s390/include/asm/timex.h | 66 +-
arch/s390/include/asm/tlbflush.h | 31 +-
arch/s390/include/asm/topology.h | 4 +
arch/s390/include/asm/uaccess.h | 65 +-
arch/s390/include/uapi/asm/ptrace.h | 6 +-
arch/s390/kernel/Makefile | 5 +-
arch/s390/kernel/cache.c | 7 +-
arch/s390/kernel/dis.c | 1 -
arch/s390/kernel/dumpstack.c | 12 +-
arch/s390/kernel/early.c | 22 +
arch/s390/kernel/entry.S | 11 +-
arch/s390/kernel/fpu.c | 249 +++++++
arch/s390/kernel/ipl.c | 25 +-
arch/s390/kernel/irq.c | 7 +-
arch/s390/kernel/machine_kexec.c | 55 +-
arch/s390/kernel/nmi.c | 13 +-
arch/s390/kernel/perf_cpum_sf.c | 5 -
arch/s390/kernel/perf_event.c | 30 -
arch/s390/kernel/processor.c | 114 ++-
arch/s390/kernel/setup.c | 40 +-
arch/s390/kernel/smp.c | 18 +-
arch/s390/kernel/sysinfo.c | 63 +-
arch/s390/kernel/time.c | 1053 ++-------------------------
arch/s390/kernel/topology.c | 89 +--
arch/s390/kernel/vdso32/Makefile | 2 +
arch/s390/kernel/vdso64/Makefile | 2 +
arch/s390/kernel/vmlinux.lds.S | 21 +-
arch/s390/kvm/kvm-s390.c | 2 +-
arch/s390/lib/string.c | 50 +-
arch/s390/lib/uaccess.c | 6 +-
arch/s390/mm/dump_pagetables.c | 2 +-
arch/s390/mm/fault.c | 2 +-
arch/s390/mm/gmap.c | 7 +-
arch/s390/mm/gup.c | 45 +-
arch/s390/mm/hugetlbpage.c | 129 +++-
arch/s390/mm/init.c | 13 +-
arch/s390/mm/page-states.c | 13 +-
arch/s390/mm/pageattr.c | 267 ++++++-
arch/s390/mm/pgtable.c | 93 ++-
arch/s390/mm/vmem.c | 73 +-
arch/s390/numa/mode_emu.c | 25 +-
arch/s390/oprofile/Makefile | 1 -
arch/s390/oprofile/hwsampler.c | 1178 -------------------------------
arch/s390/oprofile/hwsampler.h | 63 --
arch/s390/oprofile/init.c | 489 -------------
arch/s390/oprofile/op_counter.h | 21 -
arch/s390/pci/pci_dma.c | 4 +-
arch/s390/pci/pci_event.c | 3 +-
arch/s390/pci/pci_insn.c | 12 +-
drivers/base/topology.c | 13 +
drivers/crypto/Kconfig | 13 +
drivers/s390/block/dasd_eckd.c | 4 +-
drivers/s390/char/keyboard.c | 15 +-
drivers/s390/char/sclp_con.c | 3 +-
drivers/s390/char/sclp_config.c | 2 +-
drivers/s390/char/zcore.c | 2 +-
drivers/s390/cio/chp.c | 22 +-
drivers/s390/cio/chp.h | 2 +-
drivers/s390/cio/chsc.c | 25 +-
drivers/s390/cio/chsc.h | 5 +-
drivers/s390/cio/chsc_sch.c | 2 +-
drivers/s390/cio/cmf.c | 44 +-
drivers/s390/cio/device_ops.c | 22 +-
drivers/s390/cio/idset.h | 2 +-
drivers/s390/cio/ioasm.c | 91 ++-
drivers/s390/crypto/ap_bus.c | 77 +-
include/asm-generic/vmlinux.lds.h | 10 +-
include/linux/bitmap.h | 4 +
mm/hugetlb.c | 4 +-
net/iucv/iucv.c | 36 +-
111 files changed, 2861 insertions(+), 3961 deletions(-)
create mode 100644 arch/s390/crypto/crc32-vx.c
create mode 100644 arch/s390/crypto/crc32be-vx.S
create mode 100644 arch/s390/crypto/crc32le-vx.S
delete mode 100644 arch/s390/include/asm/etr.h
delete mode 100644 arch/s390/include/asm/mathemu.h
delete mode 100644 arch/s390/include/asm/sfp-machine.h
delete mode 100644 arch/s390/include/asm/sfp-util.h
create mode 100644 arch/s390/include/asm/stp.h
create mode 100644 arch/s390/kernel/fpu.c
delete mode 100644 arch/s390/oprofile/hwsampler.c
delete mode 100644 arch/s390/oprofile/hwsampler.h
delete mode 100644 arch/s390/oprofile/op_counter.h
There are a couple of merge conflicts between the s390 tree and
the kvm tree. If the kvm tree is pulled first this patch will
resolve the fallout:
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
index cc1e16a..28f03ca 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -210,33 +210,6 @@ static inline __u64 phys_cpu__ctidx(enum diag204_format type, void *hdr)
}
/* Diagnose 204 functions */
-<<<<<<< HEAD
-=======
-
-static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr)
-{
- register unsigned long _subcode asm("0") = *subcode;
- register unsigned long _size asm("1") = size;
-
- asm volatile(
- " diag %2,%0,0x204\n"
- "0: nopr %%r7\n"
- EX_TABLE(0b,0b)
- : "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory");
- *subcode = _subcode;
- return _size;
-}
-
-static int diag204(unsigned long subcode, unsigned long size, void *addr)
-{
- diag_stat_inc(DIAG_STAT_X204);
- size = __diag204(&subcode, size, addr);
- if (subcode)
- return -1;
- return size;
-}
-
->>>>>>> 64a40c84001e55001a4d80496b6b56e4d04e4360
/*
* For the old diag subcode 4 with simple data format we have to use real
* memory. If we use subcode 6 or 7 with extended data format, we can (and
diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c
index a44faf4..a97354c 100644
--- a/arch/s390/kernel/diag.c
+++ b/arch/s390/kernel/diag.c
@@ -162,25 +162,27 @@ int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode)
}
EXPORT_SYMBOL(diag14);
-static inline int __diag204(unsigned long subcode, unsigned long size, void *addr)
+static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr)
{
- register unsigned long _subcode asm("0") = subcode;
+ register unsigned long _subcode asm("0") = *subcode;
register unsigned long _size asm("1") = size;
asm volatile(
" diag %2,%0,0x204\n"
- "0:\n"
+ "0: nopr %%r7\n"
EX_TABLE(0b,0b)
: "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory");
- if (_subcode)
- return -1;
+ *subcode = _subcode;
return _size;
}
int diag204(unsigned long subcode, unsigned long size, void *addr)
{
diag_stat_inc(DIAG_STAT_X204);
- return __diag204(subcode, size, addr);
+ size = __diag204(&subcode, size, addr);
+ if (subcode)
+ return -1;
+ return size;
}
EXPORT_SYMBOL(diag204);
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 8911848..d0bf317 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -38,7 +38,6 @@
#include <asm/isc.h>
#include <asm/sclp.h>
#include <asm/cpacf.h>
-#include <asm/etr.h>
#include "kvm-s390.h"
#include "gaccess.h"
@@ -243,7 +242,8 @@ static void kvm_s390_cpu_feat_init(void)
}
if (test_facility(28)) /* TOD-clock steering */
- etr_ptff(kvm_s390_available_subfunc.ptff, ETR_PTFF_QAF);
+ ptff(kvm_s390_available_subfunc.ptff,
+ sizeof(kvm_s390_available_subfunc.ptff), PTFF_QAF);
if (test_facility(17)) { /* MSA */
__cpacf_query(CPACF_KMAC, kvm_s390_available_subfunc.kmac);
diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
index 3d12272..2ce6bb3 100644
--- a/arch/s390/mm/gmap.c
+++ b/arch/s390/mm/gmap.c
@@ -175,18 +175,9 @@ static void gmap_free(struct gmap *gmap)
{
struct page *page, *next;
-<<<<<<< HEAD
/* Flush tlb of all gmaps (if not already done for shadows) */
if (!(gmap_is_shadow(gmap) && gmap->removed))
gmap_flush_tlb(gmap);
-=======
- /* Flush tlb. */
- if (MACHINE_HAS_IDTE)
- __tlb_flush_idte(gmap->asce);
- else
- __tlb_flush_global();
-
->>>>>>> 64a40c84001e55001a4d80496b6b56e4d04e4360
/* Free all segment & region tables. */
list_for_each_entry_safe(page, next, &gmap->crst_list, lru)
__free_pages(page, 2);