09 Aug, 2014

7 commits

  • It's not used anywhere today, so let's remove it.

    Signed-off-by: Vladimir Davydov
    Acked-by: Michal Hocko
    Acked-by: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Davydov
     
  • Add forward declarations for struct pglist_data, mem_cgroup.

    Remove __init, __meminit from function prototypes and inline functions.

    Remove redundant inclusion of bit_spinlock.h.

    Signed-off-by: Vladimir Davydov
    Acked-by: Michal Hocko
    Acked-by: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Davydov
     
  • Pages are now uncharged at release time, and all sources of batched
    uncharges operate on lists of pages. Directly use those lists, and
    get rid of the per-task batching state.

    This also batches statistics accounting, in addition to the res
    counter charges, to reduce IRQ-disabling and re-enabling.

    Signed-off-by: Johannes Weiner
    Acked-by: Michal Hocko
    Cc: Hugh Dickins
    Cc: Tejun Heo
    Cc: Vladimir Davydov
    Cc: Naoya Horiguchi
    Cc: Vladimir Davydov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • The memcg uncharging code that is involved towards the end of a page's
    lifetime - truncation, reclaim, swapout, migration - is impressively
    complicated and fragile.

    Because anonymous and file pages were always charged before they had their
    page->mapping established, uncharges had to happen when the page type
    could still be known from the context; as in unmap for anonymous, page
    cache removal for file and shmem pages, and swap cache truncation for swap
    pages. However, these operations happen well before the page is actually
    freed, and so a lot of synchronization is necessary:

    - Charging, uncharging, page migration, and charge migration all need
    to take a per-page bit spinlock as they could race with uncharging.

    - Swap cache truncation happens during both swap-in and swap-out, and
    possibly repeatedly before the page is actually freed. This means
    that the memcg swapout code is called from many contexts that make
    no sense and it has to figure out the direction from page state to
    make sure memory and memory+swap are always correctly charged.

    - On page migration, the old page might be unmapped but then reused,
    so memcg code has to prevent untimely uncharging in that case.
    Because this code - which should be a simple charge transfer - is so
    special-cased, it is not reusable for replace_page_cache().

    But now that charged pages always have a page->mapping, introduce
    mem_cgroup_uncharge(), which is called after the final put_page(), when we
    know for sure that nobody is looking at the page anymore.

    For page migration, introduce mem_cgroup_migrate(), which is called after
    the migration is successful and the new page is fully rmapped. Because
    the old page is no longer uncharged after migration, prevent double
    charges by decoupling the page's memcg association (PCG_USED and
    pc->mem_cgroup) from the page holding an actual charge. The new bits
    PCG_MEM and PCG_MEMSW represent the respective charges and are transferred
    to the new page during migration.

    mem_cgroup_migrate() is suitable for replace_page_cache() as well,
    which gets rid of mem_cgroup_replace_page_cache(). However, care
    needs to be taken because both the source and the target page can
    already be charged and on the LRU when fuse is splicing: grab the page
    lock on the charge moving side to prevent changing pc->mem_cgroup of a
    page under migration. Also, the lruvecs of both pages change as we
    uncharge the old and charge the new during migration, and putback may
    race with us, so grab the lru lock and isolate the pages iff on LRU to
    prevent races and ensure the pages are on the right lruvec afterward.

    Swap accounting is massively simplified: because the page is no longer
    uncharged as early as swap cache deletion, a new mem_cgroup_swapout() can
    transfer the page's memory+swap charge (PCG_MEMSW) to the swap entry
    before the final put_page() in page reclaim.

    Finally, page_cgroup changes are now protected by whatever protection the
    page itself offers: anonymous pages are charged under the page table lock,
    whereas page cache insertions, swapin, and migration hold the page lock.
    Uncharging happens under full exclusion with no outstanding references.
    Charging and uncharging also ensure that the page is off-LRU, which
    serializes against charge migration. Remove the very costly page_cgroup
    lock and set pc->flags non-atomically.

    [mhocko@suse.cz: mem_cgroup_charge_statistics needs preempt_disable]
    [vdavydov@parallels.com: fix flags definition]
    Signed-off-by: Johannes Weiner
    Cc: Hugh Dickins
    Cc: Tejun Heo
    Cc: Vladimir Davydov
    Tested-by: Jet Chen
    Acked-by: Michal Hocko
    Tested-by: Felipe Balbi
    Signed-off-by: Vladimir Davydov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • These patches rework memcg charge lifetime to integrate more naturally
    with the lifetime of user pages. This drastically simplifies the code and
    reduces charging and uncharging overhead. The most expensive part of
    charging and uncharging is the page_cgroup bit spinlock, which is removed
    entirely after this series.

    Here are the top-10 profile entries of a stress test that reads a 128G
    sparse file on a freshly booted box, without even a dedicated cgroup (i.e.
    executing in the root memcg). Before:

    15.36% cat [kernel.kallsyms] [k] copy_user_generic_string
    13.31% cat [kernel.kallsyms] [k] memset
    11.48% cat [kernel.kallsyms] [k] do_mpage_readpage
    4.23% cat [kernel.kallsyms] [k] get_page_from_freelist
    2.38% cat [kernel.kallsyms] [k] put_page
    2.32% cat [kernel.kallsyms] [k] __mem_cgroup_commit_charge
    2.18% kswapd0 [kernel.kallsyms] [k] __mem_cgroup_uncharge_common
    1.92% kswapd0 [kernel.kallsyms] [k] shrink_page_list
    1.86% cat [kernel.kallsyms] [k] __radix_tree_lookup
    1.62% cat [kernel.kallsyms] [k] __pagevec_lru_add_fn

    After:

    15.67% cat [kernel.kallsyms] [k] copy_user_generic_string
    13.48% cat [kernel.kallsyms] [k] memset
    11.42% cat [kernel.kallsyms] [k] do_mpage_readpage
    3.98% cat [kernel.kallsyms] [k] get_page_from_freelist
    2.46% cat [kernel.kallsyms] [k] put_page
    2.13% kswapd0 [kernel.kallsyms] [k] shrink_page_list
    1.88% cat [kernel.kallsyms] [k] __radix_tree_lookup
    1.67% cat [kernel.kallsyms] [k] __pagevec_lru_add_fn
    1.39% kswapd0 [kernel.kallsyms] [k] free_pcppages_bulk
    1.30% cat [kernel.kallsyms] [k] kfree

    As you can see, the memcg footprint has shrunk quite a bit.

    text data bss dec hex filename
    37970 9892 400 48262 bc86 mm/memcontrol.o.old
    35239 9892 400 45531 b1db mm/memcontrol.o

    This patch (of 4):

    The memcg charge API charges pages before they are rmapped - i.e. have an
    actual "type" - and so every callsite needs its own set of charge and
    uncharge functions to know what type is being operated on. Worse,
    uncharge has to happen from a context that is still type-specific, rather
    than at the end of the page's lifetime with exclusive access, and so
    requires a lot of synchronization.

    Rewrite the charge API to provide a generic set of try_charge(),
    commit_charge() and cancel_charge() transaction operations, much like
    what's currently done for swap-in:

    mem_cgroup_try_charge() attempts to reserve a charge, reclaiming
    pages from the memcg if necessary.

    mem_cgroup_commit_charge() commits the page to the charge once it
    has a valid page->mapping and PageAnon() reliably tells the type.

    mem_cgroup_cancel_charge() aborts the transaction.

    This reduces the charge API and enables subsequent patches to
    drastically simplify uncharging.

    As pages need to be committed after rmap is established but before they
    are added to the LRU, page_add_new_anon_rmap() must stop doing LRU
    additions again. Revive lru_cache_add_active_or_unevictable().

    [hughd@google.com: fix shmem_unuse]
    [hughd@google.com: Add comments on the private use of -EAGAIN]
    Signed-off-by: Johannes Weiner
    Acked-by: Michal Hocko
    Cc: Tejun Heo
    Cc: Vladimir Davydov
    Signed-off-by: Hugh Dickins
    Cc: Naoya Horiguchi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • Aleksei hit the soft lockup during reading /proc/PID/smaps. David
    investigated the problem and suggested the right fix.

    while_each_thread() is racy and should die, this patch updates
    vm_is_stack().

    Signed-off-by: Oleg Nesterov
    Reported-by: Aleksei Besogonov
    Tested-by: Aleksei Besogonov
    Suggested-by: David Rientjes
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • This reverts commit a640616822b2 ("slab: remove BAD_ALIEN_MAGIC").

    commit a640616822b2 ("slab: remove BAD_ALIEN_MAGIC") assumes that the
    system with !CONFIG_NUMA has only one memory node. But, it turns out to
    be false by the report from Geert. His system, m68k, has many memory
    nodes and is configured in !CONFIG_NUMA. So it couldn't boot with above
    change.

    Here goes his failure report.

    With latest mainline, I'm getting a crash during bootup on m68k/ARAnyM:

    enable_cpucache failed for radix_tree_node, error 12.
    kernel BUG at /scratch/geert/linux/linux-m68k/mm/slab.c:1522!
    *** TRAP #7 *** FORMAT=0
    Current process id is 0
    BAD KERNEL TRAP: 00000000
    Modules linked in:
    PC: [] kmem_cache_init_late+0x70/0x8c
    SR: 2200 SP: 00345f90 a2: 0034c2e8
    d0: 0000003d d1: 00000000 d2: 00000000 d3: 003ac942
    d4: 00000000 d5: 00000000 a0: 0034f686 a1: 0034f682
    Process swapper (pid: 0, task=0034c2e8)
    Frame format=0
    Stack from 00345fc4:
    002f69ef 002ff7e5 000005f2 000360fa 0017d806 003921d4 00000000
    00000000 00000000 00000000 00000000 00000000 003ac942 00000000
    003912d6
    Call Trace: [] parse_args+0x0/0x2ca
    [] strlen+0x0/0x1a
    [] start_kernel+0x23c/0x428
    [] _sinittext+0x2d6/0x95e

    Code: f7e5 4879 002f 69ef 61ff ffca 462a 4e47 0035 4b1c 61ff
    fff0 0cc4 7005 23c0 0037 fd20 588f 265f 285f 4e75 48e7 301c
    Disabling lock debugging due to kernel taint
    Kernel panic - not syncing: Attempted to kill the idle task!

    Although there is a alternative way to fix this issue such as disabling
    use of alien cache on !CONFIG_NUMA, but, reverting issued commit is better
    to me in this time.

    Signed-off-by: Joonsoo Kim
    Reported-by: Geert Uytterhoeven
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Vladimir Davydov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joonsoo Kim
     

08 Aug, 2014

2 commits


07 Aug, 2014

31 commits

  • Pull powerpc updates from Ben Herrenschmidt:
    "This is the powerpc new goodies for 3.17. The short story:

    The biggest bit is Michael removing all of pre-POWER4 processor
    support from the 64-bit kernel. POWER3 and rs64. This gets rid of a
    ton of old cruft that has been bitrotting in a long while. It was
    broken for quite a few versions already and nobody noticed. Nobody
    uses those machines anymore. While at it, he cleaned up a bunch of
    old dusty cabinets, getting rid of a skeletton or two.

    Then, we have some base VFIO support for KVM, which allows assigning
    of PCI devices to KVM guests, support for large 64-bit BARs on
    "powernv" platforms, support for HMI (Hardware Management Interrupts)
    on those same platforms, some sparse-vmemmap improvements (for memory
    hotplug),

    There is the usual batch of Freescale embedded updates (summary in the
    merge commit) and fixes here or there, I think that's it for the
    highlights"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (102 commits)
    powerpc/eeh: Export eeh_iommu_group_to_pe()
    powerpc/eeh: Add missing #ifdef CONFIG_IOMMU_API
    powerpc: Reduce scariness of interrupt frames in stack traces
    powerpc: start loop at section start of start in vmemmap_populated()
    powerpc: implement vmemmap_free()
    powerpc: implement vmemmap_remove_mapping() for BOOK3S
    powerpc: implement vmemmap_list_free()
    powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE
    powerpc/book3s: Fix endianess issue for HMI handling on napping cpus.
    powerpc/book3s: handle HMIs for cpus in nap mode.
    powerpc/powernv: Invoke opal call to handle hmi.
    powerpc/book3s: Add basic infrastructure to handle HMI in Linux.
    powerpc/iommu: Fix comments with it_page_shift
    powerpc/powernv: Handle compound PE in config accessors
    powerpc/powernv: Handle compound PE for EEH
    powerpc/powernv: Handle compound PE
    powerpc/powernv: Split ioda_eeh_get_state()
    powerpc/powernv: Allow to freeze PE
    powerpc/powernv: Enable M64 aperatus for PHB3
    powerpc/eeh: Aux PE data for error log
    ...

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    "This is the main pull request for 3.17. It contains:

    - misc Cavium Octeon, BCM47xx, BCM63xx and Alchemy updates
    - MIPS ptrace updates and cleanups
    - various fixes that will also go to -stable
    - a number of cleanups and small non-critical fixes.
    - NUMA support for the Loongson 3.
    - more support for MSA
    - support for MAAR
    - various FP enhancements and fixes"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (139 commits)
    MIPS: jz4740: remove unnecessary null test before debugfs_remove
    MIPS: Octeon: remove unnecessary null test before debugfs_remove_recursive
    MIPS: ZBOOT: implement stack protector in compressed boot phase
    MIPS: mipsreg: remove duplicate MIPS_CONF4_FTLBSETS_SHIFT
    MIPS: Bonito64: remove a duplicate define
    MIPS: Malta: initialise MAARs
    MIPS: Initialise MAARs
    MIPS: detect presence of MAARs
    MIPS: define MAAR register accessors & bits
    MIPS: mark MSA experimental
    MIPS: Don't build MSA support unless it can be used
    MIPS: consistently clear MSA flags when starting & copying threads
    MIPS: 16 byte align MSA vector context
    MIPS: disable preemption whilst initialising MSA
    MIPS: ensure MSA gets disabled during boot
    MIPS: fix read_msa_* & write_msa_* functions on non-MSA toolchains
    MIPS: fix MSA context for tasks which don't use FP first
    MIPS: init upper 64b of vector registers when MSA is first used
    MIPS: save/disable MSA in lose_fpu
    MIPS: preserve scalar FP CSR when switching vector context
    ...

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:
    "Mostly cleanups and bug-fixes, with two exceptions.

    The first is lazy flushing of I/O-TLBs for PCI to improve performance,
    the second is software dirty bits in the pmd for the madvise-free
    implementation"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (24 commits)
    s390/locking: Reenable optimistic spinning
    s390/mm: implement dirty bits for large segment table entries
    KVM: s390/mm: Fix page table locking vs. split pmd lock
    s390/dasd: fix camel case
    s390/3215: fix hanging console issue
    s390/irq: improve displayed interrupt order in /proc/interrupts
    s390/seccomp: fix error return for filtered system calls
    s390/pci: introduce lazy IOTLB flushing for DMA unmap
    dasd: fix error recovery for alias devices during format
    dasd: fix list_del corruption during format
    dasd: fix unresponsive device during format
    dasd: use aliases for formatted devices during format
    s390/pci: fix kmsg component
    s390/kdump: Return NOTIFY_OK for all actions other than MEM_GOING_OFFLINE
    s390/watchdog: Fix module name in Kconfig help text
    s390/dasd: replace seq_printf by seq_puts
    s390/dasd: replace pr_warning by pr_warn
    s390/dasd: Move EXPORT_SYMBOL after function/variable
    s390/dasd: remove unnecessary null test before debugfs_remove
    s390/zfcp: use qdio buffer helpers
    ...

    Linus Torvalds
     
  • Convert a zero return value on error to a negative one, as returned
    elsewhere in the function.

    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)

    //
    @@
    identifier ret; expression e1,e2;
    @@
    (
    if (\(ret < 0\|ret != 0\))
    { ... return ret; }
    |
    ret = 0
    )
    ... when != ret = e1
    when != &ret
    *if(...)
    {
    ... when != ret = e2
    when forall
    return ret;
    }
    //

    Signed-off-by: Julia Lawall
    Acked-by: Hans-Christian Egtvedt

    Julia Lawall
     
  • Merge incoming from Andrew Morton:
    - Various misc things.
    - arch/sh updates.
    - Part of ocfs2. Review is slow.
    - Slab updates.
    - Most of -mm.
    - printk updates.
    - lib/ updates.
    - checkpatch updates.

    * emailed patches from Andrew Morton : (226 commits)
    checkpatch: update $declaration_macros, add uninitialized_var
    checkpatch: warn on missing spaces in broken up quoted
    checkpatch: fix false positives for --strict "space after cast" test
    checkpatch: fix false positive MISSING_BREAK warnings with --file
    checkpatch: add test for native c90 types in unusual order
    checkpatch: add signed generic types
    checkpatch: add short int to c variable types
    checkpatch: add for_each tests to indentation and brace tests
    checkpatch: fix brace style misuses of else and while
    checkpatch: add --fix option for a couple OPEN_BRACE misuses
    checkpatch: use the correct indentation for which()
    checkpatch: add fix_insert_line and fix_delete_line helpers
    checkpatch: add ability to insert and delete lines to patch/file
    checkpatch: add an index variable for fixed lines
    checkpatch: warn on break after goto or return with same tab indentation
    checkpatch: emit a warning on file add/move/delete
    checkpatch: add test for commit id formatting style in commit log
    checkpatch: emit fewer kmalloc_array/kcalloc conversion warnings
    checkpatch: improve "no space after cast" test
    checkpatch: allow multiple const * types
    ...

    Linus Torvalds
     
  • Pull networking fixes from David Miller:
    "This fixes the most immediate fallout from yesterday's networking
    merge:

    1) sock_tx_timestamp() must not clear the passed in tx_flags, but
    rather add to them. Fix from Eric Dumazet.

    2) The hyperv driver sendbuf region increase needs to be decreased
    slightly to handle older backends. From KY Srinivasan.

    3) Fix RCU lockdep splats in netlink diag after recent hashing
    changes, from Thomas Graf.

    4) The new IPV6_FLOWLABEL was given a socket option number that
    overlapped with an existing IP6 tables one, breaking ip6_tables.
    Fixed by Pablo Neira Ayuso"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    netlink: hold nl_sock_hash_lock during diag dump
    tcp: md5: check md5 signature without socket lock
    net: fix USB network driver config option.
    net: reallocate new socket option number for IPV6_AUTOFLOWLABEL
    vmxnet3: fix decimal printf format specifiers prefixed with 0x
    net-timestamp: cumulative tcp timestamping fixes
    hyperv: Adjust the size of sendbuf region to support ws2008r2
    cxgb4: Fix for SR-IOV VF initialization
    net-timestamp: sock_tx_timestamp() fix

    Linus Torvalds
     
  • Pull trivial tree changes from Jiri Kosina:
    "Summer edition of trivial tree updates"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (23 commits)
    doc: fix two typos in watchdog-api.txt
    irq-gic: remove file name from heading comment
    MAINTAINERS: Add miscdevice.h to file list for char/misc drivers.
    scsi: mvsas: mv_sas.c: Fix for possible null pointer dereference
    doc: replace "practise" with "practice" in Documentation
    befs: remove check for CONFIG_BEFS_RW
    scsi: doc: fix 'SCSI_NCR_SETUP_MASTER_PARITY'
    drivers/usb/phy/phy.c: remove a leading space
    mfd: fix comment
    cpuidle: fix comment
    doc: hpfall.c: fix missing null-terminate after strncpy call
    usb: doc: hotplug.txt code typos
    kbuild: fix comment in Makefile.modinst
    SH: add proper prompt to SH_MAGIC_PANEL_R2_VERSION
    ARM: msm: Remove MSM_SCM
    crypto: Remove MPILIB_EXTRA
    doc: CN: remove dead link, kerneltrap.org no longer works
    media: update reference, kerneltrap.org no longer works
    hexagon: update reference, kerneltrap.org no longer works
    doc: LSM: update reference, kerneltrap.org no longer works
    ...

    Linus Torvalds
     
  • Pull HID updates from Jiri Kosina:
    "Some highlights:

    - hid-sony improvements of Sixaxis device support by Antonio Ospite
    - hid-hyperv driven devices can now be used as wakeup source, by
    Dexuan Cui
    - hid-lenovo driver is now more generic and supports more devices, by
    Jamie Lentin
    - hid-huion now supports wider range of tablets, by Nikolai
    Kondrashov
    - other various unsorted fixes and device ID additions"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (30 commits)
    HID: hyperv: register as a wakeup source
    HID: sony: Default initialize all elements of the LED max_brightness array to 1
    HID: huion: Fix sparse warnings
    HID: usbhid: Use flag HID_DISCONNECTED when a usb device is removed
    HID: ignore jabra gn9350e
    HID: cp2112: add I2C mode
    HID: use multi input quirk for 22b9:2968
    HID: rmi: only bind the hid-rmi driver to the mouse interface of composite USB devices
    HID: rmi: check that report ids exist in the report_id_hash before accessing their size
    HID: lenovo: Add support for Compact (BT|USB) keyboard
    HID: lenovo: Don't call function in condition, show error codes
    HID: lenovo: Prepare support for adding other devices
    HID: lenovo: Rename hid-lenovo-tpkbd to hid-lenovo
    HID: huion: Handle tablets with UC-Logic vendor ID
    HID: huion: Switch to generating report descriptor
    HID: huion: Don't ignore other interfaces
    HID: huion: Use "tablet" instead of specific model
    HID: add quirk for 0x04d9:0xa096 device
    HID: i2c-hid: call the hid driver's suspend and resume callbacks
    HID: rmi: change logging level of log messages related to unexpected reports
    ...

    Linus Torvalds
     
  • Pull watchdog updates from Wim Van Sebroeck:
    - remove unnecessary checks after platform_get_resource()
    - fix watchdog api documentation typo's
    - imx2_wdt: adds big endianness support
    - move restart code to the sunxi watchdog driver

    * git://www.linux-watchdog.org/linux-watchdog:
    wdt: sunxi: Move restart code to the watchdog driver
    Documentation: fix two typos in watchdog-api.txt
    watchdog: imx2_wdt: adds big endianness support.
    watchdog: shwdt: Remove the unnecessary check of resource after platform_get_resource()
    watchdog: lantiq_wdt: Remove the un-necessary check of resource after platform_get_resource()
    watchdog: dw_wdt: Remove the un-necessary check after platform_get_resource()

    Linus Torvalds
     
  • Pull ACPI and power management updates from Rafael Wysocki:
    "Again, ACPICA leads the pack (47 commits), followed by cpufreq (18
    commits) and system suspend/hibernation (9 commits).

    From the new code perspective, the ACPICA update brings ACPI 5.1 to
    the table, including a new device configuration object called _DSD
    (Device Specific Data) that will hopefully help us to operate device
    properties like Device Trees do (at least to some extent) and changes
    related to supporting ACPI on ARM.

    Apart from that we have hibernation changes making it use radix trees
    to store memory bitmaps which should speed up some operations carried
    out by it quite significantly. We also have some power management
    changes related to suspend-to-idle (the "freeze" sleep state) support
    and more preliminary changes needed to support ACPI on ARM (outside of
    ACPICA).

    The rest is fixes and cleanups pretty much everywhere.

    Specifics:

    - ACPICA update to upstream version 20140724. That includes ACPI 5.1
    material (support for the _CCA and _DSD predefined names, changes
    related to the DMAR and PCCT tables and ARM support among other
    things) and cleanups related to using ACPICA's header files. A
    major part of it is related to acpidump and the core code used by
    that utility. Changes from Bob Moore, David E Box, Lv Zheng,
    Sascha Wildner, Tomasz Nowicki, Hanjun Guo.

    - Radix trees for memory bitmaps used by the hibernation core from
    Joerg Roedel.

    - Support for waking up the system from suspend-to-idle (also known
    as the "freeze" sleep state) using ACPI-based PCI wakeup signaling
    (Rafael J Wysocki).

    - Fixes for issues related to ACPI button events (Rafael J Wysocki).

    - New device ID for an ACPI-enumerated device included into the
    Wildcat Point PCH from Jie Yang.

    - ACPI video updates related to backlight handling from Hans de Goede
    and Linus Torvalds.

    - Preliminary changes needed to support ACPI on ARM from Hanjun Guo
    and Graeme Gregory.

    - ACPI PNP core cleanups from Arjun Sreedharan and Zhang Rui.

    - Cleanups related to ACPI_COMPANION() and ACPI_HANDLE() macros
    (Rafael J Wysocki).

    - ACPI-based device hotplug cleanups from Wei Yongjun and Rafael J
    Wysocki.

    - Cleanups and improvements related to system suspend from Lan
    Tianyu, Randy Dunlap and Rafael J Wysocki.

    - ACPI battery cleanup from Wei Yongjun.

    - cpufreq core fixes from Viresh Kumar.

    - Elimination of a deadband effect from the cpufreq ondemand governor
    and intel_pstate driver cleanups from Stratos Karafotis.

    - 350MHz CPU support for the powernow-k6 cpufreq driver from Mikulas
    Patocka.

    - Fix for the imx6 cpufreq driver from Anson Huang.

    - cpuidle core and governor cleanups from Daniel Lezcano, Sandeep
    Tripathy and Mohammad Merajul Islam Molla.

    - Build fix for the big_little cpuidle driver from Sachin Kamat.

    - Configuration fix for the Operation Performance Points (OPP)
    framework from Mark Brown.

    - APM cleanup from Jean Delvare.

    - cpupower utility fixes and cleanups from Peter Senna Tschudin,
    Andrey Utkin, Himangi Saraogi, Rickard Strandqvist, Thomas
    Renninger"

    * tag 'pm+acpi-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (118 commits)
    ACPI / LPSS: add LPSS device for Wildcat Point PCH
    ACPI / PNP: Replace faulty is_hex_digit() by isxdigit()
    ACPICA: Update version to 20140724.
    ACPICA: ACPI 5.1: Update for PCCT table changes.
    ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
    ACPICA/ARM: ACPI 5.1: Update for MADT changes.
    ACPICA/ARM: ACPI 5.1: Update for FADT changes.
    ACPICA: ACPI 5.1: Support for the _CCA predifined name.
    ACPICA: ACPI 5.1: New notify value for System Affinity Update.
    ACPICA: ACPI 5.1: Support for the _DSD predefined name.
    ACPICA: Debug object: Add current value of Timer() to debug line prefix.
    ACPICA: acpihelp: Add UUID support, restructure some existing files.
    ACPICA: Utilities: Fix local printf issue.
    ACPICA: Tables: Update for DMAR table changes.
    ACPICA: Remove some extraneous printf arguments.
    ACPICA: Update for comments/formatting. No functional changes.
    ACPICA: Disassembler: Add support for the ToUUID opererator (macro).
    ACPICA: Remove a redundant cast to acpi_size for ACPI_OFFSET() macro.
    ACPICA: Work around an ancient GCC bug.
    ACPI / processor: Make it possible to get local x2apic id via _MAT
    ...

    Linus Torvalds
     
  • Pull SCSI updates from James Bottomley:
    "This patch set consists of the usual driver updates (ufs, storvsc,
    pm8001 hpsa). It also has removal of the user space target driver
    code (everyone is using LIO now), a partial PCI MSI-X update, more
    multi-queue updates, conversion to 64 bit LUNs (so we could
    theoretically cope with any LUN returned by a device) and placeholder
    support for the ZBC device type (Shingle drives), plus an assortment
    of minor updates and bug fixes"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (143 commits)
    scsi: do not issue SCSI RSOC command to Promise Vtrak E610f
    vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
    pm8001: Fix invalid return when request_irq() failed
    lpfc: Remove superfluous call to pci_disable_msix()
    isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
    bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
    bfa: Cleanup bfad_setup_intr() function
    bfa: Do not call pci_enable_msix() after it failed once
    fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
    scsi: use short driver name for per-driver cmd slab caches
    scsi_debug: support scsi-mq, queues and locks
    Drivers: add blist flags
    scsi: ufs: fix endianness sparse warnings
    scsi: ufs: make undeclared functions static
    bnx2i: Update driver version to 2.7.10.1
    pm8001: fix a memory leak in nvmd_resp
    pm8001: fix update_flash
    pm8001: fix a memory leak in flash_update
    pm8001: Cleaning up uninitialized variables
    pm8001: Fix to remove null pointer checks that could never happen
    ...

    Linus Torvalds
     
  • Pull sound updates from Takashi Iwai:
    "There've been many updates in ASoC side at this time, especially the
    framework enhancement for multiple CODECs on a single DAI and more
    componentization works.

    The only major change in ALSA core is the addition of timestamp type
    in sw_params field. This should behave in backward compatible way.

    Other than that, there are lots of small changes and new drivers in
    wide range, including a large code cut in HD-audio driver for
    deprecated static quirks. Some highlights are below:

    ALSA Core:
    - Add the new timestamp type field to sw_params to choose
    MONOTONIC_RAW type

    HD-audio:
    - Continued conversion to standard printk macros, generic code
    cleanups
    - Removal of obsoleted static quirk codes for Conexant and C-Media
    codecs
    - Fixups for HP Envy TS, Dell XPS 15, HP and Dell mute/mic LED,
    Gigabyte BXBT-2807 mobo
    - Intel Braswell support

    ASoC:
    - Support for multiple CODECs attached to a single DAI, enabling
    systems with for example multiple DAC/speaker drivers on a single
    link, contributed by Benoit Cousson based on work from Misael Lopez
    Cruz
    - Support for byte controls larger than 256 bytes based on the use of
    TLVs contributed by Omair Mohammed Abdullah
    - More componentisation work from Lars-Peter Clausen
    - The remainder of the conversions of CODEC drivers to params_width()
    by Mark Brown
    - Drivers for Cirrus Logic CS4265, Freescale i.MX ASRC blocks,
    Realtek RT286 and RT5670, Rockchip RK3xxx I2S controllers and Texas
    Instruments TAS2552
    - Lots of updates and fixes, especially to the DaVinci, Intel,
    Freescale, Realtek, and rcar drivers"

    * tag 'sound-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (402 commits)
    ALSA: usb-audio: Whitespace cleanups for sound/usb/midi.*
    ALSA: usb-audio: Respond to suspend and resume callbacks for MIDI input
    sound/oss/pss: Remove typedefs pss_mixerdata and pss_confdata
    sound/oss/opl3: Remove typedef opl_devinfo
    ALSA: fireworks: fix specifiers in format strings for propper output
    ASoC: imx-audmux: Use uintptr_t for port numbers
    ASoC: davinci: Enable menuconfig entry for McASP
    ASoC: fsl_asrc: Don't access members of config before checking it
    ASoC: fsl_sarc_dma: Check pair before using it
    ASoC: adau1977: Fix truncation warning on 64 bit architectures
    ALSA: virtuoso: add Xonar Essence STX II support
    ALSA: riptide: fix %d confusingly prefixed with 0x in format strings
    ALSA: fireworks: fix %d confusingly prefixed with 0x in format strings
    ALSA: hda - add codec ID for Braswell display audio codec
    ALSA: hda - add PCI IDs for Intel Braswell
    ALSA: usb-audio: Adjust Gamecom 780 volume level
    ALSA: usb-audio: improve dmesg source grepability
    ASoC: rt5670: Fix duplicate const warnings
    ASoC: rt5670: Staticise non-exported symbols
    ASoC: Intel: update stream only on stream IPC msgs
    ...

    Linus Torvalds
     
  • Pull HSI changes from Sebastian Reichel:
    "Misc fixes in SSI related drivers"

    * tag 'hsi-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
    HSI: omap_ssi: Fix return value check in ssi_debug_add_ctrl()
    HSI: omap_ssi_port: Fix return value check in ssi_debug_add_port()
    HSI: ssi_protocol: Fix sparse non static symbol warning
    drivers/hsi/controllers/omap_ssi{,_port}.c: fix failure checks

    Linus Torvalds
     
  • Pull power supply changes from Sebastian Reichel:
    - Added iPaq h3xxx battery driver
    - Added Broadcom STB reset driver
    - DT support for rx51-battery
    - misc. fixes

    * tag 'for-v3.17' of git://git.infradead.org/battery-2.6:
    ipaq_micro_battery: fix sparse non static symbol warning
    power: add driver for battery reading on iPaq h3xxx
    power: twl4030_charger: detect battery presence prior to enabling charger
    power: reset: Add reboot driver for brcmstb
    power_supply: Fix sparse non static symbol warning
    power_supply: Add inlmt,iterm, min/max temp props
    charger: tps65090: Allow charger module to be used when no irq
    power/reset: Fix GPL v2 license string typo
    power: poweroff: gpio: convert to use descriptors
    bq27000: report missing device better.
    bq27x00_battery: Introduce the use of the managed version of kzalloc
    Documentation: DT: Document rx51-battery binding
    rx51_battery: convert to iio consumer
    bq2415x_charger: Fix Atomic Sleep Bug

    Linus Torvalds
     
  • The function is used by VFIO driver, which might be built as a
    dynamic module. So it should be exported.

    Signed-off-by: Gavin Shan
    Signed-off-by: Benjamin Herrenschmidt

    Gavin Shan
     
  • Although RCU protection would be possible during diag dump, doing
    so allows for concurrent table mutations which can render the
    in-table offset between individual Netlink messages invalid and
    thus cause legitimate sockets to be skipped in the dump.

    Since the diag dump is relatively low volume and consistency is
    more important than performance, the table mutex is held during
    dump.

    Reported-by: Andrey Wagin
    Signed-off-by: Thomas Graf
    Fixes: e341694e3eb57fc ("netlink: Convert netlink_lookup() to use RCU protected hash table")
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • Using uninitialized_var reports a false positive for "Missing blank line
    after declarations".

    Fix it by adding uninitialized_var to the $declaration_macros exceptions
    list.

    Move the macro list after $Type is declared.

    Add optional prefixes to DECLARE_ and DEFINE_
    macro declarations to allow forms like:
    MLX4_DECLARE_DOORBELL_LOCK

    Signed-off-by: Joe Perches
    Reported-by: Dotan Barak
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Checkpatch already complains when people break up quoted strings but
    it's still pretty common. One mistake that people often make is they
    leave out the space character between the two strings.

    This check adds around 450 new warnings and has a low rate of false
    positives.

    Signed-off-by: Dan Carpenter
    Cc: Andy Whitcroft
    Acked-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Commit 89da401f6cff ("checkpatch: improve "no space after cast" test")
    in -next improved the cast test for non pointer types, but also
    introduced false positives for some types of static inlines.

    Add a test for an open brace to the exclusions to avoid these false
    positives.

    Signed-off-by: Joe Perches
    Reported-by: Hartley Sweeten
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Using --file mode can give false positives with MISSING_BREAK
    fall-through warnings on simple but long multiple consecutive case
    statements.

    Look for all lines before a case statement for a switch or a statement
    when using --file mode.

    Fix a misspelling of preceded while there.

    Signed-off-by: Joe Perches
    Reported-by: Lee Jones
    Acked-by: Lee Jones
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • c90 section "6.7.2 Type Specifiers" says:
    "type specifiers may occur in any order"

    That means that:
    short int is the same as int short
    unsigned short int is the same as int unsigned short
    etc...

    checkpatch currently parses only a subset of these allowed types.

    For instance: "unsigned short" and "signed short" are found by
    checkpatch as a specific type, but none of the or "int short" or "int
    signed short" variants are found.

    Add another table for the "kernel style misordered" variants.

    Add this misordered table to the findable types.

    Warn when the misordered style is used.

    This improves the "Missing a blank line after declarations" test as it
    depends on the correct parsing of the $Declare variable which looks for
    "$Type $Ident;" (ie: declarations like "int foo;").

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

    Joe Perches
     
  • Current generic types are unsigned or unspecified. Add signed to the
    types.

    Reorder the types to find the longest match first.

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

    Joe Perches
     
  • short int is one of the 6.7.2 c90 types.
    Find it appropriately.

    This fixes a defect in checkpatch where it suggests that a line break
    after declaration is required using an input like:

    int foo;
    short int bar;

    Without this change, it warns on the short int line.

    Signed-off-by: Joe Perches
    Reported-by: Hartley Sweeten
    Acked-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • All the various for_each loop macros were not tested for trailing brace
    on the following lines and for bad indentation.

    Add them.

    Signed-off-by: Joe Perches
    Reported-by: Greg KH
    Cc: Andy Whitcroft
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Add --fix corrections for ELSE_AFTER_BRACE and WHILE_AFTER_BRACE
    misuses.

    if (x) {
    ...
    }
    else {
    ...
    }

    is corrected to

    if (x) {
    ...
    } else {
    ...
    }

    and

    do {
    ...
    }
    while (x);

    is corrected to

    do {
    ...
    } while (x);

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

    Joe Perches
     
  • Style misuses of these types are corrected:

    typedef struct foo
    {
    int bar;
    };

    int foo(int bar) { return bar+1;
    }

    int foo(int bar) {
    return bar+1;
    }

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

    Joe Perches
     
  • I copied the which subroutine from get_maintainer.pl.

    Unfortunately, get_maintainer uses a 4 space indentation so use the
    proper tab indentation instead.

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

    Joe Perches
     
  • Neaten the uses of patch/file line insertions or deletions. Hide the
    mechanism used.

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

    Joe Perches
     
  • This can be valuable to insert or delete blank lines as well as fix
    misplaced brace or else uses.

    Store indexes of lines to be added/deleted and the new lines.

    When creating the --fix file, insert or delete the appropriate lines and
    update the patch range information.

    Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Cc: Dan Carpenter
    Cc: Josh Triplett
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Make the fix code a bit easier to read.

    This should also start to allow an easier mechanism to insert/delete
    lines eventually too.

    Signed-off-by: Joe Perches
    Cc: Andy Whitcroft
    Cc: Dan Carpenter
    Cc: Josh Triplett
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Using break; after a goto or return is unnecessary so emit a warning
    when the break is at the same indent level.

    So this emits a warning on:

    switch (foo) {
    case 1:
    goto err;
    break;
    }

    but not on:

    switch (foo) {
    case 1:
    if (bar())
    goto err;
    break;
    }

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

    Joe Perches