1. 03 4月, 2014 5 次提交
    • H
      s390/uaccess: rework uaccess code - fix locking issues · 457f2180
      Heiko Carstens 提交于
      The current uaccess code uses a page table walk in some circumstances,
      e.g. in case of the in atomic futex operations or if running on old
      hardware which doesn't support the mvcos instruction.
      
      However it turned out that the page table walk code does not correctly
      lock page tables when accessing page table entries.
      In other words: a different cpu may invalidate a page table entry while
      the current cpu inspects the pte. This may lead to random data corruption.
      
      Adding correct locking however isn't trivial for all uaccess operations.
      Especially copy_in_user() is problematic since that requires to hold at
      least two locks, but must be protected against ABBA deadlock when a
      different cpu also performs a copy_in_user() operation.
      
      So the solution is a different approach where we change address spaces:
      
      User space runs in primary address mode, or access register mode within
      vdso code, like it currently already does.
      
      The kernel usually also runs in home space mode, however when accessing
      user space the kernel switches to primary or secondary address mode if
      the mvcos instruction is not available or if a compare-and-swap (futex)
      instruction on a user space address is performed.
      KVM however is special, since that requires the kernel to run in home
      address space while implicitly accessing user space with the sie
      instruction.
      
      So we end up with:
      
      User space:
      - runs in primary or access register mode
      - cr1 contains the user asce
      - cr7 contains the user asce
      - cr13 contains the kernel asce
      
      Kernel space:
      - runs in home space mode
      - cr1 contains the user or kernel asce
        -> the kernel asce is loaded when a uaccess requires primary or
           secondary address mode
      - cr7 contains the user or kernel asce, (changed with set_fs())
      - cr13 contains the kernel asce
      
      In case of uaccess the kernel changes to:
      - primary space mode in case of a uaccess (copy_to_user) and uses
        e.g. the mvcp instruction to access user space. However the kernel
        will stay in home space mode if the mvcos instruction is available
      - secondary space mode in case of futex atomic operations, so that the
        instructions come from primary address space and data from secondary
        space
      
      In case of kvm the kernel runs in home space mode, but cr1 gets switched
      to contain the gmap asce before the sie instruction gets executed. When
      the sie instruction is finished cr1 will be switched back to contain the
      user asce.
      
      A context switch between two processes will always load the kernel asce
      for the next process in cr1. So the first exit to user space is a bit
      more expensive (one extra load control register instruction) than before,
      however keeps the code rather simple.
      
      In sum this means there is no need to perform any error prone page table
      walks anymore when accessing user space.
      
      The patch seems to be rather large, however it mainly removes the
      the page table walk code and restores the previously deleted "standard"
      uaccess code, with a couple of changes.
      
      The uaccess without mvcos mode can be enforced with the "uaccess_primary"
      kernel parameter.
      Reported-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      457f2180
    • M
      s390/mm,tlb: optimize TLB flushing for zEC12 · 1b948d6c
      Martin Schwidefsky 提交于
      The zEC12 machines introduced the local-clearing control for the IDTE
      and IPTE instruction. If the control is set only the TLB of the local
      CPU is cleared of entries, either all entries of a single address space
      for IDTE, or the entry for a single page-table entry for IPTE.
      Without the local-clearing control the TLB flush is broadcasted to all
      CPUs in the configuration, which is expensive.
      
      The reset of the bit mask of the CPUs that need flushing after a
      non-local IDTE is tricky. As TLB entries for an address space remain
      in the TLB even if the address space is detached a new bit field is
      required to keep track of attached CPUs vs. CPUs in the need of a
      flush. After a non-local flush with IDTE the bit-field of attached CPUs
      is copied to the bit-field of CPUs in need of a flush. The ordering
      of operations on cpu_attach_mask, attach_count and mm_cpumask(mm) is
      such that an underindication in mm_cpumask(mm) is prevented but an
      overindication in mm_cpumask(mm) is possible.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      1b948d6c
    • M
      s390/mm,tlb: safeguard against speculative TLB creation · 02a8f3ab
      Martin Schwidefsky 提交于
      The principles of operations states that the CPU is allowed to create
      TLB entries for an address space anytime while an ASCE is loaded to
      the control register. This is true even if the CPU is running in the
      kernel and the user address space is not (actively) accessed.
      
      In theory this can affect two aspects of the TLB flush logic.
      For full-mm flushes the ASCE of the dying process is still attached.
      The approach to flush first with IDTE and then just free all page
      tables can in theory lead to stale TLB entries. Use the batched
      free of page tables for the full-mm flushes as well.
      
      For operations that can have a stale ASCE in the control register,
      e.g. a delayed update_user_asce in switch_mm, load the kernel ASCE
      to prevent invalid TLBs from being created.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      02a8f3ab
    • T
      s390/irq: Use defines for external interruption codes · 1dad093b
      Thomas Huth 提交于
      Use the new defines for external interruption codes to get rid
      of "magic" numbers in the s390 source code. And while we're at it,
      also rename the (un-)register_external_interrupt function to
      something shorter so that this patch does not exceed the 80
      columns all over the place.
      Signed-off-by: NThomas Huth <thuth@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      1dad093b
    • T
      s390/irq: Add defines for external interruption codes · 072c2790
      Thomas Huth 提交于
      Introduce defines for external interruption codes so that we
      can get rid of some "magic" numbers in the s390 source code.
      Signed-off-by: NThomas Huth <thuth@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      072c2790
  2. 01 4月, 2014 32 次提交
    • G
      s390/sclp: add timeout for queued requests · 9f0128f9
      Gerald Schaefer 提交于
      This patch adds a timeout option for queued requests and introduces
      sclp_sync_request_timeout() to use this timer. With this, blocking the
      system too long, e.g. during an SE reboot, can be avoided in critical
      situations like CPU and memory hotplug.
      Since there is no way to cancel a running request, this timeout only
      applies to queued requests that have not yet been started.
      Reviewed-by: NPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Signed-off-by: NGerald Schaefer <gerald.schaefer@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      9f0128f9
    • C
      kvm/s390: also set guest pages back to stable on kexec/kdump · 1b6a19b3
      Christian Borntraeger 提交于
      We need to reset the usage state of the pages on kexec/kdump,
      which use subcode 0 and 1. We will only do the cmma reset in
      the kernel, everything else is done in userspace as before.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      1b6a19b3
    • T
      lcs: Add missing destroy_timer_on_stack() · 12797e8e
      Thomas Gleixner 提交于
      Otherwise we leak a tracking object when DEBUG_OBJECTS is enabled.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      12797e8e
    • T
      s390/tape: Add missing destroy_timer_on_stack() · 50f0e3bc
      Thomas Gleixner 提交于
      Otherwise we leak a tracking object when DEBUG_OBJECTS is enabled.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      50f0e3bc
    • T
      s390/tape: Use del_timer_sync() · 02ba8d21
      Thomas Gleixner 提交于
      del_timer() does not wait for a possible running callback to
      complete. So the call side might free request and the associated
      objects while on another cpu the timer handler runs.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      02ba8d21
    • M
      s390/3270: fix crash with multiple reset device requests · bd1cb5de
      Martin Schwidefsky 提交于
      If the 3270 device is detached the initial reset device request will
      stays pending until the device is operational. A second reset device
      call will reuse the same request structure which will cause an oops.
      Add a check to see if the reset device request is already pending
      and do nothing in this case.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      bd1cb5de
    • H
      s390/bitops,atomic: add missing memory barriers · 0ccc8b7a
      Heiko Carstens 提交于
      When reworking the bitops and atomic ops I missed that those instructions
      that got atomic behaviour only perform a "specific-operand-serialization"
      instead of a full "serialization".
      The compare-and-swap instruction used before performs a full serialization
      before and after the instruction is executed, which means it has full
      memory barrier semantics.
      In order to give the new bitops and atomic ops functions also full memory
      barrier semantics add a "bcr 14,0" before and after each of those new
      instructions which performs full serialization as well.
      
      This restores memory barrier semantics for bitops and atomic ops functions
      which return values, like e.g. atomic_add_return(), but not for functions
      which do not return a value, like e.g. atomic_add().
      This is consistent to other architectures and what common code requires.
      
      Cc: stable@vger.kernel.org # v3.13+
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      0ccc8b7a
    • I
    • L
      Merge branch 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 01d5f3b5
      Linus Torvalds 提交于
      Pull libata updates from Tejun Heo:
       "A lot of activities on libata side this time.
      
         - A lot of changes around ahci.  Various embedded platforms are
           implementing ahci controllers.  Some were built atop ahci_platform,
           others were doing their own things.  Hans made some structural
           changes to libahci and librarized ahci_platform so that ahci
           platform drivers can share more common code.  A couple platform
           drivers are added on top of that and several are added to replace
           older drivers which were doing their own things (older ones are
           scheduled to be removed).
      
         - Dan finishes the patchset to make libata PM operations
           asynchronous.  Combined with one patch being routed through scsi,
           this should speed resume measurably.
      
         - Various fixes and cleanups from Bartlomiej and others"
      
      * 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (61 commits)
        ata: fix Marvell SATA driver dependencies
        ata: fix ARASAN CompactFlash PATA driver dependencies
        ata: remove superfluous casts
        ata: sata_highbank: remove superfluous cast
        ata: fix Calxeda Highbank SATA driver dependencies
        ata: fix R-Car SATA driver dependencies
        ARM: davinci: da850: update SATA AHCI support
        ata: add new-style AHCI platform driver for DaVinci DA850 AHCI controller
        ata: move library code from ahci_platform.c to libahci_platform.c
        ata: ahci_platform: fix ahci_platform_data->suspend method handling
        libata: remove unused ata_sas_port_async_resume() stub
        libata.h: add stub for ata_sas_port_resume
        libata: async resume
        libata, libsas: kill pm_result and related cleanup
        ata: Fix compiler warning with APM X-Gene host controller driver
        arm64: Add APM X-Gene SoC AHCI SATA host controller DTS entries
        ata: Add APM X-Gene SoC AHCI SATA host controller driver
        Documentation: Add documentation for the APM X-Gene SoC SATA host controller DTS binding
        arm64: Add APM X-Gene SoC 15Gbps Multi-purpose PHY DTS entries
        ata: ahci_sunxi: fix code formatting
        ...
      01d5f3b5
    • L
      Merge branch 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 9d919e8d
      Linus Torvalds 提交于
      Pull workqueue changes from Tejun Heo:
       "PREPARE_[DELAYED_]WORK() were used to change the work function of work
        items without fully reinitializing it; however, this makes workqueue
        consider the work item as a different one from before and allows the
        work item to start executing before the previous instance is finished
        which can lead to extremely subtle issues which are painful to debug.
      
        The interface has never been popular.  This pull request contains
        patches to remove existing usages and kill the interface.  As one of
        the changes was routed during the last devel cycle and another
        depended on a pending change in nvme, for-3.15 contains a couple merge
        commits.
      
        In addition, interfaces which were deprecated quite a while ago -
        __cancel_delayed_work() and WQ_NON_REENTRANT - are removed too"
      
      * 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: remove deprecated WQ_NON_REENTRANT
        workqueue: Spelling s/instensive/intensive/
        workqueue: remove PREPARE_[DELAYED_]WORK()
        staging/fwserial: don't use PREPARE_WORK
        afs: don't use PREPARE_WORK
        nvme: don't use PREPARE_WORK
        usb: don't use PREPARE_DELAYED_WORK
        floppy: don't use PREPARE_[DELAYED_]WORK
        ps3-vuart: don't use PREPARE_WORK
        wireless/rt2x00: don't use PREPARE_WORK in rt2800usb.c
        workqueue: Remove deprecated __cancel_delayed_work()
      9d919e8d
    • L
      Merge branch 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu · cf6fafcf
      Linus Torvalds 提交于
      Pull percpu changes from Tejun Heo:
       "The percpu allocation is now popular enough for the extremely naive
        range allocator to cause scalability issues.
      
        The existing allocator linearly scanned the allocation map on both
        alloc and free without making use of hint or anything.  Al
        reimplemented the range allocator so that it can use binary search
        instead of linear scan during free and alloc path uses simple hinting
        to avoid scanning in common cases.  Combined, the new allocator
        resolves the scalability issue percpu allocator was showing during
        container benchmark workload"
      
      * 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
        percpu: renew the max_contig if we merge the head and previous block
        percpu: allocation size should be even
        percpu: speed alloc_pcpu_area() up
        percpu: store offsets instead of lengths in ->map[]
        perpcu: fold pcpu_split_block() into the only caller
      cf6fafcf
    • L
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 1ce235fa
      Linus Torvalds 提交于
      Pull ARM64 updates from Catalin Marinas:
       - KGDB support for arm64
       - PCI I/O space extended to 16M (in preparation of PCIe support
         patches)
       - Dropping ZONE_DMA32 in favour of ZONE_DMA (we only need one for the
         time being), together with swiotlb late initialisation to correctly
         setup the bounce buffer
       - DMA API cache maintenance support (not all ARMv8 platforms have
         hardware cache coherency)
       - Crypto extensions advertising via ELF_HWCAP2 for compat user space
       - Perf support for dwarf unwinding in compat mode
       - asm/tlb.h converted to the generic mmu_gather code
       - asm-generic rwsem implementation
       - Code clean-up
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (42 commits)
        arm64: Remove pgprot_dmacoherent()
        arm64: Support DMA_ATTR_WRITE_COMBINE
        arm64: Implement custom mmap functions for dma mapping
        arm64: Fix __range_ok macro
        arm64: Fix duplicated Kconfig entries
        arm64: mm: Route pmd thp functions through pte equivalents
        arm64: rwsem: use asm-generic rwsem implementation
        asm-generic: rwsem: de-PPCify rwsem.h
        arm64: enable generic CPU feature modalias matching for this architecture
        arm64: smp: make local symbol static
        arm64: debug: make local symbols static
        ARM64: perf: support dwarf unwinding in compat mode
        ARM64: perf: add support for frame pointer unwinding in compat mode
        ARM64: perf: add support for perf registers API
        arm64: Add boot time configuration of Intermediate Physical Address size
        arm64: Do not synchronise I and D caches for special ptes
        arm64: Make DMA coherent and strongly ordered mappings not executable
        arm64: barriers: add dmb barrier
        arm64: topology: Implement basic CPU topology support
        arm64: advertise ARMv8 extensions to 32-bit compat ELF binaries
        ...
      1ce235fa
    • L
      Merge tag 'please-pull-misc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · e38be1b1
      Linus Torvalds 提交于
      Pull ia64 updates from Tony Luck:
       "Miscellaneous ia64 fixes for 3.15 merge window"
      
      * tag 'please-pull-misc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        [IA64] Keep format strings from leaking into printk
        Fix warning in make defconfig
        [IA64] sba_iommu: fix section mismatch To: linux-kernel@vger.kernel.org
      e38be1b1
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · f2427917
      Linus Torvalds 提交于
      Pull m68k updates from Geert Uytterhoeven.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Update defconfigs for v3.14-rc1
        [SCSI] atari_scsi: Fix sleep_on race
        m68k: head.S - Remove bogus L prefix in comment
        m68k: Remove dead code
        m68k: Remove CONSOLE_PENGUIN macro, adopt CONFIG_LOGO
      f2427917
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 1f8c538e
      Linus Torvalds 提交于
      Pull s390 updates from Martin Schwidefsky:
       "There are two memory management related changes, the CMMA support for
        KVM to avoid swap-in of freed pages and the split page table lock for
        the PMD level.  These two come with common code changes in mm/.
      
        A fix for the long standing theoretical TLB flush problem, this one
        comes with a common code change in kernel/sched/.
      
        Another set of changes is Heikos uaccess work, included is the initial
        set of patches with more to come.
      
        And fixes and cleanups as usual"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (36 commits)
        s390/con3270: optionally disable auto update
        s390/mm: remove unecessary parameter from pgste_ipte_notify
        s390/mm: remove unnecessary parameter from gmap_do_ipte_notify
        s390/mm: fixing comment so that parameter name match
        s390/smp: limit number of cpus in possible cpu mask
        hypfs: Add clarification for "weight_min" attribute
        s390: update defconfigs
        s390/ptrace: add support for PTRACE_SINGLEBLOCK
        s390/perf: make print_debug_cf() static
        s390/topology: Remove call to update_cpu_masks()
        s390/compat: remove compat exec domain
        s390: select CONFIG_TTY for use of tty in unconditional keyboard driver
        s390/appldata_os: fix cpu array size calculation
        s390/checksum: remove memset() within csum_partial_copy_from_user()
        s390/uaccess: remove copy_from_user_real()
        s390/sclp_early: Return correct HSA block count also for zero
        s390: add some drivers/subsystems to the MAINTAINERS file
        s390: improve debug feature usage
        s390/airq: add support for irq ranges
        s390/mm: enable split page table lock for PMD level
        ...
      1f8c538e
    • L
      Merge branch 'compat' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 190f9186
      Linus Torvalds 提交于
      Pull s390 compat wrapper rework from Heiko Carstens:
       "S390 compat system call wrapper simplification work.
      
        The intention of this work is to get rid of all hand written assembly
        compat system call wrappers on s390, which perform proper sign or zero
        extension, or pointer conversion of compat system call parameters.
        Instead all of this should be done with C code eg by using Al's
        COMPAT_SYSCALL_DEFINEx() macro.
      
        Therefore all common code and s390 specific compat system calls have
        been converted to the COMPAT_SYSCALL_DEFINEx() macro.
      
        In order to generate correct code all compat system calls may only
        have eg compat_ulong_t parameters, but no unsigned long parameters.
        Those patches which change parameter types from unsigned long to
        compat_ulong_t parameters are separate in this series, but shouldn't
        cause any harm.
      
        The only compat system calls which intentionally have 64 bit
        parameters (preadv64 and pwritev64) in support of the x86/32 ABI
        haven't been changed, but are now only available if an architecture
        defines __ARCH_WANT_COMPAT_SYS_PREADV64/PWRITEV64.
      
        System calls which do not have a compat variant but still need proper
        zero extension on s390, like eg "long sys_brk(unsigned long brk)" will
        get a proper wrapper function with the new s390 specific
        COMPAT_SYSCALL_WRAPx() macro:
      
           COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk);
      
        which generates the following code (simplified):
      
           asmlinkage long sys_brk(unsigned long brk);
           asmlinkage long compat_sys_brk(long brk)
           {
               return sys_brk((u32)brk);
           }
      
        Given that the C file which contains all the COMPAT_SYSCALL_WRAP lines
        includes both linux/syscall.h and linux/compat.h, it will generate
        build errors, if the declaration of sys_brk() doesn't match, or if
        there exists a non-matching compat_sys_brk() declaration.
      
        In addition this will intentionally result in a link error if
        somewhere else a compat_sys_brk() function exists, which probably
        should have been used instead.  Two more BUILD_BUG_ONs make sure the
        size and type of each compat syscall parameter can be handled
        correctly with the s390 specific macros.
      
        I converted the compat system calls step by step to verify the
        generated code is correct and matches the previous code.  In fact it
        did not always match, however that was always a bug in the hand
        written asm code.
      
        In result we get less code, less bugs, and much more sanity checking"
      
      * 'compat' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (44 commits)
        s390/compat: add copyright statement
        compat: include linux/unistd.h within linux/compat.h
        s390/compat: get rid of compat wrapper assembly code
        s390/compat: build error for large compat syscall args
        mm/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types
        kexec/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types
        net/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types
        ipc/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types
        fs/compat: convert to COMPAT_SYSCALL_DEFINE with changing parameter types
        ipc/compat: convert to COMPAT_SYSCALL_DEFINE
        fs/compat: convert to COMPAT_SYSCALL_DEFINE
        security/compat: convert to COMPAT_SYSCALL_DEFINE
        mm/compat: convert to COMPAT_SYSCALL_DEFINE
        net/compat: convert to COMPAT_SYSCALL_DEFINE
        kernel/compat: convert to COMPAT_SYSCALL_DEFINE
        fs/compat: optional preadv64/pwrite64 compat system calls
        ipc/compat_sys_msgrcv: change msgtyp type from long to compat_long_t
        s390/compat: partial parameter conversion within syscall wrappers
        s390/compat: automatic zero, sign and pointer conversion of syscalls
        s390/compat: add sync_file_range and fallocate compat syscalls
        ...
      190f9186
    • L
      Merge branch 'x86-asmlinkage-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 176ab02d
      Linus Torvalds 提交于
      Pull x86 LTO changes from Peter Anvin:
       "More infrastructure work in preparation for link-time optimization
        (LTO).  Most of these changes is to make sure symbols accessed from
        assembly code are properly marked as visible so the linker doesn't
        remove them.
      
        My understanding is that the changes to support LTO are still not
        upstream in binutils, but are on the way there.  This patchset should
        conclude the x86-specific changes, and remaining patches to actually
        enable LTO will be fed through the Kbuild tree (other than keeping up
        with changes to the x86 code base, of course), although not
        necessarily in this merge window"
      
      * 'x86-asmlinkage-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
        Kbuild, lto: Handle basic LTO in modpost
        Kbuild, lto: Disable LTO for asm-offsets.c
        Kbuild, lto: Add a gcc-ld script to let run gcc as ld
        Kbuild, lto: add ld-version and ld-ifversion macros
        Kbuild, lto: Drop .number postfixes in modpost
        Kbuild, lto, workaround: Don't warn for initcall_reference in modpost
        lto: Disable LTO for sys_ni
        lto: Handle LTO common symbols in module loader
        lto, workaround: Add workaround for initcall reordering
        lto: Make asmlinkage __visible
        x86, lto: Disable LTO for the x86 VDSO
        initconst, x86: Fix initconst mistake in ts5500 code
        initconst: Fix initconst mistake in dcdbas
        asmlinkage: Make trace_hardirqs_on/off_caller visible
        asmlinkage, x86: Fix 32bit memcpy for LTO
        asmlinkage Make __stack_chk_failed and memcmp visible
        asmlinkage: Mark rwsem functions that can be called from assembler asmlinkage
        asmlinkage: Make main_extable_sort_needed visible
        asmlinkage, mutex: Mark __visible
        asmlinkage: Make trace_hardirq visible
        ...
      176ab02d
    • L
      Merge branch 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e06df6a7
      Linus Torvalds 提交于
      Pull x86 kaslr update from Ingo Molnar:
       "This adds kernel module load address randomization"
      
      * 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, kaslr: fix module lock ordering problem
        x86, kaslr: randomize module base load address
      e06df6a7
    • L
      Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c0fc3cba
      Linus Torvalds 提交于
      Pull x86 hyperv change from Ingo Molnar:
       "Skip the timer_irq_works() check on hyperv systems"
      
      * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, hyperv: Bypass the timer_irq_works() check
      c0fc3cba
    • L
      Merge branch 'x86-hash-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d9fcca40
      Linus Torvalds 提交于
      Pull x86 hashing changes from Ingo Molnar:
       "Small fixes and cleanups to the librarized arch_fast_hash() methods,
        used by the net/openvswitch code"
      
      * 'x86-hash-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, hash: Simplify switch, add __init annotation
        x86, hash: Swap arguments passed to crc32_u32()
        x86, hash: Fix build failure with older binutils
      d9fcca40
    • L
      Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7cc3afdf
      Linus Torvalds 提交于
      Pull x86 EFI changes from Ingo Molnar:
       "The main changes:
      
        - Add debug code to the dump EFI pagetable - Borislav Petkov
      
        - Make 1:1 runtime mapping robust when booting on machines with lots
          of memory - Borislav Petkov
      
        - Move the EFI facilities bits out of 'x86_efi_facility' and into
          efi.flags which is the standard architecture independent place to
          keep EFI state, by Matt Fleming.
      
        - Add 'EFI mixed mode' support: this allows 64-bit kernels to be
          booted from 32-bit firmware.  This needs a bootloader that supports
          the 'EFI handover protocol'.  By Matt Fleming"
      
      * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits)
        x86, efi: Abstract x86 efi_early calls
        x86/efi: Restore 'attr' argument to query_variable_info()
        x86/efi: Rip out phys_efi_get_time()
        x86/efi: Preserve segment registers in mixed mode
        x86/boot: Fix non-EFI build
        x86, tools: Fix up compiler warnings
        x86/efi: Re-disable interrupts after calling firmware services
        x86/boot: Don't overwrite cr4 when enabling PAE
        x86/efi: Wire up CONFIG_EFI_MIXED
        x86/efi: Add mixed runtime services support
        x86/efi: Firmware agnostic handover entry points
        x86/efi: Split the boot stub into 32/64 code paths
        x86/efi: Add early thunk code to go from 64-bit to 32-bit
        x86/efi: Build our own EFI services pointer table
        efi: Add separate 32-bit/64-bit definitions
        x86/efi: Delete dead code when checking for non-native
        x86/mm/pageattr: Always dump the right page table in an oops
        x86, tools: Consolidate #ifdef code
        x86/boot: Cleanup header.S by removing some #ifdefs
        efi: Use NULL instead of 0 for pointer
        ...
      7cc3afdf
    • L
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ad8946fb
      Linus Torvalds 提交于
      Pull x86 debug cleanup from Ingo Molnar:
       "A single trivial cleanup"
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        i386: Remove unneeded test of 'task' in dump_trace() (again)
      ad8946fb
    • L
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 918d80a1
      Linus Torvalds 提交于
      Pull x86 cpu handling changes from Ingo Molnar:
       "Bigger changes:
      
         - Intel CPU hardware-enablement: new vector instructions support
           (AVX-512), by Fenghua Yu.
      
         - Support the clflushopt instruction and use it in appropriate
           places.  clflushopt is similar to clflush but with more relaxed
           ordering, by Ross Zwisler.
      
         - MSR accessor cleanups, by Borislav Petkov.
      
         - 'forcepae' boot flag for those who have way too much time to spend
           on way too old Pentium-M systems and want to live way too
           dangerously, by Chris Bainbridge"
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, cpu: Add forcepae parameter for booting PAE kernels on PAE-disabled Pentium M
        Rename TAINT_UNSAFE_SMP to TAINT_CPU_OUT_OF_SPEC
        x86, intel: Make MSR_IA32_MISC_ENABLE bit constants systematic
        x86, Intel: Convert to the new bit access MSR accessors
        x86, AMD: Convert to the new bit access MSR accessors
        x86: Add another set of MSR accessor functions
        x86: Use clflushopt in drm_clflush_virt_range
        x86: Use clflushopt in drm_clflush_page
        x86: Use clflushopt in clflush_cache_range
        x86: Add support for the clflushopt instruction
        x86, AVX-512: Enable AVX-512 States Context Switch
        x86, AVX-512: AVX-512 Feature Detection
      918d80a1
    • L
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 26a5c0df
      Linus Torvalds 提交于
      Pull x86 cleanups from Ingo Molnar:
       "Various smaller cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, pageattr: Correct WBINVD spelling in comment
        x86, crash: Unify ifdef
        x86, boot: Correct max ramdisk size name
      26a5c0df
    • L
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 54cad627
      Linus Torvalds 提交于
      Pull x86 build change from Ingo Molnar:
       "Explicitly disable x87 FPU instructions, to catch mistaken floating
        point use at build time, instead of crashing or misbehaving during run
        time"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Disable generation of traditional x87 instructions
      54cad627
    • L
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6ed77051
      Linus Torvalds 提交于
      Pull x86 apic changes from Ingo Molnar:
       "An xAPIC CPU hotplug race fix, plus cleanups and minor fixes"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Plug racy xAPIC access of CPU hotplug code
        x86/apic: Always define nox2apic and define it as initdata
        x86/apic: Remove unused function prototypes
        x86/apic: Switch wait_for_init_deassert() to a bool flag
        x86/apic: Only use default_wait_for_init_deassert()
      6ed77051
    • L
      Merge branch 'x86-acpi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3a88fe3b
      Linus Torvalds 提交于
      Pull x86 acpi numa fix from Ingo Molnar:
       "A single NUMA CPU hotplug fix"
      
      * 'x86-acpi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, acpi: Fix bug in associating hot-added CPUs with corresponding NUMA node
      3a88fe3b
    • L
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 971eae7c
      Linus Torvalds 提交于
      Pull scheduler changes from Ingo Molnar:
       "Bigger changes:
      
         - sched/idle restructuring: they are WIP preparation for deeper
           integration between the scheduler and idle state selection, by
           Nicolas Pitre.
      
         - add NUMA scheduling pseudo-interleaving, by Rik van Riel.
      
         - optimize cgroup context switches, by Peter Zijlstra.
      
         - RT scheduling enhancements, by Thomas Gleixner.
      
        The rest is smaller changes, non-urgnt fixes and cleanups"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (68 commits)
        sched: Clean up the task_hot() function
        sched: Remove double calculation in fix_small_imbalance()
        sched: Fix broken setscheduler()
        sparc64, sched: Remove unused sparc64_multi_core
        sched: Remove unused mc_capable() and smt_capable()
        sched/numa: Move task_numa_free() to __put_task_struct()
        sched/fair: Fix endless loop in idle_balance()
        sched/core: Fix endless loop in pick_next_task()
        sched/fair: Push down check for high priority class task into idle_balance()
        sched/rt: Fix picking RT and DL tasks from empty queue
        trace: Replace hardcoding of 19 with MAX_NICE
        sched: Guarantee task priority in pick_next_task()
        sched/idle: Remove stale old file
        sched: Put rq's sched_avg under CONFIG_FAIR_GROUP_SCHED
        cpuidle/arm64: Remove redundant cpuidle_idle_call()
        cpuidle/powernv: Remove redundant cpuidle_idle_call()
        sched, nohz: Exclude isolated cores from load balancing
        sched: Fix select_task_rq_fair() description comments
        workqueue: Replace hardcoding of -20 and 19 with MIN_NICE and MAX_NICE
        sys: Replace hardcoding of -20 and 19 with MIN_NICE and MAX_NICE
        ...
      971eae7c
    • L
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8c292f11
      Linus Torvalds 提交于
      Pull perf changes from Ingo Molnar:
       "Main changes:
      
        Kernel side changes:
      
         - Add SNB/IVB/HSW client uncore memory controller support (Stephane
           Eranian)
      
         - Fix various x86/P4 PMU driver bugs (Don Zickus)
      
        Tooling, user visible changes:
      
         - Add several futex 'perf bench' microbenchmarks (Davidlohr Bueso)
      
         - Speed up thread map generation (Don Zickus)
      
         - Introduce 'perf kvm --list-cmds' command line option for use by
           scripts (Ramkumar Ramachandra)
      
         - Print the evsel name in the annotate stdio output, prep to fix
           support outputting annotation for multiple events, not just for the
           first one (Arnaldo Carvalho de Melo)
      
         - Allow setting preferred callchain method in .perfconfig (Jiri Olsa)
      
         - Show in what binaries/modules 'perf probe's are set (Masami
           Hiramatsu)
      
         - Support distro-style debuginfo for uprobe in 'perf probe' (Masami
           Hiramatsu)
      
        Tooling, internal changes and fixes:
      
         - Use tid in mmap/mmap2 events to find maps (Don Zickus)
      
         - Record the reason for filtering an address_location (Namhyung Kim)
      
         - Apply all filters to an addr_location (Namhyung Kim)
      
         - Merge al->filtered with hist_entry->filtered in report/hists
           (Namhyung Kim)
      
         - Fix memory leak when synthesizing thread records (Namhyung Kim)
      
         - Use ui__has_annotation() in 'report' (Namhyung Kim)
      
         - hists browser refactorings to reuse code accross UIs (Namhyung Kim)
      
         - Add support for the new DWARF unwinder library in elfutils (Jiri
           Olsa)
      
         - Fix build race in the generation of bison files (Jiri Olsa)
      
         - Further streamline the feature detection display, trimming it a bit
           to show just the libraries detected, using VF=1 gets a more verbose
           output, showing the less interesting feature checks as well (Jiri
           Olsa).
      
         - Check compatible symtab type before loading dso (Namhyung Kim)
      
         - Check return value of filename__read_debuglink() (Stephane Eranian)
      
         - Move some hashing and fs related code from tools/perf/util/ to
           tools/lib/ so that it can be used by more tools/ living utilities
           (Borislav Petkov)
      
         - Prepare DWARF unwinding code for using an elfutils alternative
           unwinding library (Jiri Olsa)
      
         - Fix DWARF unwind max_stack processing (Jiri Olsa)
      
         - Add dwarf unwind 'perf test' entry (Jiri Olsa)
      
         - 'perf probe' improvements including memory leak fixes, sharing the
           intlist class with other tools, uprobes/kprobes code sharing and
           use of ref_reloc_sym (Masami Hiramatsu)
      
         - Shorten sample symbol resolving by adding cpumode to struct
           addr_location (Arnaldo Carvalho de Melo)
      
         - Fix synthesizing mmaps for threads (Don Zickus)
      
         - Fix invalid output on event group stdio report (Namhyung Kim)
      
         - Fixup header alignment in 'perf sched latency' output (Ramkumar
           Ramachandra)
      
         - Fix off-by-one error in 'perf timechart record' argv handling
           (Ramkumar Ramachandra)
      
        Tooling, cleanups:
      
         - Remove unused thread__find_map function (Jiri Olsa)
      
         - Remove unused simple_strtoul() function (Ramkumar Ramachandra)
      
        Tooling, documentation updates:
      
         - Update function names in debug messages (Ramkumar Ramachandra)
      
         - Update some code references in design.txt (Ramkumar Ramachandra)
      
         - Clarify load-latency information in the 'perf mem' docs (Andi
           Kleen)
      
         - Clarify x86 register naming in 'perf probe' docs (Andi Kleen)"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (96 commits)
        perf tools: Remove unused simple_strtoul() function
        perf tools: Update some code references in design.txt
        perf evsel: Update function names in debug messages
        perf tools: Remove thread__find_map function
        perf annotate: Print the evsel name in the stdio output
        perf report: Use ui__has_annotation()
        perf tools: Fix memory leak when synthesizing thread records
        perf tools: Use tid in mmap/mmap2 events to find maps
        perf report: Merge al->filtered with hist_entry->filtered
        perf symbols: Apply all filters to an addr_location
        perf symbols: Record the reason for filtering an address_location
        perf sched: Fixup header alignment in 'latency' output
        perf timechart: Fix off-by-one error in 'record' argv handling
        perf machine: Factor machine__find_thread to take tid argument
        perf tools: Speed up thread map generation
        perf kvm: introduce --list-cmds for use by scripts
        perf ui hists: Pass evsel to hpp->header/width functions explicitly
        perf symbols: Introduce thread__find_cpumode_addr_location
        perf session: Change header.misc dump from decimal to hex
        perf ui/tui: Reuse generic __hpp__fmt() code
        ...
      8c292f11
    • L
      Merge branch 'core-types-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d31605dc
      Linus Torvalds 提交于
      Pull hweight type fix from Ingo Molnar:
       "This lone commit makes sure that __const_hweight8() is unsigned, which
        addresses a build warning if code is built with -Wsign-compare.
      
        I hope the type cast in this cleanup is fine - another option would be
        to eliminate the double unary negation and use a construct with more
        obvious integer type characteristics, along the lines of:
      
              ((w) & (1ULL << 1) ? 1U : 0U)
      
        or so"
      
      * 'core-types-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        bitops: Fix signedness of compile-time hweight implementations
      d31605dc
    • L
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b3fd4ea9
      Linus Torvalds 提交于
      Pull RCU updates from Ingo Molnar:
       "Main changes:
      
         - Torture-test changes, including refactoring of rcutorture and
           introduction of a vestigial locktorture.
      
         - Real-time latency fixes.
      
         - Documentation updates.
      
         - Miscellaneous fixes"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (77 commits)
        rcu: Provide grace-period piggybacking API
        rcu: Ensure kernel/rcu/rcu.h can be sourced/used stand-alone
        rcu: Fix sparse warning for rcu_expedited from kernel/ksysfs.c
        notifier: Substitute rcu_access_pointer() for rcu_dereference_raw()
        Documentation/memory-barriers.txt: Clarify release/acquire ordering
        rcutorture: Save kvm.sh output to log
        rcutorture: Add a lock_busted to test the test
        rcutorture: Place kvm-test-1-run.sh output into res directory
        rcutorture: Rename TREE_RCU-Kconfig.txt
        locktorture: Add kvm-recheck.sh plug-in for locktorture
        rcutorture: Gracefully handle NULL cleanup hooks
        locktorture: Add vestigial locktorture configuration
        rcutorture: Introduce "rcu" directory level underneath configs
        rcutorture: Rename kvm-test-1-rcu.sh
        rcutorture: Remove RCU dependencies from ver_functions.sh API
        rcutorture: Create CFcommon file for common Kconfig parameters
        rcutorture: Create config files for scripted test-the-test testing
        rcutorture: Add an rcu_busted to test the test
        locktorture: Add a lock-torture kernel module
        rcutorture: Abstract kvm-recheck.sh
        ...
      b3fd4ea9
    • L
      Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 462bf234
      Linus Torvalds 提交于
      Pull core locking updates from Ingo Molnar:
       "The biggest change is the MCS spinlock generalization changes from Tim
        Chen, Peter Zijlstra, Jason Low et al.  There's also lockdep
        fixes/enhancements from Oleg Nesterov, in particular a false negative
        fix related to lockdep_set_novalidate_class() usage"
      
      * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
        locking/mutex: Fix debug checks
        locking/mutexes: Add extra reschedule point
        locking/mutexes: Introduce cancelable MCS lock for adaptive spinning
        locking/mutexes: Unlock the mutex without the wait_lock
        locking/mutexes: Modify the way optimistic spinners are queued
        locking/mutexes: Return false if task need_resched() in mutex_can_spin_on_owner()
        locking: Move mcs_spinlock.h into kernel/locking/
        m68k: Skip futex_atomic_cmpxchg_inatomic() test
        futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test
        Revert "sched/wait: Suppress Sparse 'variable shadowing' warning"
        lockdep: Change lockdep_set_novalidate_class() to use _and_name
        lockdep: Change mark_held_locks() to check hlock->check instead of lockdep_no_validate
        lockdep: Don't create the wrong dependency on hlock->check == 0
        lockdep: Make held_lock->check and "int check" argument bool
        locking/mcs: Allow architecture specific asm files to be used for contended case
        locking/mcs: Order the header files in Kbuild of each architecture in alphabetical order
        sched/wait: Suppress Sparse 'variable shadowing' warning
        hung_task/Documentation: Fix hung_task_warnings description
        locking/mcs: Allow architectures to hook in to contended paths
        locking/mcs: Micro-optimize the MCS code, add extra comments
        ...
      462bf234
  3. 31 3月, 2014 3 次提交