21 Jan, 2016

2 commits

  • Move the generic implementation to now that all
    architectures support it and remove the HAVE_DMA_ATTR Kconfig symbol now
    that everyone supports them.

    [valentinrothberg@gmail.com: remove leftovers in Kconfig]
    Signed-off-by: Christoph Hellwig
    Cc: "David S. Miller"
    Cc: Aurelien Jacquiot
    Cc: Chris Metcalf
    Cc: David Howells
    Cc: Geert Uytterhoeven
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Helge Deller
    Cc: James Hogan
    Cc: Jesper Nilsson
    Cc: Koichi Yasutake
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Mikael Starvik
    Cc: Steven Miao
    Cc: Vineet Gupta
    Cc: Christian Borntraeger
    Cc: Joerg Roedel
    Cc: Sebastian Ott
    Signed-off-by: Valentin Rothberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Commits 21f55b018ba5 ("arch/*/include/uapi/asm/mman.h: : let MADV_FREE
    have same value for all architectures") and ef58978f1eaa ("mm: define
    MADV_FREE for some arches") both defined MADV_FREE, but did not use the
    same values. This results in build errors such as

    ./arch/alpha/include/uapi/asm/mman.h:53:0: error: "MADV_FREE" redefined
    ./arch/alpha/include/uapi/asm/mman.h:50:0: note: this is the location of the previous definition

    for the affected architectures.

    Fixes: 21f55b018ba5 ("arch/*/include/uapi/asm/mman.h: : let MADV_FREE have same value for all architectures")
    Fixes: ef58978f1eaa ("mm: define MADV_FREE for some arches")
    Signed-off-by: Guenter Roeck
    Cc: Chen Gang
    Cc: Minchan Kim
    Acked-by: Helge Deller [parisc]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Guenter Roeck
     

16 Jan, 2016

2 commits

  • For uapi, need try to let all macros have same value, and MADV_FREE is
    added into main branch recently, so need redefine MADV_FREE for it.

    At present, '8' can be shared with all architectures, so redefine it to
    '8'.

    [sudipm.mukherjee@gmail.com: correct uniform value of MADV_FREE]
    Signed-off-by: Chen Gang
    Signed-off-by: Minchan Kim
    Acked-by: Hugh Dickins
    Cc: Ralf Baechle
    Cc: Arnd Bergmann
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: Roland Dreier
    Cc: Darrick J. Wong
    Cc: David S. Miller
    Cc: "Kirill A. Shutemov"
    Cc: Shaohua Li
    Cc:
    Cc: Andrea Arcangeli
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Benjamin Herrenschmidt
    Cc: Catalin Marinas
    Cc: Daniel Micay
    Cc: Jason Evans
    Cc: Johannes Weiner
    Cc: KOSAKI Motohiro
    Cc: Kirill A. Shutemov
    Cc: Mel Gorman
    Cc: Michael Kerrisk
    Cc: Michal Hocko
    Cc: Mika Penttil
    Cc: Rik van Riel
    Cc: Russell King
    Cc: Shaohua Li
    Cc: Will Deacon
    Cc: Wu Fengguang
    Signed-off-by: Sudip Mukherjee
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chen Gang
     
  • Most architectures use asm-generic, but alpha, mips, parisc, xtensa need
    their own definitions.

    This patch defines MADV_FREE for them so it should fix build break for
    their architectures.

    Maybe, I should split and feed pieces to arch maintainers but included
    here for mmotm convenience.

    [gang.chen.5i5j@gmail.com: let MADV_FREE have same value for all architectures]
    Signed-off-by: Minchan Kim
    Acked-by: Max Filippov
    Cc: Wu Fengguang
    Cc: Michael Kerrisk
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Ralf Baechle
    Cc: Chris Zankel
    Cc: "Kirill A. Shutemov"
    Cc: Shaohua Li
    Cc:
    Cc: Andrea Arcangeli
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Benjamin Herrenschmidt
    Cc: Catalin Marinas
    Cc: Chen Gang
    Cc: Daniel Micay
    Cc: Darrick J. Wong
    Cc: David S. Miller
    Cc: Hugh Dickins
    Cc: Jason Evans
    Cc: Johannes Weiner
    Cc: KOSAKI Motohiro
    Cc: Kirill A. Shutemov
    Cc: Matt Turner
    Cc: Mel Gorman
    Cc: Michal Hocko
    Cc: Mika Penttil
    Cc: Rik van Riel
    Cc: Roland Dreier
    Cc: Russell King
    Cc: Shaohua Li
    Cc: Will Deacon
    Signed-off-by: Chen Gang
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Minchan Kim
     

15 Jan, 2016

1 commit

  • Pull livepatching updates from Jiri Kosina:

    - RO/NX attribute fixes for patch module relocations from Josh
    Poimboeuf. As part of this effort, module.c has been cleaned up as
    well and livepatching is piggy-backing on this cleanup. Rusty is OK
    with this whole lot going through livepatching tree.

    - symbol disambiguation support from Chris J Arges. That series is
    also

    Reviewed-by: Miroslav Benes

    but this came in only after I've alredy pushed out. Didn't want to
    rebase because of that, hence I am mentioning it here.

    - symbol lookup fix from Miroslav Benes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch: Cleanup module page permission changes
    module: keep percpu symbols in module's symtab
    module: clean up RO/NX handling.
    module: use a structure to encapsulate layout.
    gcov: use within_module() helper.
    module: Use the same logic for setting and unsetting RO/NX
    livepatch: function,sympos scheme in livepatch sysfs directory
    livepatch: add sympos as disambiguator field to klp_reloc
    livepatch: add old_sympos as disambiguator field to klp_func

    Linus Torvalds
     

05 Jan, 2016

1 commit

  • Expose socket options for setting a classic or extended BPF program
    for use when selecting sockets in an SO_REUSEPORT group. These options
    can be used on the first socket to belong to a group before bind or
    on any socket in the group after bind.

    This change includes refactoring of the existing sk_filter code to
    allow reuse of the existing BPF filter validation checks.

    Signed-off-by: Craig Gallek
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Craig Gallek
     

05 Dec, 2015

1 commit

  • Makes it easier to handle init vs core cleanly, though the change is
    fairly invasive across random architectures.

    It simplifies the rbtree code immediately, however, while keeping the
    core data together in the same cachline (now iff the rbtree code is
    enabled).

    Acked-by: Peter Zijlstra
    Reviewed-by: Josh Poimboeuf
    Signed-off-by: Rusty Russell
    Signed-off-by: Jiri Kosina

    Rusty Russell
     

06 Nov, 2015

1 commit

  • The previous patch introduced a flag that specified pages in a VMA should
    be placed on the unevictable LRU, but they should not be made present when
    the area is created. This patch adds the ability to set this state via
    the new mlock system calls.

    We add MLOCK_ONFAULT for mlock2 and MCL_ONFAULT for mlockall.
    MLOCK_ONFAULT will set the VM_LOCKONFAULT modifier for VM_LOCKED.
    MCL_ONFAULT should be used as a modifier to the two other mlockall flags.
    When used with MCL_CURRENT, all current mappings will be marked with
    VM_LOCKED | VM_LOCKONFAULT. When used with MCL_FUTURE, the mm->def_flags
    will be marked with VM_LOCKED | VM_LOCKONFAULT. When used with both
    MCL_CURRENT and MCL_FUTURE, all current mappings and mm->def_flags will be
    marked with VM_LOCKED | VM_LOCKONFAULT.

    Prior to this patch, mlockall() will unconditionally clear the
    mm->def_flags any time it is called without MCL_FUTURE. This behavior is
    maintained after adding MCL_ONFAULT. If a call to mlockall(MCL_FUTURE) is
    followed by mlockall(MCL_CURRENT), the mm->def_flags will be cleared and
    new VMAs will be unlocked. This remains true with or without MCL_ONFAULT
    in either mlockall() invocation.

    munlock() will unconditionally clear both vma flags. munlockall()
    unconditionally clears for VMA flags on all VMAs and in the mm->def_flags
    field.

    Signed-off-by: Eric B Munson
    Acked-by: Michal Hocko
    Acked-by: Vlastimil Babka
    Cc: Jonathan Corbet
    Cc: Catalin Marinas
    Cc: Geert Uytterhoeven
    Cc: Guenter Roeck
    Cc: Heiko Carstens
    Cc: Kirill A. Shutemov
    Cc: Michael Kerrisk
    Cc: Ralf Baechle
    Cc: Shuah Khan
    Cc: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric B Munson
     

20 Oct, 2015

1 commit


07 Oct, 2015

1 commit


06 Oct, 2015

1 commit


26 Sep, 2015

1 commit

  • Pull PCI fixes from Bjorn Helgaas:
    "These are fixes for things we merged for v4.3 (VPD, MSI, and bridge
    window management), and a new Renesas R8A7794 SoC device ID.

    Details:

    Resource management:
    - Revert pci_read_bridge_bases() unification (Bjorn Helgaas)
    - Clear IORESOURCE_UNSET when clipping a bridge window (Bjorn
    Helgaas)

    MSI:
    - Fix MSI IRQ domains for VFs on virtual buses (Alex Williamson)

    Renesas R-Car host bridge driver:
    - Add R8A7794 support (Sergei Shtylyov)

    Miscellaneous:
    - Fix devfn for VPD access through function 0 (Alex Williamson)
    - Use function 0 VPD only for identical functions (Alex Williamson)"

    * tag 'pci-v4.3-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: rcar: Add R8A7794 support
    PCI: Use function 0 VPD for identical functions, regular VPD for others
    PCI: Fix devfn for VPD access through function 0
    PCI/MSI: Fix MSI IRQ domains for VFs on virtual buses
    PCI: Clear IORESOURCE_UNSET when clipping a bridge window
    PCI: Revert "PCI: Call pci_read_bridge_bases() from core instead of arch code"

    Linus Torvalds
     

23 Sep, 2015

1 commit

  • This patch makes sure that atomic_{read,set}() are at least
    {READ,WRITE}_ONCE().

    We already had the 'requirement' that atomic_read() should use
    ACCESS_ONCE(), and most archs had this, but a few were lacking.
    All are now converted to use READ_ONCE().

    And, by a symmetry and general paranoia argument, upgrade atomic_set()
    to use WRITE_ONCE().

    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Andrew Morton
    Cc: Dmitry Vyukov
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: james.hogan@imgtec.com
    Cc: linux-kernel@vger.kernel.org
    Cc: oleg@redhat.com
    Cc: will.deacon@arm.com
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

18 Sep, 2015

3 commits

  • Pull irq updates from Thomas Gleixner:
    "This is a rather large update post rc1 due to the final steps of
    cleanups and API changes which had to wait for the preparatory patches
    to hit your tree.

    - Regression fixes for ARM GIC irqchips

    - Regression fixes and lockdep anotations for renesas irq chips

    - The leftovers of the cleanup and preparatory patches which have
    been ignored by maintainers

    - Final conversions of the newly merged users of obsolete APIs

    - Final removal of obsolete APIs

    - Final removal of ARM artifacts which had been introduced during the
    conversion of ARM to the generic interrupt code.

    - Final split of the irq_data into chip specific and common data to
    reflect the needs of hierarchical irq domains.

    - Treewide removal of the first argument of interrupt flow handlers,
    i.e. the irq number, which is not used by the majority of handlers
    and simple to retrieve from the other argument the irq descriptor.

    - A few comment updates and build warning fixes"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
    arm64: Remove ununsed set_irq_flags
    ARM: Remove ununsed set_irq_flags
    sh: Kill off set_irq_flags usage
    irqchip: Kill off set_irq_flags usage
    gpu/drm: Kill off set_irq_flags usage
    genirq: Remove irq argument from irq flow handlers
    genirq: Move field 'msi_desc' from irq_data into irq_common_data
    genirq: Move field 'affinity' from irq_data into irq_common_data
    genirq: Move field 'handler_data' from irq_data into irq_common_data
    genirq: Move field 'node' from irq_data into irq_common_data
    irqchip/gic-v3: Use IRQD_FORWARDED_TO_VCPU flag
    irqchip/gic: Use IRQD_FORWARDED_TO_VCPU flag
    genirq: Provide IRQD_FORWARDED_TO_VCPU status flag
    genirq: Simplify irq_data_to_desc()
    genirq: Remove __irq_set_handler_locked()
    pinctrl/pistachio: Use irq_set_handler_locked
    gpio: vf610: Use irq_set_handler_locked
    powerpc/mpc8xx: Use irq_set_handler_locked()
    powerpc/ipic: Use irq_set_handler_locked()
    powerpc/cpm2: Use irq_set_handler_locked()
    ...

    Linus Torvalds
     
  • __delay was not exported as a result while building with allmodconfig we
    were getting build error of undefined symbol. __delay is being used by:
    drivers/net/phy/mdio-octeon.c

    Signed-off-by: Sudip Mukherjee
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sudip Mukherjee
     
  • ioremap_uc was not defined and as a result while building with
    allmodconfig were getting build error of: implicit declaration of
    function 'ioremap_uc'.

    Signed-off-by: Sudip Mukherjee
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sudip Mukherjee
     

16 Sep, 2015

2 commits

  • Most interrupt flow handlers do not use the irq argument. Those few
    which use it can retrieve the irq number from the irq descriptor.

    Remove the argument.

    Search and replace was done with coccinelle and some extra helper
    scripts around it. Thanks to Julia for her help!

    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Jiang Liu

    Thomas Gleixner
     
  • Revert dff22d2054b5 ("PCI: Call pci_read_bridge_bases() from core instead
    of arch code").

    Reading PCI bridge windows is not arch-specific in itself, but there is PCI
    core code that doesn't work correctly if we read them too early. For
    example, Hannes found this case on an ARM Freescale i.mx6 board:

    pci_bus 0000:00: root bus resource [mem 0x01000000-0x01efffff]
    pci 0000:00:00.0: PCI bridge to [bus 01-ff]
    pci 0000:00:00.0: BAR 8: no space for [mem size 0x01000000] (mem window)
    pci 0000:01:00.0: BAR 2: failed to assign [mem size 0x00200000]
    pci 0000:01:00.0: BAR 1: failed to assign [mem size 0x00004000]
    pci 0000:01:00.0: BAR 0: failed to assign [mem size 0x00000100]

    The 00:00.0 mem window needs to be at least 3MB: the 01:00.0 device needs
    0x204100 of space, and mem windows are megabyte-aligned.

    Bus sizing can increase a bridge window size, but never *decrease* it (see
    d65245c3297a ("PCI: don't shrink bridge resources")). Prior to
    dff22d2054b5, ARM didn't read bridge windows at all, so the "original size"
    was zero, and we assigned a 3MB window.

    After dff22d2054b5, we read the bridge windows before sizing the bus. The
    firmware programmed a 16MB window (size 0x01000000) in 00:00.0, and since
    we never decrease the size, we kept 16MB even though we only needed 3MB.
    But 16MB doesn't fit in the host bridge aperture, so we failed to assign
    space for the window and the downstream devices.

    I think this is a defect in the PCI core: we shouldn't rely on the firmware
    to assign sensible windows.

    Ray reported a similar problem, also on ARM, with Broadcom iProc.

    Issues like this are too hard to fix right now, so revert dff22d2054b5.

    Reported-by: Hannes
    Reported-by: Ray Jui
    Link: http://lkml.kernel.org/r/CAAa04yFQEUJm7Jj1qMT57-LG7ZGtnhNDBe=PpSRa70Mj+XhW-A@mail.gmail.com
    Link: http://lkml.kernel.org/r/55F75BB8.4070405@broadcom.com
    Signed-off-by: Bjorn Helgaas
    Acked-by: Yinghai Lu
    Acked-by: Lorenzo Pieralisi

    Bjorn Helgaas
     

11 Sep, 2015

5 commits

  • Almost everyone implements dma_set_mask the same way, although some time
    that's hidden in ->set_dma_mask methods.

    This patch consolidates those into a common implementation that either
    calls ->set_dma_mask if present or otherwise uses the default
    implementation. Some architectures used to only call ->set_dma_mask
    after the initial checks, and those instance have been fixed to do the
    full work. h8300 implemented dma_set_mask bogusly as a no-ops and has
    been fixed.

    Unfortunately some architectures overload unrelated semantics like changing
    the dma_ops into it so we still need to allow for an architecture override
    for now.

    [jcmvbkbc@gmail.com: fix xtensa]
    Signed-off-by: Christoph Hellwig
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Jonas Bonn
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Andy Shevchenko
    Signed-off-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Most architectures just call into ->dma_supported, but some also return 1
    if the method is not present, or 0 if no dma ops are present (although
    that should never happeb). Consolidate this more broad version into
    common code.

    Also fix h8300 which inorrectly always returned 0, which would have been
    a problem if it's dma_set_mask implementation wasn't a similarly buggy
    noop.

    As a few architectures have much more elaborate implementations, we
    still allow for arch overrides.

    [jcmvbkbc@gmail.com: fix xtensa]
    Signed-off-by: Christoph Hellwig
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Jonas Bonn
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Andy Shevchenko
    Signed-off-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Currently there are three valid implementations of dma_mapping_error:

    (1) call ->mapping_error
    (2) check for a hardcoded error code
    (3) always return 0

    This patch provides a common implementation that calls ->mapping_error
    if present, then checks for DMA_ERROR_CODE if defined or otherwise
    returns 0.

    [jcmvbkbc@gmail.com: fix xtensa]
    Signed-off-by: Christoph Hellwig
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Jonas Bonn
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Andy Shevchenko
    Signed-off-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Most architectures do not support non-coherent allocations and either
    define dma_{alloc,free}_noncoherent to their coherent versions or stub
    them out.

    Openrisc uses dma_{alloc,free}_attrs to implement them, and only Mips
    implements them directly.

    This patch moves the Openrisc version to common code, and handles the
    DMA_ATTR_NON_CONSISTENT case in the mips dma_map_ops instance.

    Note that actual non-coherent allocations require a dma_cache_sync
    implementation, so if non-coherent allocations didn't work on
    an architecture before this patch they still won't work after it.

    [jcmvbkbc@gmail.com: fix xtensa]
    Signed-off-by: Christoph Hellwig
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Jonas Bonn
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Andy Shevchenko
    Signed-off-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Since 2009 we have a nice asm-generic header implementing lots of DMA API
    functions for architectures using struct dma_map_ops, but unfortunately
    it's still missing a lot of APIs that all architectures still have to
    duplicate.

    This series consolidates the remaining functions, although we still need
    arch opt outs for two of them as a few architectures have very
    non-standard implementations.

    This patch (of 5):

    The coherent DMA allocator works the same over all architectures supporting
    dma_map operations.

    This patch consolidates them and converges the minor differences:

    - the debug_dma helpers are now called from all architectures, including
    those that were previously missing them
    - dma_alloc_from_coherent and dma_release_from_coherent are now always
    called from the generic alloc/free routines instead of the ops
    dma-mapping-common.h always includes dma-coherent.h to get the defintions
    for them, or the stubs if the architecture doesn't support this feature
    - checks for ->alloc / ->free presence are removed. There is only one
    magic instead of dma_map_ops without them (mic_dma_ops) and that one
    is x86 only anyway.

    Besides that only x86 needs special treatment to replace a default devices
    if none is passed and tweak the gfp_flags. An optional arch hook is provided
    for that.

    [linux@roeck-us.net: fix build]
    [jcmvbkbc@gmail.com: fix xtensa]
    Signed-off-by: Christoph Hellwig
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: Jonas Bonn
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Andy Shevchenko
    Signed-off-by: Guenter Roeck
    Signed-off-by: Max Filippov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

04 Sep, 2015

1 commit

  • Pull locking and atomic updates from Ingo Molnar:
    "Main changes in this cycle are:

    - Extend atomic primitives with coherent logic op primitives
    (atomic_{or,and,xor}()) and deprecate the old partial APIs
    (atomic_{set,clear}_mask())

    The old ops were incoherent with incompatible signatures across
    architectures and with incomplete support. Now every architecture
    supports the primitives consistently (by Peter Zijlstra)

    - Generic support for 'relaxed atomics':

    - _acquire/release/relaxed() flavours of xchg(), cmpxchg() and {add,sub}_return()
    - atomic_read_acquire()
    - atomic_set_release()

    This came out of porting qwrlock code to arm64 (by Will Deacon)

    - Clean up the fragile static_key APIs that were causing repeat bugs,
    by introducing a new one:

    DEFINE_STATIC_KEY_TRUE(name);
    DEFINE_STATIC_KEY_FALSE(name);

    which define a key of different types with an initial true/false
    value.

    Then allow:

    static_branch_likely()
    static_branch_unlikely()

    to take a key of either type and emit the right instruction for the
    case. To be able to know the 'type' of the static key we encode it
    in the jump entry (by Peter Zijlstra)

    - Static key self-tests (by Jason Baron)

    - qrwlock optimizations (by Waiman Long)

    - small futex enhancements (by Davidlohr Bueso)

    - ... and misc other changes"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (63 commits)
    jump_label/x86: Work around asm build bug on older/backported GCCs
    locking, ARM, atomics: Define our SMP atomics in terms of _relaxed() operations
    locking, include/llist: Use linux/atomic.h instead of asm/cmpxchg.h
    locking/qrwlock: Make use of _{acquire|release|relaxed}() atomics
    locking/qrwlock: Implement queue_write_unlock() using smp_store_release()
    locking/lockref: Remove homebrew cmpxchg64_relaxed() macro definition
    locking, asm-generic: Add _{relaxed|acquire|release}() variants for 'atomic_long_t'
    locking, asm-generic: Rework atomic-long.h to avoid bulk code duplication
    locking/atomics: Add _{acquire|release|relaxed}() variants of some atomic operations
    locking, compiler.h: Cast away attributes in the WRITE_ONCE() magic
    locking/static_keys: Make verify_keys() static
    jump label, locking/static_keys: Update docs
    locking/static_keys: Provide a selftest
    jump_label: Provide a self-test
    s390/uaccess, locking/static_keys: employ static_branch_likely()
    x86, tsc, locking/static_keys: Employ static_branch_likely()
    locking/static_keys: Add selftest
    locking/static_keys: Add a new static_key interface
    locking/static_keys: Rework update logic
    locking/static_keys: Add static_key_{en,dis}able() helpers
    ...

    Linus Torvalds
     

02 Sep, 2015

2 commits

  • Pull irq updates from Thomas Gleixner:
    "This updated pull request does not contain the last few GIC related
    patches which were reported to cause a regression. There is a fix
    available, but I let it breed for a couple of days first.

    The irq departement provides:

    - new infrastructure to support non PCI based MSI interrupts
    - a couple of new irq chip drivers
    - the usual pile of fixlets and updates to irq chip drivers
    - preparatory changes for removal of the irq argument from interrupt
    flow handlers
    - preparatory changes to remove IRQF_VALID"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (129 commits)
    irqchip/imx-gpcv2: IMX GPCv2 driver for wakeup sources
    irqchip: Add bcm2836 interrupt controller for Raspberry Pi 2
    irqchip: Add documentation for the bcm2836 interrupt controller
    irqchip/bcm2835: Add support for being used as a second level controller
    irqchip/bcm2835: Refactor handle_IRQ() calls out of MAKE_HWIRQ
    PCI: xilinx: Fix typo in function name
    irqchip/gic: Ensure gic_cpu_if_up/down() programs correct GIC instance
    irqchip/gic: Only allow the primary GIC to set the CPU map
    PCI/MSI: pci-xgene-msi: Consolidate chained IRQ handler install/remove
    unicore32/irq: Prepare puv3_gpio_handler for irq argument removal
    tile/pci_gx: Prepare trio_handle_level_irq for irq argument removal
    m68k/irq: Prepare irq handlers for irq argument removal
    C6X/megamode-pic: Prepare megamod_irq_cascade for irq argument removal
    blackfin: Prepare irq handlers for irq argument removal
    arc/irq: Prepare idu_cascade_isr for irq argument removal
    sparc/irq: Use access helper irq_data_get_affinity_mask()
    sparc/irq: Use helper irq_data_get_irq_handler_data()
    parisc/irq: Use access helper irq_data_get_affinity_mask()
    mn10300/irq: Use access helper irq_data_get_affinity_mask()
    irqchip/i8259: Prepare i8259_irq_dispatch for irq argument removal
    ...

    Linus Torvalds
     
  • Pull timer updates from Thomas Gleixner:
    "Rather large, but nothing exiting:

    - new range check for settimeofday() to prevent that boot time
    becomes negative.
    - fix for file time rounding
    - a few simplifications of the hrtimer code
    - fix for the proc/timerlist code so the output of clock realtime
    timers is accurate
    - more y2038 work
    - tree wide conversion of clockevent drivers to the new callbacks"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (88 commits)
    hrtimer: Handle failure of tick_init_highres() gracefully
    hrtimer: Unconfuse switch_hrtimer_base() a bit
    hrtimer: Simplify get_target_base() by returning current base
    hrtimer: Drop return code of hrtimer_switch_to_hres()
    time: Introduce timespec64_to_jiffies()/jiffies_to_timespec64()
    time: Introduce current_kernel_time64()
    time: Introduce struct itimerspec64
    time: Add the common weak version of update_persistent_clock()
    time: Always make sure wall_to_monotonic isn't positive
    time: Fix nanosecond file time rounding in timespec_trunc()
    timer_list: Add the base offset so remaining nsecs are accurate for non monotonic timers
    cris/time: Migrate to new 'set-state' interface
    kernel: broadcast-hrtimer: Migrate to new 'set-state' interface
    xtensa/time: Migrate to new 'set-state' interface
    unicore/time: Migrate to new 'set-state' interface
    um/time: Migrate to new 'set-state' interface
    sparc/time: Migrate to new 'set-state' interface
    sh/localtimer: Migrate to new 'set-state' interface
    score/time: Migrate to new 'set-state' interface
    s390/time: Migrate to new 'set-state' interface
    ...

    Linus Torvalds
     

01 Sep, 2015

2 commits

  • Pull NOHZ updates from Ingo Molnar:
    "The main changes, mostly written by Frederic Weisbecker, include:

    - Fix some jiffies based cputime assumptions. (No real harm because
    the concerned code isn't used by full dynticks.)

    - Simplify jiffies usecs conversions. Remove dead code.

    - Remove early hacks on nohz full code that avoided messing up idle
    nohz internals. Now nohz integrates well full and idle and such
    hack have become needless.

    - Restart nohz full tick from irq exit. (A simplification and a
    preparation for future optimization on scheduler kick to nohz
    full)

    - Code cleanups.

    - Tile driver isolation enhancement on top of nohz. (Chris Metcalf)"

    * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    nohz: Remove useless argument on tick_nohz_task_switch()
    nohz: Move tick_nohz_restart_sched_tick() above its users
    nohz: Restart nohz full tick from irq exit
    nohz: Remove idle task special case
    nohz: Prevent tilegx network driver interrupts
    alpha: Fix jiffies based cputime assumption
    apm32: Fix cputime == jiffies assumption
    jiffies: Remove HZ > USEC_PER_SEC special case

    Linus Torvalds
     
  • Pull PCI updates from Bjorn Helgaas:
    "PCI changes for the v4.3 merge window:

    Enumeration:
    - Allocate ATS struct during enumeration (Bjorn Helgaas)
    - Embed ATS info directly into struct pci_dev (Bjorn Helgaas)
    - Reduce size of ATS structure elements (Bjorn Helgaas)
    - Stop caching ATS Invalidate Queue Depth (Bjorn Helgaas)
    - iommu/vt-d: Cache PCI ATS state and Invalidate Queue Depth (Bjorn Helgaas)
    - Move MPS configuration check to pci_configure_device() (Bjorn Helgaas)
    - Set MPS to match upstream bridge (Keith Busch)
    - ARM/PCI: Set MPS before pci_bus_add_devices() (Murali Karicheri)
    - Add pci_scan_root_bus_msi() (Lorenzo Pieralisi)
    - ARM/PCI, designware, xilinx: Use pci_scan_root_bus_msi() (Lorenzo Pieralisi)

    Resource management:
    - Call pci_read_bridge_bases() from core instead of arch code (Lorenzo Pieralisi)

    PCI device hotplug:
    - pciehp: Remove unused interrupt events (Bjorn Helgaas)
    - pciehp: Remove ignored MRL sensor interrupt events (Bjorn Helgaas)
    - pciehp: Handle invalid data when reading from non-existent devices (Jarod Wilson)
    - pciehp: Simplify pcie_poll_cmd() (Yijing Wang)
    - Use "slot" and "pci_slot" for struct hotplug_slot and struct pci_slot (Yijing Wang)
    - Protect pci_bus->slots with pci_slot_mutex, not pci_bus_sem (Yijing Wang)
    - Hold pci_slot_mutex while searching bus->slots list (Yijing Wang)

    Power management:
    - Disable async suspend/resume for JMicron multi-function SATA/AHCI (Zhang Rui)

    Virtualization:
    - Add ACS quirks for Intel I219-LM/V (Alex Williamson)
    - Restore ACS configuration as part of pci_restore_state() (Alexander Duyck)

    MSI:
    - Add pcibios_alloc_irq() and pcibios_free_irq() (Jiang Liu)
    - x86: Implement pcibios_alloc_irq() and pcibios_free_irq() (Jiang Liu)
    - Add helpers to manage pci_dev->irq and pci_dev->irq_managed (Jiang Liu)
    - Free legacy IRQ when enabling MSI/MSI-X (Jiang Liu)
    - ARM/PCI: Remove msi_controller from struct pci_sys_data (Lorenzo Pieralisi)
    - Remove unused pcibios_msi_controller() hook (Lorenzo Pieralisi)

    Generic host bridge driver:
    - Remove dependency on ARM-specific struct hw_pci (Jayachandran C)
    - Build setup-irq.o for arm64 (Jayachandran C)
    - Add arm64 support (Jayachandran C)

    APM X-Gene host bridge driver:
    - Add APM X-Gene PCIe 64-bit prefetchable window (Duc Dang)
    - Add support for a 64-bit prefetchable memory window (Duc Dang)
    - Drop owner assignment from platform_driver (Krzysztof Kozlowski)

    Broadcom iProc host bridge driver:
    - Allow BCMA bus driver to be built as module (Hauke Mehrtens)
    - Delete unnecessary checks before phy calls (Markus Elfring)
    - Add arm64 support (Ray Jui)

    Synopsys DesignWare host bridge driver:
    - Don't complain missing *config* reg space if va_cfg0 is set (Murali Karicheri)

    TI DRA7xx host bridge driver:
    - Disable pm_runtime on get_sync failure (Kishon Vijay Abraham I)
    - Add PM support (Kishon Vijay Abraham I)
    - Clear MSE bit during suspend so clocks will idle (Kishon Vijay Abraham I)
    - Add support to make GPIO drive PERST# line (Kishon Vijay Abraham I)

    Xilinx AXI host bridge driver:
    - Check for MSI interrupt flag before handling as INTx (Russell Joyce)

    Miscellaneous:
    - Fix Intersil/Techwell TW686[4589] AV capture class code (Krzysztof Hałasa)
    - Use PCI_CLASS_SERIAL_USB instead of bare number (Bjorn Helgaas)
    - Fix generic NCR 53c810 class code quirk (Bjorn Helgaas)
    - Fix TI816X class code quirk (Bjorn Helgaas)
    - Remove unused "pci_probe" flags (Bjorn Helgaas)
    - Host bridge driver code simplifications (Fabio Estevam)
    - Add dev_flags bit to access VPD through function 0 (Mark Rustad)
    - Add VPD function 0 quirk for Intel Ethernet devices (Mark Rustad)
    - Kill off set_irq_flags() usage (Rob Herring)
    - Remove Intel Cherrytrail D3 delays (Srinidhi Kasagar)
    - Clean up pci_find_capability() (Wei Yang)"

    * tag 'pci-v4.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (72 commits)
    PCI: Disable async suspend/resume for JMicron multi-function SATA/AHCI
    PCI: Set MPS to match upstream bridge
    PCI: Move MPS configuration check to pci_configure_device()
    PCI: Drop references acquired by of_parse_phandle()
    PCI/MSI: Remove unused pcibios_msi_controller() hook
    ARM/PCI: Remove msi_controller from struct pci_sys_data
    ARM/PCI, designware, xilinx: Use pci_scan_root_bus_msi()
    PCI: Add pci_scan_root_bus_msi()
    ARM/PCI: Replace panic with WARN messages on failures
    PCI: generic: Add arm64 support
    PCI: Build setup-irq.o for arm64
    PCI: generic: Remove dependency on ARM-specific struct hw_pci
    PCI: imx6: Simplify a trivial if-return sequence
    PCI: spear: Use BUG_ON() instead of condition followed by BUG()
    PCI: dra7xx: Remove unneeded use of IS_ERR_VALUE()
    PCI: Remove pci_ats_enabled()
    PCI: Stop caching ATS Invalidate Queue Depth
    PCI: Move ATS declarations to linux/pci.h so they're all together
    PCI: Clean up ATS error handling
    PCI: Use pci_physfn() rather than looking up physfn by hand
    ...

    Linus Torvalds
     

31 Aug, 2015

1 commit

  • On Alpha we have spinlocks that are 32b in size and an efficient
    cmpxchg64 implementation, so we qualify to make use of cmpxchg backed
    lockrefs. Select the ARCH_USE_CMPXCHG_LOCKREF Kconfig symbol and provide
    a trivial implementation of arch_spin_value_unlocked to satisfy the
    lockref code.

    Using Linus' simple testcase from
    http://article.gmane.org/gmane.linux.file-systems/77466 on a dual CPU
    ES47 system I see around an 8% gain:

    N Min Max Median Avg Stddev
    x 30 6194580 6295654 6272504 6272514 17694.232
    + 30 6731164 6786334 6767982 6764274 13738.863
    Difference at 95.0% confidence
    491760 +/- 8188.17
    7.83992% +/- 0.130541%
    (Student's t, pooled s = 15840.5)

    Signed-off-by: Matt Turner

    Matt Turner
     

10 Aug, 2015

1 commit

  • Migrate alpha driver to the new 'set-state' interface provided by
    clockevents core, the earlier 'set-mode' interface is marked obsolete
    now.

    This also enables us to implement callbacks for new states of clockevent
    devices, for example: ONESHOT_STOPPED.

    rtc clockevent device wasn't doing anything in set-mode and so its
    set-state callbacks aren't implemented.

    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Christoph Lameter
    Cc: linux-alpha@vger.kernel.org
    Signed-off-by: Viresh Kumar
    Signed-off-by: Daniel Lezcano

    Viresh Kumar
     

30 Jul, 2015

1 commit


29 Jul, 2015

1 commit

  • That code wrongly assumes that cputime_t wraps jiffies_t. Lets use
    the correct accessors/mutators.

    In practice there should be no harm yet because alpha currently
    only support tick based cputime accounting which is always jiffies
    based.

    Reviewed-by: Rik van Riel
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Christoph Lameter
    Cc: Ingo Molnar
    Cc; John Stultz
    Cc: Peter Zijlstra
    Cc: Preeti U Murthy
    Cc: Rik van Riel
    Cc: Thomas Gleixner
    Cc: Viresh Kumar
    Signed-off-by: Frederic Weisbecker

    Frederic Weisbecker
     

27 Jul, 2015

3 commits


23 Jul, 2015

1 commit

  • When we scan a PCI bus, we read PCI-PCI bridge window registers with
    pci_read_bridge_bases() so we can validate the resource hierarchy. Most
    architectures call pci_read_bridge_bases() from pcibios_fixup_bus(), but
    PCI-PCI bridges are not arch-specific, so this doesn't need to be in
    arch-specific code.

    Call pci_read_bridge_bases() directly from the PCI core instead of from
    arch code.

    For alpha and mips, we now call pci_read_bridge_bases() always; previously
    we only called it if PCI_PROBE_ONLY was set.

    [bhelgaas: changelog]
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bjorn Helgaas
    CC: Ralf Baechle
    CC: James E.J. Bottomley
    CC: Michael Ellerman
    CC: Bjorn Helgaas
    CC: Richard Henderson
    CC: Benjamin Herrenschmidt
    CC: David Howells
    CC: Russell King
    CC: Tony Luck
    CC: David S. Miller
    CC: Ingo Molnar
    CC: Guenter Roeck
    CC: Michal Simek
    CC: Chris Zankel

    Lorenzo Pieralisi
     

18 Jul, 2015

1 commit

  • Commit 2ae416b142b6 ("mm: new mm hook framework") introduced an empty
    header file (mm-arch-hooks.h) for every architecture, even those which
    doesn't need to define mm hooks.

    As suggested by Geert Uytterhoeven, this could be cleaned through the use
    of a generic header file included via each per architecture
    asm/include/Kbuild file.

    The PowerPC architecture is not impacted here since this architecture has
    to defined the arch_remap MM hook.

    Signed-off-by: Laurent Dufour
    Suggested-by: Geert Uytterhoeven
    Acked-by: Geert Uytterhoeven
    Acked-by: Vineet Gupta
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Laurent Dufour
     

27 Jun, 2015

1 commit

  • Pull tty/serial driver updates from Greg KH:
    "Here's the tty and serial driver patches for 4.2-rc1.

    A number of individual driver updates, some code cleanups, and other
    minor things, full details in the shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'tty-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (152 commits)
    Doc: serial-rs485.txt: update RS485 driver interface
    Doc: tty.txt: remove mention of the BKL
    MAINTAINERS: tty: add serial docs directory
    serial: sprd: check for NULL after calling devm_clk_get
    serial: 8250_pci: Correct uartclk for xr17v35x expansion chips
    serial: 8250_pci: Add support for 12 port Exar boards
    serial: 8250_uniphier: add bindings document for UniPhier UART
    serial: core: cleanup in uart_get_baud_rate()
    serial: stm32-usart: Add STM32 USART Driver
    tty/serial: kill off set_irq_flags usage
    tty: move linux/gsmmux.h to uapi
    doc: dt: add documentation for nxp,lpc1850-uart
    serial: 8250: add LPC18xx/43xx UART driver
    serial: 8250_uniphier: add UniPhier serial driver
    serial: 8250_dw: support ACPI platforms with integrated DMA engine
    serial: of_serial: check the return value of clk_prepare_enable()
    serial: of_serial: use devm_clk_get() instead of clk_get()
    serial: earlycon: Add support for big-endian MMIO accesses
    serial: sirf: use hrtimer for data rx
    serial: sirf: correct the fifo empty_bit
    ...

    Linus Torvalds
     

26 Jun, 2015

1 commit


25 Jun, 2015

1 commit

  • CRIU is recreating the process memory layout by remapping the checkpointee
    memory area on top of the current process (criu). This includes remapping
    the vDSO to the place it has at checkpoint time.

    However some architectures like powerpc are keeping a reference to the
    vDSO base address to build the signal return stack frame by calling the
    vDSO sigreturn service. So once the vDSO has been moved, this reference
    is no more valid and the signal frame built later are not usable.

    This patch serie is introducing a new mm hook framework, and a new
    arch_remap hook which is called when mremap is done and the mm lock still
    hold. The next patch is adding the vDSO remap and unmap tracking to the
    powerpc architecture.

    This patch (of 3):

    This patch introduces a new set of header file to manage mm hooks:
    - per architecture empty header file (arch/x/include/asm/mm-arch-hooks.h)
    - a generic header (include/linux/mm-arch-hooks.h)

    The architecture which need to overwrite a hook as to redefine it in its
    header file, while architecture which doesn't need have nothing to do.

    The default hooks are defined in the generic header and are used in the
    case the architecture is not defining it.

    In a next step, mm hooks defined in include/asm-generic/mm_hooks.h should
    be moved here.

    Signed-off-by: Laurent Dufour
    Suggested-by: Andrew Morton
    Cc: "Kirill A. Shutemov"
    Cc: Hugh Dickins
    Cc: Rik van Riel
    Cc: Mel Gorman
    Cc: Pavel Emelyanov
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Laurent Dufour