1. 06 Jun, 2014 4 commits
    • Joonsoo Kim's avatar
      slub: search partial list on numa_mem_id(), instead of numa_node_id() · 844e4d66
      Joonsoo Kim authored
      Currently, if allocation constraint to node is NUMA_NO_NODE, we search a
      partial slab on numa_node_id() node.  This doesn't work properly on a
      system having memoryless nodes, since it can have no memory on that node
      so there must be no partial slab on that node.
      
      On that node, page allocation always falls back to numa_mem_id() first.
      So searching a partial slab on numa_node_id() in that case is the proper
      solution for the memoryless node case.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarNishanth Aravamudan <nacc@linux.vnet.ibm.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Han Pingtian <hanpt@linux.vnet.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      844e4d66
    • Johannes Weiner's avatar
      mm: vmscan: clear kswapd's special reclaim powers before exiting · 71abdc15
      Johannes Weiner authored
      When kswapd exits, it can end up taking locks that were previously held
      by allocating tasks while they waited for reclaim.  Lockdep currently
      warns about this:
      
      On Wed, May 28, 2014 at 06:06:34PM +0800, Gu Zheng wrote:
      >  inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-R} usage.
      >  kswapd2/1151 [HC0[0]:SC0[0]:HE1:SE1] takes:
      >   (&sig->group_rwsem){+++++?}, at: exit_signals+0x24/0x130
      >  {RECLAIM_FS-ON-W} state was registered at:
      >     mark_held_locks+0xb9/0x140
      >     lockdep_trace_alloc+0x7a/0xe0
      >     kmem_cache_alloc_trace+0x37/0x240
      >     flex_array_alloc+0x99/0x1a0
      >     cgroup_attach_task+0x63/0x430
      >     attach_task_by_pid+0x210/0x280
      >     cgroup_procs_write+0x16/0x20
      >     cgroup_file_write+0x120/0x2c0
      >     vfs_write+0xc0/0x1f0
      >     SyS_write+0x4c/0xa0
      >     tracesys+0xdd/0xe2
      >  irq event stamp: 49
      >  hardirqs last  enabled at (49):  _raw_spin_unlock_irqrestore+0x36/0x70
      >  hardirqs last disabled at (48):  _raw_spin_lock_irqsave+0x2b/0xa0
      >  softirqs last  enabled at (0):  copy_process.part.24+0x627/0x15f0
      >  softirqs last disabled at (0):            (null)
      >
      >  other info that might help us debug this:
      >   Possible unsafe locking scenario:
      >
      >         CPU0
      >         ----
      >    lock(&sig->group_rwsem);
      >    <Interrupt>
      >      lock(&sig->group_rwsem);
      >
      >   *** DEADLOCK ***
      >
      >  no locks held by kswapd2/1151.
      >
      >  stack backtrace:
      >  CPU: 30 PID: 1151 Comm: kswapd2 Not tainted 3.10.39+ #4
      >  Call Trace:
      >    dump_stack+0x19/0x1b
      >    print_usage_bug+0x1f7/0x208
      >    mark_lock+0x21d/0x2a0
      >    __lock_acquire+0x52a/0xb60
      >    lock_acquire+0xa2/0x140
      >    down_read+0x51/0xa0
      >    exit_signals+0x24/0x130
      >    do_exit+0xb5/0xa50
      >    kthread+0xdb/0x100
      >    ret_from_fork+0x7c/0xb0
      
      This is because the kswapd thread is still marked as a reclaimer at the
      time of exit.  But because it is exiting, nobody is actually waiting on
      it to make reclaim progress anymore, and it's nothing but a regular
      thread at this point.  Be tidy and strip it of all its powers
      (PF_MEMALLOC, PF_SWAPWRITE, PF_KSWAPD, and the lockdep reclaim state)
      before returning from the thread function.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Reported-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Cc: Tang Chen <tangchen@cn.fujitsu.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      71abdc15
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux into next · cc07aabc
      Linus Torvalds authored
      Pull arm64 updates from Catalin Marinas:
       - Optimised assembly string/memory routines (based on the AArch64
         Cortex Strings library contributed to glibc but re-licensed under
         GPLv2)
       - Optimised crypto algorithms making use of the ARMv8 crypto extensions
         (together with kernel API for using FPSIMD instructions in interrupt
         context)
       - Ftrace support
       - CPU topology parsing from DT
       - ESR_EL1 (Exception Syndrome Register) exposed to user space signal
         handlers for SIGSEGV/SIGBUS (useful to emulation tools like Qemu)
       - 1GB section linear mapping if applicable
       - Barriers usage clean-up
       - Default pgprot clean-up
      
      Conflicts as per Catalin.
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (57 commits)
        arm64: kernel: initialize broadcast hrtimer based clock event device
        arm64: ftrace: Add system call tracepoint
        arm64: ftrace: Add CALLER_ADDRx macros
        arm64: ftrace: Add dynamic ftrace support
        arm64: Add ftrace support
        ftrace: Add arm64 support to recordmcount
        arm64: Add 'notrace' attribute to unwind_frame() for ftrace
        arm64: add __ASSEMBLY__ in asm/insn.h
        arm64: Fix linker script entry point
        arm64: lib: Implement optimized string length routines
        arm64: lib: Implement optimized string compare routines
        arm64: lib: Implement optimized memcmp routine
        arm64: lib: Implement optimized memset routine
        arm64: lib: Implement optimized memmove routine
        arm64: lib: Implement optimized memcpy routine
        arm64: defconfig: enable a few more common/useful options in defconfig
        ftrace: Make CALLER_ADDRx macros more generic
        arm64: Fix deadlock scenario with smp_send_stop()
        arm64: Fix machine_shutdown() definition
        arm64: Support arch_irq_work_raise() via self IPIs
        ...
      cc07aabc
    • Linus Torvalds's avatar
      Fix ARM merge mistake in mvebu board file · 9e47aaef
      Linus Torvalds authored
      Russell King points out that my ARM merge (commit eb3d3ec5) was
      broken wrt the arch/arm/mach-mvebu/board-v7.c file, leaving in a stale
      l2x0_of_init() call (it's now handled by the DT description).
      
      Which is kind of embarrassing, since I knew about it as it wasn't the
      only file that had similar merge issues.  At least I got the other ones
      right.
      Reported-by: default avatarRussell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9e47aaef
  2. 05 Jun, 2014 10 commits
    • Linus Torvalds's avatar
      Merge tag 'microblaze-3.16-rc1' of git://git.monstr.eu/linux-2.6-microblaze into next · 2b03adc1
      Linus Torvalds authored
      Pull Microblaze updates from Michal Simek:
       - cleanup PCI and DMA handling
       - use generic device.h
       - some cleanups
      
      * tag 'microblaze-3.16-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Fix typo in head.S s/substract/subtract/
        microblaze: remove check for CONFIG_XILINX_CONSOLE
        microblaze: Use generic device.h
        microblaze: Do not setup empty unmap_sg function
        microblaze: Remove device_to_mask
        microblaze: Clean device dma_ops structure
        microblaze: Cleanup PCI_DRAM_OFFSET handling
        microblaze: Do not setup pci_dma_ops
        microblaze: Return default dma operations
        microblaze: Enable SERIAL_OF_PLATFORM
      2b03adc1
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next · eb3d3ec5
      Linus Torvalds authored
      Pull ARM updates from Russell King:
      
       - Major clean-up of the L2 cache support code.  The existing mess was
         becoming rather unmaintainable through all the additions that others
         have done over time.  This turns it into a much nicer structure, and
         implements a few performance improvements as well.
      
       - Clean up some of the CP15 control register tweaks for alignment
         support, moving some code and data into alignment.c
      
       - DMA properties for ARM, from Santosh and reviewed by DT people.  This
         adds DT properties to specify bus translations we can't discover
         automatically, and to indicate whether devices are coherent.
      
       - Hibernation support for ARM
      
       - Make ftrace work with read-only text in modules
      
       - add suspend support for PJ4B CPUs
      
       - rework interrupt masking for undefined instruction handling, which
         allows us to enable interrupts earlier in the handling of these
         exceptions.
      
       - support for big endian page tables
      
       - fix stacktrace support to exclude stacktrace functions from the
         trace, and add save_stack_trace_regs() implementation so that kprobes
         can record stack traces.
      
       - Add support for the Cortex-A17 CPU.
      
       - Remove last vestiges of ARM710 support.
      
       - Removal of ARM "meminfo" structure, finally converting us solely to
         memblock to handle the early memory initialisation.
      
      * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (142 commits)
        ARM: ensure C page table setup code follows assembly code (part II)
        ARM: ensure C page table setup code follows assembly code
        ARM: consolidate last remaining open-coded alignment trap enable
        ARM: remove global cr_no_alignment
        ARM: remove CPU_CP15 conditional from alignment.c
        ARM: remove unused adjust_cr() function
        ARM: move "noalign" command line option to alignment.c
        ARM: provide common method to clear bits in CPU control register
        ARM: 8025/1: Get rid of meminfo
        ARM: 8060/1: mm: allow sub-architectures to override PCI I/O memory type
        ARM: 8066/1: correction for ARM patch 8031/2
        ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation
        ARM: 8065/1: remove last use of CONFIG_CPU_ARM710
        ARM: 8062/1: Modify ldrt fixup handler to re-execute the userspace instruction
        ARM: 8047/1: rwsem: use asm-generic rwsem implementation
        ARM: l2c: trial at enabling some Cortex-A9 optimisations
        ARM: l2c: add warnings for stuff modifying aux_ctrl register values
        ARM: l2c: print a warning with L2C-310 caches if the cache size is modified
        ARM: l2c: remove old .set_debug method
        ARM: l2c: kill L2X0_AUX_CTRL_MASK before anyone else makes use of this
        ...
      eb3d3ec5
    • Linus Torvalds's avatar
      Merge branch 'arm64-efi-for-linus' of... · c3c55a07
      Linus Torvalds authored
      Merge branch 'arm64-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next
      
      Pull ARM64 EFI update from Peter Anvin:
       "By agreement with the ARM64 EFI maintainers, we have agreed to make
        -tip the upstream for all EFI patches.  That is why this patchset
        comes from me :)
      
        This patchset enables EFI stub support for ARM64, like we already have
        on x86"
      
      * 'arm64-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        arm64: efi: only attempt efi map setup if booting via EFI
        efi/arm64: ignore dtb= when UEFI SecureBoot is enabled
        doc: arm64: add description of EFI stub support
        arm64: efi: add EFI stub
        doc: arm: add UEFI support documentation
        arm64: add EFI runtime services
        efi: Add shared FDT related functions for ARM/ARM64
        arm64: Add function to create identity mappings
        efi: add helper function to get UEFI params from FDT
        doc: efi-stub.txt updates for ARM
        lib: add fdt_empty_tree.c
      c3c55a07
    • Linus Torvalds's avatar
      Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next · 046f1533
      Linus Torvalds authored
      Pull x86 EFI updates from Peter Anvin:
       "A collection of EFI changes.  The perhaps most important one is to
        fully save and restore the FPU state around each invocation of EFI
        runtime, and to not choke on non-ASCII characters in the boot stub"
      
      * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efivars: Add compatibility code for compat tasks
        efivars: Refactor sanity checking code into separate function
        efivars: Stop passing a struct argument to efivar_validate()
        efivars: Check size of user object
        efivars: Use local variables instead of a pointer dereference
        x86/efi: Save and restore FPU context around efi_calls (i386)
        x86/efi: Save and restore FPU context around efi_calls (x86_64)
        x86/efi: Implement a __efi_call_virt macro
        x86, fpu: Extend the use of static_cpu_has_safe
        x86/efi: Delete most of the efi_call* macros
        efi: x86: Handle arbitrary Unicode characters
        efi: Add get_dram_base() helper function
        efi: Add shared printk wrapper for consistent prefixing
        efi: create memory map iteration helper
        efi: efi-stub-helper cleanup
      046f1533
    • Linus Torvalds's avatar
      Merge branch 'x86/vdso' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next · a0abcf2e
      Linus Torvalds authored
      Pull x86 cdso updates from Peter Anvin:
       "Vdso cleanups and improvements largely from Andy Lutomirski.  This
        makes the vdso a lot less ''special''"
      
      * 'x86/vdso' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/vdso, build: Make LE access macros clearer, host-safe
        x86/vdso, build: Fix cross-compilation from big-endian architectures
        x86/vdso, build: When vdso2c fails, unlink the output
        x86, vdso: Fix an OOPS accessing the HPET mapping w/o an HPET
        x86, mm: Replace arch_vma_name with vm_ops->name for vsyscalls
        x86, mm: Improve _install_special_mapping and fix x86 vdso naming
        mm, fs: Add vm_ops->name as an alternative to arch_vma_name
        x86, vdso: Fix an OOPS accessing the HPET mapping w/o an HPET
        x86, vdso: Remove vestiges of VDSO_PRELINK and some outdated comments
        x86, vdso: Move the vvar and hpet mappings next to the 64-bit vDSO
        x86, vdso: Move the 32-bit vdso special pages after the text
        x86, vdso: Reimplement vdso.so preparation in build-time C
        x86, vdso: Move syscall and sysenter setup into kernel/cpu/common.c
        x86, vdso: Clean up 32-bit vs 64-bit vdso params
        x86, mm: Ensure correct alignment of the fixmap
      a0abcf2e
    • Linus Torvalds's avatar
      Merge branch 'x86/espfix' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next · 2071b3e3
      Linus Torvalds authored
      Pull x86-64 espfix changes from Peter Anvin:
       "This is the espfix64 code, which fixes the IRET information leak as
        well as the associated functionality problem.  With this code applied,
        16-bit stack segments finally work as intended even on a 64-bit
        kernel.
      
        Consequently, this patchset also removes the runtime option that we
        added as an interim measure.
      
        To help the people working on Linux kernels for very small systems,
        this patchset also makes these compile-time configurable features"
      
      * 'x86/espfix' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Revert "x86-64, modify_ldt: Make support for 16-bit segments a runtime option"
        x86, espfix: Make it possible to disable 16-bit support
        x86, espfix: Make espfix64 a Kconfig option, fix UML
        x86, espfix: Fix broken header guard
        x86, espfix: Move espfix definitions into a separate header file
        x86-32, espfix: Remove filter for espfix32 due to race
        x86-64, espfix: Don't leak bits 31:16 of %esp returning to 16-bit stack
      2071b3e3
    • Linus Torvalds's avatar
      Merge branch 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next · 9df0fe64
      Linus Torvalds authored
      Pull x86 x32 ABI fix from Peter Anvin:
       "A single fix for the x32 ABI: the io_setup() and io_submit() system
        call need to use the compat stubs"
      
      * 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, x32: Use compat shims for io_{setup,submit}
      9df0fe64
    • Russell King's avatar
      Merge branch 'devel-stable' into for-next · bd63ce27
      Russell King authored
      bd63ce27
    • Russell King's avatar
    • Antonio Ospite's avatar
      microblaze: Fix typo in head.S s/substract/subtract/ · 225fba21
      Antonio Ospite authored
      Signed-off-by: default avatarAntonio Ospite <ao2@ao2.it>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
      Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
      225fba21
  3. 04 Jun, 2014 26 commits