21 Jan, 2016

37 commits

  • Make initrd_load() return bool due to this particular function only using
    either one or zero as its return value.

    No functional change.

    Signed-off-by: Yaowei Bai
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yaowei Bai
     
  • Make obsolete_checksetup() return bool due to this particular function
    only using either one or zero as its return value.

    No functional change.

    Signed-off-by: Yaowei Bai
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yaowei Bai
     
  • Currently, epoll file descriptors or epfds (the fd returned from
    epoll_create[1]()) that are added to a shared wakeup source are always
    added in a non-exclusive manner. This means that when we have multiple
    epfds attached to a shared fd source they are all woken up. This creates
    thundering herd type behavior.

    Introduce a new 'EPOLLEXCLUSIVE' flag that can be passed as part of the
    'event' argument during an epoll_ctl() EPOLL_CTL_ADD operation. This new
    flag allows for exclusive wakeups when there are multiple epfds attached
    to a shared fd event source.

    The implementation walks the list of exclusive waiters, and queues an
    event to each epfd, until it finds the first waiter that has threads
    blocked on it via epoll_wait(). The idea is to search for threads which
    are idle and ready to process the wakeup events. Thus, we queue an event
    to at least 1 epfd, but may still potentially queue an event to all epfds
    that are attached to the shared fd source.

    Performance testing was done by Madars Vitolins using a modified version
    of Enduro/X. The use of the 'EPOLLEXCLUSIVE' flag reduce the length of
    this particular workload from 860s down to 24s.

    Sample epoll_clt text:

    EPOLLEXCLUSIVE

    Sets an exclusive wakeup mode for the epfd file descriptor that is
    being attached to the target file descriptor, fd. Thus, when an event
    occurs and multiple epfd file descriptors are attached to the same
    target file using EPOLLEXCLUSIVE, one or more epfds will receive an
    event with epoll_wait(2). The default in this scenario (when
    EPOLLEXCLUSIVE is not set) is for all epfds to receive an event.
    EPOLLEXCLUSIVE may only be specified with the op EPOLL_CTL_ADD.

    Signed-off-by: Jason Baron
    Tested-by: Madars Vitolins
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Al Viro
    Cc: Michael Kerrisk
    Cc: Eric Wong
    Cc: Jonathan Corbet
    Cc: Andy Lutomirski
    Cc: Hagen Paul Pfeifer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jason Baron
     
  • A simple search over the kernel souce displays a number of correctly
    defined multiline macro, which generally are used as an array element
    initializer:

    % find ../linux -type f | xargs grep -B1 -H '^[:space]*\[.*\\$'

    However checkpatch.pl unexpectedly complains about all these macro
    definitions:

    % ./scripts/checkpatch.pl --types COMPLEX_MACRO -f include/linux/perf/arm_pmu.h

    ERROR: Macros with complex values should be enclosed in parentheses
    +#define PERF_MAP_ALL_UNSUPPORTED \
    + [0 ... PERF_COUNT_HW_MAX - 1] = HW_OP_UNSUPPORTED

    The change intends to fix this type of false positives by flattening
    only array members and skipping array element designators.

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Joe Perches
    Cc: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Zapolskiy
     
  • The current test excludes any macro with ## concatenation from being
    reported with hidden flow control.

    Some macros are used with return or goto statements along with ##args or
    ##__VA_ARGS__. A somewhat common case is a logging macro like
    pr_info(fmt, ...) then a return or goto statement.

    Check the concatenated variable for args or __VA_ARGS__ and allow those
    macros to also be reported when they contain a return or goto.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Linus Torvalds wrote:

    > I can't but help to react that this:
    > #define IOMMU_ERROR_CODE (~(unsigned long) 0)
    > Not that this *matters*, but it's a bit odd to have to cast constants
    > to perfectly regular C types.

    So add a test that looks for constants that are cast to
    standard C90 int or longer types and suggest using C90
    "6.4.4.1 Integer constants" integer-suffixes instead.

    Miscellanea:

    o Add a --fix option too

    Signed-off-by: Joe Perches
    Suggested-by: Andrew Morton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • The clz table (__clz_tab) in lib/clz_tab.c is also provided as part of
    libgcc.a, and many architectures link against libgcc. To allow the
    linker to avoid a multiple-definition link failure, clz_tab.o has to be
    in lib/lib.a rather than lib/builtin.o. The specific issue is that
    libgcc.a comes before lib/builtin.o on vmlinux.o's link command line, so
    its _clz.o is pulled to satisfy __clz_tab, and then when the remainder
    of lib/builtin.o is pulled in to satisfy all the other dependencies, the
    __clz_tab symbols conflict. By putting clz_tab.o in lib.a, the linker
    can simply avoid pulling it into vmlinux.o when this situation arises.

    The definitions of __clz_tab are the same in libgcc.a and in the kernel;
    arguably we could also simply rename the kernel version, but it's
    unlikely the libgcc version will ever change to become incompatible, so
    just using it seems reasonably safe.

    Signed-off-by: Chris Metcalf
    Acked-by: David S. Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Metcalf
     
  • This text refers to the "first 7 functions", which was correct when
    written but became incorrect when Johannes Weiner added another function
    to the list in 139e561660fe ("lib: radix_tree: tree node interface").

    Change the text to correctly refer to the first 8 functions.

    Signed-off-by: Adam Barth
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Barth
     
  • Like others test are doing print the gathered statistics after test module
    is finished. Return from the module based on the result.

    Signed-off-by: Andy Shevchenko
    Acked-by: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Currently the only one combination is tested for overflow, i.e. rowsize =
    16, groupsize = 1, len = 1. Do various test to go through all possible
    branches.

    Signed-off-by: Andy Shevchenko
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • After processing by hex_dump_to_buffer() check all the parts to be expected.

    Part 1. The actual expected hex dump with or without ASCII part.

    Part 2. Check if the buffer is dirty beyond needed.

    Part 3. Return code should be as expected.

    This is done by using comparison of the return code and memcmp() against
    the test buffer. We fill the buffer by FILL_CHAR ('#') characters, so, we
    expect to have a tail of the buffer will be left untouched. The
    terminating NUL is also checked by memcmp().

    Signed-off-by: Andy Shevchenko
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Better to use memcmp() against entire buffer to check that nothing is
    happened to the data in the tail.

    Signed-off-by: Andy Shevchenko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • The magic numbers of the length are converted to their actual meaning,
    such as end of the buffer with and without ASCII part.

    We don't touch the rest of the magic constants that will be removed in the
    following commits.

    Signed-off-by: Andy Shevchenko
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • When test for overflow do iterate the buffer length in a range 0 ..
    BUF_SIZE.

    Signed-off-by: Andy Shevchenko
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Define a character to fill the test buffers. Though the character should
    be printable since it's used when errors are reported. It should neither
    be from hex digit [a-fA-F0-9] dictionary nor space. It is recommended not
    to use one which is present in ASCII part of the test data. Later on we
    might switch to unprintable character to make test case more robust.

    Signed-off-by: Andy Shevchenko
    Suggested-by: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • The function prepares the expected result in the provided buffer.

    Signed-off-by: Andy Shevchenko
    Acked-by: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • The test suite currently doesn't cover many corner cases when
    hex_dump_to_buffer() runs into overflow. Refactor and amend test suite
    to cover most of the cases.

    This patch (of 9):

    Just to follow the scheme that most of the test modules are using.

    There is no fuctional change.

    Signed-off-by: Andy Shevchenko
    Acked-by: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Now that we have a generic library function for this, replace the
    open-coded instance.

    Signed-off-by: Stephen Boyd
    Cc: Hauke Mehrtens
    Cc:
    Cc: Paul Walmsley
    Cc: Bjorn Andersson
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • Now that we have a generic library function for this, replace the
    open-coded instance.

    Signed-off-by: Stephen Boyd
    Reviewed-by: Bjorn Andersson
    Cc:
    Cc: David Howells
    Cc: Hauke Mehrtens
    Cc: Paul Walmsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • Some drivers need to read data out of iomem areas 32-bits at a time.
    Add an API to do this.

    Signed-off-by: Stephen Boyd
    Cc: Bjorn Andersson
    Cc:
    Cc: David Howells
    Cc: Hauke Mehrtens
    Cc: Paul Walmsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • The SMD driver is reading and writing chunks of data to iomem, and
    there's an __iowrite32_copy() function for the writing part, but no
    __ioread32_copy() function for the reading part. This series adds
    __ioread32_copy() and uses it in two places.

    This patch (of 4):

    The frv port uses compiler builtins, __builtin_read*(), for the I/O read
    routines. Unfortunately, these don't accept const void pointers although
    the generic ASM implementations do, so generic code passing const pointers
    to these APIs cause compilers to emit warnings. Add wrapper functions
    that cast away the const to avoid the warnings.

    Signed-off-by: Stephen Boyd
    Cc: David Howells
    Cc:
    Cc: Bjorn Andersson
    Cc: Hauke Mehrtens
    Cc: Paul Walmsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • It was noticed that we lose precision in the final calculation for some
    inputs. The most egregious example is size=3000 blk_size=1900 in units
    of 10 should yield 5.70 MB but in fact yields 3.00 MB (oops).

    This is because the current algorithm doesn't correctly account for
    all the remainders in the logarithms. Fix this by doing a correct
    calculation in the remainders based on napier's algorithm.

    Additionally, now we have the correct result, we have to account for
    arithmetic rounding because we're printing 3 digits of precision. This
    means that if the fourth digit is five or greater, we have to round up,
    so add a section to ensure correct rounding. Finally account for all
    possible inputs correctly, including zero for block size.

    Fixes: b9f28d863594c429e1df35a0474d2663ca28b307
    Signed-off-by: James Bottomley
    Reported-by: Vitaly Kuznetsov
    Cc: [delay until after 4.4 release]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    James Bottomley
     
  • Signed-off-by: Martin Kepplinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Kepplinger
     
  • The problem is that get_maintainer.pl doesn't work if you have a ./
    prefix on the filename. For example, if you type:

    ./scripts/get_maintainer.pl -f ./drivers/usb/usb-skeleton.c

    then the current code only includes LKML and people from the git log, it
    doesn't include Greg or the linux-usb list.

    Reported-by: Dan Carpenter
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Fix build when CONFIG_SERIAL_8250=m and CONFIG_IBM_ASM=y.

    Fixes these build errors:

    drivers/built-in.o: In function `ibmasm_remove_one':
    module.c:(.text+0xf6874): undefined reference to `ibmasm_unregister_uart'
    drivers/built-in.o: In function `ibmasm_init_one':
    module.c:(.text+0xf6c37): undefined reference to `ibmasm_register_uart'

    Signed-off-by: Randy Dunlap
    Cc: Max Asbock
    Cc: Vernon Mauery
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • record_obj() in migrate_zspage() does not preserve handle's
    HANDLE_PIN_BIT, set by find_aloced_obj()->trypin_tag(), and implicitly
    (accidentally) un-pins the handle, while migrate_zspage() still performs
    an explicit unpin_tag() on the that handle. This additional explicit
    unpin_tag() introduces a race condition with zs_free(), which can pin
    that handle by this time, so the handle becomes un-pinned.

    Schematically, it goes like this:

    CPU0 CPU1
    migrate_zspage
    find_alloced_obj
    trypin_tag
    set HANDLE_PIN_BIT zs_free()
    pin_tag()
    obj_malloc() -- new object, no tag
    record_obj() -- remove HANDLE_PIN_BIT set HANDLE_PIN_BIT
    unpin_tag() -- remove zs_free's HANDLE_PIN_BIT

    The race condition may result in a NULL pointer dereference:

    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    CPU: 0 PID: 19001 Comm: CookieMonsterCl Tainted:
    PC is at get_zspage_mapping+0x0/0x24
    LR is at obj_free.isra.22+0x64/0x128
    Call trace:
    get_zspage_mapping+0x0/0x24
    zs_free+0x88/0x114
    zram_free_page+0x64/0xcc
    zram_slot_free_notify+0x90/0x108
    swap_entry_free+0x278/0x294
    free_swap_and_cache+0x38/0x11c
    unmap_single_vma+0x480/0x5c8
    unmap_vmas+0x44/0x60
    exit_mmap+0x50/0x110
    mmput+0x58/0xe0
    do_exit+0x320/0x8dc
    do_group_exit+0x44/0xa8
    get_signal+0x538/0x580
    do_signal+0x98/0x4b8
    do_notify_resume+0x14/0x5c

    This patch keeps the lock bit in migration path and update value
    atomically.

    Signed-off-by: Junil Lee
    Signed-off-by: Minchan Kim
    Acked-by: Vlastimil Babka
    Cc: Sergey Senozhatsky
    Cc: [4.1+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Junil Lee
     
  • 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
     
  • For THP=n, HPAGE_PMD_NR in smaps_account() expands to BUILD_BUG().
    That's fine since this codepath is eliminated by modern compilers.

    But older compilers have not that efficient dead code elimination. It
    causes problem at least with gcc 4.1.2 on m68k:

    fs/built-in.o: In function `smaps_account':
    task_mmu.c:(.text+0x4f8fa): undefined reference to `__compiletime_assert_471'

    Let's replace HPAGE_PMD_NR with 1 << compound_order(page).

    Signed-off-by: Kirill A. Shutemov
    Reported-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • split_queue_lock can be taken from interrupt context in some cases, but
    I forgot to convert locking in split_huge_page() to interrupt-safe
    primitives.

    Let's fix this.

    lockdep output:

    ======================================================
    [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
    4.4.0+ #259 Tainted: G W
    ------------------------------------------------------
    syz-executor/18183 [HC0[0]:SC0[2]:HE0:SE0] is trying to acquire:
    (split_queue_lock){+.+...}, at: free_transhuge_page+0x24/0x90 mm/huge_memory.c:3436

    and this task is already holding:
    (slock-AF_INET){+.-...}, at: spin_lock_bh include/linux/spinlock.h:307
    (slock-AF_INET){+.-...}, at: lock_sock_fast+0x45/0x120 net/core/sock.c:2462
    which would create a new lock dependency:
    (slock-AF_INET){+.-...} -> (split_queue_lock){+.+...}

    but this new dependency connects a SOFTIRQ-irq-safe lock:
    (slock-AF_INET){+.-...}
    ... which became SOFTIRQ-irq-safe at:
    mark_irqflags kernel/locking/lockdep.c:2799
    __lock_acquire+0xfd8/0x4700 kernel/locking/lockdep.c:3162
    lock_acquire+0x1dc/0x430 kernel/locking/lockdep.c:3585
    __raw_spin_lock include/linux/spinlock_api_smp.h:144
    _raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
    spin_lock include/linux/spinlock.h:302
    udp_queue_rcv_skb+0x781/0x1550 net/ipv4/udp.c:1680
    flush_stack+0x50/0x330 net/ipv6/udp.c:799
    __udp4_lib_mcast_deliver+0x694/0x7f0 net/ipv4/udp.c:1798
    __udp4_lib_rcv+0x17dc/0x23e0 net/ipv4/udp.c:1888
    udp_rcv+0x21/0x30 net/ipv4/udp.c:2108
    ip_local_deliver_finish+0x2b3/0xa50 net/ipv4/ip_input.c:216
    NF_HOOK_THRESH include/linux/netfilter.h:226
    NF_HOOK include/linux/netfilter.h:249
    ip_local_deliver+0x1c4/0x2f0 net/ipv4/ip_input.c:257
    dst_input include/net/dst.h:498
    ip_rcv_finish+0x5ec/0x1730 net/ipv4/ip_input.c:365
    NF_HOOK_THRESH include/linux/netfilter.h:226
    NF_HOOK include/linux/netfilter.h:249
    ip_rcv+0x963/0x1080 net/ipv4/ip_input.c:455
    __netif_receive_skb_core+0x1620/0x2f80 net/core/dev.c:4154
    __netif_receive_skb+0x2a/0x160 net/core/dev.c:4189
    netif_receive_skb_internal+0x1b5/0x390 net/core/dev.c:4217
    napi_skb_finish net/core/dev.c:4542
    napi_gro_receive+0x2bd/0x3c0 net/core/dev.c:4572
    e1000_clean_rx_irq+0x4e2/0x1100 drivers/net/ethernet/intel/e1000e/netdev.c:1038
    e1000_clean+0xa08/0x24a0 drivers/net/ethernet/intel/e1000/e1000_main.c:3819
    napi_poll net/core/dev.c:5074
    net_rx_action+0x7eb/0xdf0 net/core/dev.c:5139
    __do_softirq+0x26a/0x920 kernel/softirq.c:273
    invoke_softirq kernel/softirq.c:350
    irq_exit+0x18f/0x1d0 kernel/softirq.c:391
    exiting_irq ./arch/x86/include/asm/apic.h:659
    do_IRQ+0x86/0x1a0 arch/x86/kernel/irq.c:252
    ret_from_intr+0x0/0x20 arch/x86/entry/entry_64.S:520
    arch_safe_halt ./arch/x86/include/asm/paravirt.h:117
    default_idle+0x52/0x2e0 arch/x86/kernel/process.c:304
    arch_cpu_idle+0xa/0x10 arch/x86/kernel/process.c:295
    default_idle_call+0x48/0xa0 kernel/sched/idle.c:92
    cpuidle_idle_call kernel/sched/idle.c:156
    cpu_idle_loop kernel/sched/idle.c:252
    cpu_startup_entry+0x554/0x710 kernel/sched/idle.c:300
    rest_init+0x192/0x1a0 init/main.c:412
    start_kernel+0x678/0x69e init/main.c:683
    x86_64_start_reservations+0x2a/0x2c arch/x86/kernel/head64.c:195
    x86_64_start_kernel+0x158/0x167 arch/x86/kernel/head64.c:184

    to a SOFTIRQ-irq-unsafe lock:
    (split_queue_lock){+.+...}
    which became SOFTIRQ-irq-unsafe at:
    mark_irqflags kernel/locking/lockdep.c:2817
    __lock_acquire+0x146e/0x4700 kernel/locking/lockdep.c:3162
    lock_acquire+0x1dc/0x430 kernel/locking/lockdep.c:3585
    __raw_spin_lock include/linux/spinlock_api_smp.h:144
    _raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
    spin_lock include/linux/spinlock.h:302
    split_huge_page_to_list+0xcc0/0x1c50 mm/huge_memory.c:3399
    split_huge_page include/linux/huge_mm.h:99
    queue_pages_pte_range+0xa38/0xef0 mm/mempolicy.c:507
    walk_pmd_range mm/pagewalk.c:50
    walk_pud_range mm/pagewalk.c:90
    walk_pgd_range mm/pagewalk.c:116
    __walk_page_range+0x653/0xcd0 mm/pagewalk.c:204
    walk_page_range+0xfe/0x2b0 mm/pagewalk.c:281
    queue_pages_range+0xfb/0x130 mm/mempolicy.c:687
    migrate_to_node mm/mempolicy.c:1004
    do_migrate_pages+0x370/0x4e0 mm/mempolicy.c:1109
    SYSC_migrate_pages mm/mempolicy.c:1453
    SyS_migrate_pages+0x640/0x730 mm/mempolicy.c:1374
    entry_SYSCALL_64_fastpath+0x16/0x7a arch/x86/entry/entry_64.S:185

    other info that might help us debug this:

    Possible interrupt unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(split_queue_lock);
    local_irq_disable();
    lock(slock-AF_INET);
    lock(split_queue_lock);

    lock(slock-AF_INET);

    Signed-off-by: Kirill A. Shutemov
    Reported-by: Dmitry Vyukov
    Acked-by: David Rientjes
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • Fix the following build warning:

    lib/libcrc32c.c:42:5: warning: no previous prototype for "crc32c" [-Wmissing-prototypes]
    u32 crc32c(u32 crc, const void *address, unsigned int length)
    ^

    Signed-off-by: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • Pull dmaengine fixes from Vinod Koul:
    "Here is my second pull request for this window:

    A few driver fixes have piled up and one missed rcar bindings patch
    which got somehow lost in for-linus branch so cherry-picked that one.

    Fixes are for dw, at_hdmac, edma"

    * tag 'dmaengine-fix-4.5-rc1' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: rcar-dmac: Document SoC specific bindings
    dmaengine: at_xdmac: fix resume for cyclic transfers
    dmaengine: dw: fix cyclic transfer callbacks
    dmaengine: dw: fix cyclic transfer setup
    dmaengine: edma: Fix paRAM slot allocation for entry channel 0

    Linus Torvalds
     
  • Pull misc kbuild updates from Michal Marek:
    - Fix for make O=... perf-tar*
    - make tags revamp and fix for the fallout. Patch for warnings about
    line breaks inside DEFINE_PER_CPU macros is pending
    - New coccinelle test

    * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    coccinelle: tests: unsigned value cannot be lesser than zero
    tags: Unify emacs and exuberant rules
    tags: Drop the _PE rule
    tags: Do not try to index defconfigs
    tags: Process Kconfig files in a single pass
    tags: Fix erroneous pattern match in a comment
    aic7xxx: Avoid name collision with
    tags: Treat header files as C code
    package Makefile: fix perf-tar targets when outdir is set
    scripts/tags.sh: Teach tags about more powerpc macros

    Linus Torvalds
     
  • Pull kconfig updates from Michal Marek:
    - Fix for make xconfig segfault
    - Handle long strings in config symbol values
    - Fix for mixing boolean and kconfig ternary type

    * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kconfig: fix qconf segfault by deleting heap objects
    kconfig: return 'false' instead of 'no' in bool function
    kconfig: allow kconfig to handle longer path names

    Linus Torvalds
     
  • Pull kbuild updates from Michal Marek:
    - Make -m in makefiles work like -y and fix the
    fallout
    - Minor genksyms fix
    - Fix race with make -j install modules_install
    - Move -Wsign-compare from make W=1 to W=2
    - Other minor fixes

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: Demote 'sign-compare' warning to W=2
    Makefile: revert "Makefile: Document ability to make file.lst and file.S" partially
    kbuild: Do not run modules_install and install in paralel
    genksyms: Handle string literals with spaces in reference files
    fixdep: constify strrcmp arguments
    ath10k: Fix build with CONFIG_THERMAL=m
    Revert "drm: Hack around CONFIG_AGP=m build failures"
    kbuild: Allow to specify composite modules with modname-m
    staging/ad7606: Actually build the interface modules

    Linus Torvalds
     
  • Mark the FRV architecture orphaned in the MAINTAINERS file.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Update the mailing list used for development of support for
    Renesas SoCs and related drivers.

    Up until now the linux-sh mailing list has been used, however,
    Renesas SoCs are now much wider than the SH architecture and there
    is some desire from some for the linux-sh list to refocus on
    discussion of the work on the SH architecture.

    Signed-off-by: Simon Horman
    Acked-by: Yoshihiro Shimoda
    Acked-by: Magnus Damm
    Acked-by: Geert Uytterhoeven
    Acked-by: Wolfram Sang
    Acked-by: Laurent Pinchart
    Acked-by: Rich Felker
    Acked-by: Sergei Shtylyov
    Signed-off-by: Linus Torvalds

    Simon Horman
     
  • A newly added tracepoint in the hugepage code uses a variable in the
    error handling that is not initialized at that point:

    include/trace/events/huge_memory.h:81:230: error: 'isolated' may be used uninitialized in this function [-Werror=maybe-uninitialized]

    The result is relatively harmless, as the trace data will in rare
    cases contain incorrect data.

    This works around the problem by adding an explicit initialization.

    Signed-off-by: Arnd Bergmann
    Fixes: 7d2eba0557c1 ("mm: add tracepoint for scanning pages")
    Reviewed-by: Ebru Akagunduz
    Acked-by: David Rientjes
    Cc: Kirill A. Shutemov
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

20 Jan, 2016

3 commits

  • …linux-platform-drivers-x86

    Pull x86 platform driver updates from Darren Hart:
    "Add intel punit and telemetry driver for APL SoCs.
    Add intel-hid driver for various laptop hotkey support.
    Add asus-wireless radio control driver.
    Keyboard backlight support/improvements for ThinkPads, Vaio, and Toshiba.
    Several hotkey related fixes and improvements for dell and toshiba.
    Fix oops on dual GPU Macs in apple-gmux.
    A few new device IDs and quirks.
    Various minor config related build issues and cleanups.

    surface pro 4:
    - fix compare_const_fl.cocci warnings
    - Add support for Surface Pro 4 Buttons

    platform/x86:
    - Add Intel Telemetry Debugfs interfaces
    - Add Intel telemetry platform device
    - Add Intel telemetry platform driver
    - Add Intel Telemetry Core Driver
    - add NULL check for input parameters
    - add Intel P-Unit mailbox IPC driver
    - update acpi resource structure for Punit

    thinkpad_acpi:
    - Add support for keyboard backlight

    dell-wmi:
    - Process only one event on devices with interface version 0
    - Check if Dell WMI descriptor structure is valid
    - Improve unknown hotkey handling
    - Use a C99-style array for bios_to_linux_keycode

    tc1100-wmi:
    - fix build warning when CONFIG_PM not enabled

    asus-wireless:
    - Add ACPI HID ATK4001
    - Add Asus Wireless Radio Control driver

    asus-wmi:
    - drop to_platform_driver macro

    intel-hid:
    - new hid event driver for hotkeys

    sony-laptop:
    - Keyboard backlight control for some Vaio Fit models

    ideapad-laptop:
    - Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list

    apple-gmux:
    - Assign apple_gmux_data before registering

    toshiba_acpi:
    - Add rfkill dependency to ACPI_TOSHIBA entry
    - Fix keyboard backlight sysfs entries not being updated
    - Add WWAN RFKill support
    - Add support for WWAN devices
    - Fix blank screen at boot if transflective backlight is supported
    - Propagate the hotkey value via genetlink

    toshiba_bluetooth:
    - Add missing newline in toshiba_bluetooth_present function"

    * tag 'platform-drivers-x86-v4.5-1' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86: (29 commits)
    surface pro 4: fix compare_const_fl.cocci warnings
    surface pro 4: Add support for Surface Pro 4 Buttons
    platform:x86: Add Intel Telemetry Debugfs interfaces
    platform:x86: Add Intel telemetry platform device
    platform:x86: Add Intel telemetry platform driver
    platform/x86: Add Intel Telemetry Core Driver
    intel_punit_ipc: add NULL check for input parameters
    thinkpad_acpi: Add support for keyboard backlight
    dell-wmi: Process only one event on devices with interface version 0
    dell-wmi: Check if Dell WMI descriptor structure is valid
    tc1100-wmi: fix build warning when CONFIG_PM not enabled
    asus-wireless: Add ACPI HID ATK4001
    platform/x86: Add Asus Wireless Radio Control driver
    asus-wmi: drop to_platform_driver macro
    intel-hid: new hid event driver for hotkeys
    Keyboard backlight control for some Vaio Fit models
    platform/x86: Add rfkill dependency to ACPI_TOSHIBA entry
    platform:x86: add Intel P-Unit mailbox IPC driver
    intel_pmc_ipc: update acpi resource structure for Punit
    ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list
    ...

    Linus Torvalds
     
  • Move constants to the right of binary operators.

    Generated by: scripts/coccinelle/misc/compare_const_fl.cocci

    CC: Weng Xuetian
    Signed-off-by: Fengguang Wu
    Signed-off-by: Julia Lawall
    Signed-off-by: Darren Hart

    Julia Lawall
     
  • Surface Pro 4 buttons are managed by a device with _HID "MSHW0040"
    different from Surface Pro 3.

    This commit adds MSHW0040 to id list to support the Surface Pro 4.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871
    Signed-off-by: Weng Xuetian
    Acked-by: Chen Yu
    Signed-off-by: Darren Hart

    Weng Xuetian