04 Oct, 2015

1 commit

  • Pull strscpy string copy function implementation from Chris Metcalf.

    Chris sent this during the merge window, but I waffled back and forth on
    the pull request, which is why it's going in only now.

    The new "strscpy()" function is definitely easier to use and more secure
    than either strncpy() or strlcpy(), both of which are horrible nasty
    interfaces that have serious and irredeemable problems.

    strncpy() has a useless return value, and doesn't NUL-terminate an
    overlong result. To make matters worse, it pads a short result with
    zeroes, which is a performance disaster if you have big buffers.

    strlcpy(), by contrast, is a mis-designed "fix" for strlcpy(), lacking
    the insane NUL padding, but having a differently broken return value
    which returns the original length of the source string. Which means
    that it will read characters past the count from the source buffer, and
    you have to trust the source to be properly terminated. It also makes
    error handling fragile, since the test for overflow is unnecessarily
    subtle.

    strscpy() avoids both these problems, guaranteeing the NUL termination
    (but not excessive padding) if the destination size wasn't zero, and
    making the overflow condition very obvious by returning -E2BIG. It also
    doesn't read past the size of the source, and can thus be used for
    untrusted source data too.

    So why did I waffle about this for so long?

    Every time we introduce a new-and-improved interface, people start doing
    these interminable series of trivial conversion patches.

    And every time that happens, somebody does some silly mistake, and the
    conversion patch to the improved interface actually makes things worse.
    Because the patch is mindnumbing and trivial, nobody has the attention
    span to look at it carefully, and it's usually done over large swatches
    of source code which means that not every conversion gets tested.

    So I'm pulling the strscpy() support because it *is* a better interface.
    But I will refuse to pull mindless conversion patches. Use this in
    places where it makes sense, but don't do trivial patches to fix things
    that aren't actually known to be broken.

    * 'strscpy' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    tile: use global strscpy() rather than private copy
    string: provide strscpy()
    Make asm/word-at-a-time.h available on all architectures

    Linus Torvalds
     

26 Sep, 2015

1 commit

  • Pull networking fixes from David Miller:

    1) When we run a tap on netlink sockets, we have to copy mmap'd SKBs
    instead of cloning them. From Daniel Borkmann.

    2) When converting classical BPF into eBPF, fix the setting of the
    source reg to BPF_REG_X. From Tycho Andersen.

    3) Fix igmpv3/mldv2 report parsing in the bridge multicast code, from
    Linus Lussing.

    4) Fix dst refcounting for ipv6 tunnels, from Martin KaFai Lau.

    5) Set NLM_F_REPLACE flag properly when replacing ipv6 routes, from
    Roopa Prabhu.

    6) Add some new cxgb4 PCI device IDs, from Hariprasad Shenai.

    7) Fix headroom tests and SKB leaks in ipv6 fragmentation code, from
    Florian Westphal.

    8) Check DMA mapping errors in bna driver, from Ivan Vecera.

    9) Several 8139cp bug fixes (dev_kfree_skb_any in interrupt context,
    misclearing of interrupt status in TX timeout handler, etc.) from
    David Woodhouse.

    10) In tipc, reset SKB header pointer after skb_linearize(), from Erik
    Hugne.

    11) Fix autobind races et al. in netlink code, from Herbert Xu with
    help from Tejun Heo and others.

    12) Missing SET_NETDEV_DEV in sunvnet driver, from Sowmini Varadhan.

    13) Fix various races in timewait timer and reqsk_queue_hadh_req, from
    Eric Dumazet.

    14) Fix array overruns in mac80211, from Johannes Berg and Dan
    Carpenter.

    15) Fix data race in rhashtable_rehash_one(), from Dmitriy Vyukov.

    16) Fix race between poll_one_napi and napi_disable, from Neil Horman.

    17) Fix byte order in geneve tunnel port config, from John W Linville.

    18) Fix handling of ARP replies over lightweight tunnels, from Jiri
    Benc.

    19) We can loop when fib rule dumps cross multiple SKBs, fix from Wilson
    Kok and Roopa Prabhu.

    20) Several reference count handling bug fixes in the PHY/MDIO layer
    from Russel King.

    21) Fix lockdep splat in ppp_dev_uninit(), from Guillaume Nault.

    22) Fix crash in icmp_route_lookup(), from David Ahern.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
    net: Fix panic in icmp_route_lookup
    net: update docbook comment for __mdiobus_register()
    ppp: fix lockdep splat in ppp_dev_uninit()
    net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected
    phy: marvell: add link partner advertised modes
    net: fix net_device refcounting
    phy: add phy_device_remove()
    phy: fixed-phy: properly validate phy in fixed_phy_update_state()
    net: fix phy refcounting in a bunch of drivers
    of_mdio: fix MDIO phy device refcounting
    phy: add proper phy struct device refcounting
    phy: fix mdiobus module safety
    net: dsa: fix of_mdio_find_bus() device refcount leak
    phy: fix of_mdio_find_bus() device refcount leak
    ip6_tunnel: Reduce log level in ip6_tnl_err() to debug
    ip6_gre: Reduce log level in ip6gre_err() to debug
    fib_rules: fix fib rule dumps across multiple skbs
    bnx2x: byte swap rss_key to comply to Toeplitz specs
    net: revert "net_sched: move tp->root allocation into fw_init()"
    lwtunnel: remove source and destination UDP port config option
    ...

    Linus Torvalds
     

23 Sep, 2015

2 commits

  • rhashtable_rehash_one() uses complex logic to update entry->next field,
    after INIT_RHT_NULLS_HEAD and NULLS_MARKER expansion:

    entry->next = 1 | ((base + off) << 1)

    This can be compiled along the lines of:

    entry->next = base + off
    entry->next <next |= 1

    Which will break concurrent readers.

    NULLS value recomputation is not needed here, so just remove
    the complex logic.

    The data race was found with KernelThreadSanitizer (KTSAN).

    Signed-off-by: Dmitry Vyukov
    Acked-by: Eric Dumazet
    Acked-by: Thomas Graf
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Dmitriy Vyukov
     
  • The check for invoking iommu->lazy_flush() from iommu_tbl_range_alloc()
    has to be refactored so that we only call ->lazy_flush() if it is
    non-null.

    I had a sparc kernel that was crashing when I was trying to process some
    very large perf.data files- the crash happens when the scsi driver calls
    into dma_4v_map_sg and thus the iommu_tbl_range_alloc().

    Signed-off-by: Sowmini Varadhan
    Cc: Benjamin Herrenschmidt
    Cc: Guenter Roeck
    Cc: David S. Miller
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sowmini Varadhan
     

18 Sep, 2015

1 commit

  • Some string_get_size() calls (e.g.:
    string_get_size(1, 512, STRING_UNITS_10, ..., ...)
    string_get_size(15, 64, STRING_UNITS_10, ..., ...)
    ) result in an infinite loop. The problem is that if size is equal to
    divisor[units]/blk_size and is smaller than divisor[units] we'll end
    up with size == 0 when we start doing sf_cap calculations:

    For string_get_size(1, 512, STRING_UNITS_10, ..., ...) case:
    ...
    remainder = do_div(size, divisor[units]); -> size is 0, remainder is 1
    remainder *= blk_size; -> remainder is 512
    ...
    size *= blk_size; -> size is still 0
    size += remainder / divisor[units]; -> size is still 0

    The caller causing the issue is sd_read_capacity(), the problem was
    noticed on Hyper-V, such weird size was reported by host when scanning
    collides with device removal. This is probably a separate issue worth
    fixing, this patch is intended to prevent the library routine from
    infinite looping.

    Signed-off-by: Vitaly Kuznetsov
    Acked-by: James Bottomley
    Cc: Andy Shevchenko
    Cc: Rasmus Villemoes
    Cc: "K. Y. Srinivasan"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vitaly Kuznetsov
     

11 Sep, 2015

12 commits

  • Remove bi_reverse() and use generic bitrev32() instead - it should have
    better performance on some platforms.

    Signed-off-by: yalin wang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    yalin wang
     
  • Compare pointer-typed values to NULL rather than 0.

    The semantic patch that makes this change is available
    in scripts/coccinelle/null/badzero.cocci.

    Signed-off-by: Fabio Estevam
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fabio Estevam
     
  • When loading x86 64bit kernel above 4GiB with patched grub2, got kernel
    gunzip error.

    | early console in decompress_kernel
    | decompress_kernel:
    | input: [0x807f2143b4-0x807ff61aee]
    | output: [0x807cc00000-0x807f3ea29b] 0x027ea29c: output_len
    | boot via startup_64
    | KASLR using RDTSC...
    | new output: [0x46fe000000-0x470138cfff] 0x0338d000: output_run_size
    | decompress: [0x46fe000000-0x47007ea29b]
    Cc: Alexandre Courbot
    Cc: Jon Medhurst
    Cc: Stephen Warren
    Cc: "H. Peter Anvin"
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     
  • In kmalloc_oob_krealloc_less, I think it is better to test
    the size2 boundary.

    If we do not call krealloc, the access of position size1 will still cause
    out-of-bounds and access of position size2 does not. After call krealloc,
    the access of position size2 cause out-of-bounds. So using size2 is more
    correct.

    Signed-off-by: Wang Long
    Cc: Andrey Ryabinin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wang Long
     
  • Signed-off-by: Wang Long
    Cc: Andrey Ryabinin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wang Long
     
  • To further clarify the purpose of the "esc" argument, rename it to "only"
    to reflect that it is a limit, not a list of additional characters to
    escape.

    Signed-off-by: Kees Cook
    Suggested-by: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • The esc argument is used to reduce which characters will be escaped. For
    example, using " " with ESCAPE_SPACE will not produce any escaped spaces.

    Signed-off-by: Kees Cook
    Cc: Andy Shevchenko
    Cc: Rasmus Villemoes
    Cc: Mathias Krause
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • In __bitmap_parselist we can accept whitespaces on head or tail during
    every parsing procedure. If input has valid ranges, there is no reason to
    reject the user.

    For example, bitmap_parselist(" 1-3, 5, ", &mask, nmaskbits). After
    separating the string, we get " 1-3", " 5", and " ". It's possible and
    reasonable to accept such string as long as the parsing result is correct.

    Signed-off-by: Pan Xinhui
    Cc: Yury Norov
    Cc: Chris Metcalf
    Cc: Rasmus Villemoes
    Cc: Sudeep Holla
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pan Xinhui
     
  • If string end with '-', for exapmle, bitmap_parselist("1,0-",&mask,
    nmaskbits), It is not in a valid pattern, so add a check after loop.
    Return -EINVAL on such condition.

    Signed-off-by: Pan Xinhui
    Cc: Yury Norov
    Cc: Chris Metcalf
    Cc: Rasmus Villemoes
    Cc: Sudeep Holla
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pan Xinhui
     
  • We can avoid in-loop incrementation of ndigits. Save current totaldigits
    to ndigits before loop, and check ndigits against totaldigits after the
    loop.

    Signed-off-by: Pan Xinhui
    Cc: Yury Norov
    Cc: Chris Metcalf
    Cc: Rasmus Villemoes
    Cc: Sudeep Holla
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pan Xinhui
     
  • strtol(3) et al accept "-0", so should we.

    Signed-off-by: Alexey Dobriyan
    Cc: David Howells
    Cc: Jan Kara
    Cc: Joel Becker
    Cc: Mark Fasheh
    Cc: Theodore Ts'o
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • The strscpy() API is intended to be used instead of strlcpy(),
    and instead of most uses of strncpy().

    - Unlike strlcpy(), it doesn't read from memory beyond (src + size).

    - Unlike strlcpy() or strncpy(), the API provides an easy way to check
    for destination buffer overflow: an -E2BIG error return value.

    - The provided implementation is robust in the face of the source
    buffer being asynchronously changed during the copy, unlike the
    current implementation of strlcpy().

    - Unlike strncpy(), the destination buffer will be NUL-terminated
    if the string in the source buffer is too long.

    - Also unlike strncpy(), the destination buffer will not be updated
    beyond the NUL termination, avoiding strncpy's behavior of zeroing
    the entire tail end of the destination buffer. (A memset() after
    the strscpy() can be used if this behavior is desired.)

    - The implementation should be reasonably performant on all
    platforms since it uses the asm/word-at-a-time.h API rather than
    simple byte copy. Kernel-to-kernel string copy is not considered
    to be performance critical in any case.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

09 Sep, 2015

5 commits

  • Merge second patch-bomb from Andrew Morton:
    "Almost all of the rest of MM. There was an unusually large amount of
    MM material this time"

    * emailed patches from Andrew Morton : (141 commits)
    zpool: remove no-op module init/exit
    mm: zbud: constify the zbud_ops
    mm: zpool: constify the zpool_ops
    mm: swap: zswap: maybe_preload & refactoring
    zram: unify error reporting
    zsmalloc: remove null check from destroy_handle_cache()
    zsmalloc: do not take class lock in zs_shrinker_count()
    zsmalloc: use class->pages_per_zspage
    zsmalloc: consider ZS_ALMOST_FULL as migrate source
    zsmalloc: partial page ordering within a fullness_list
    zsmalloc: use shrinker to trigger auto-compaction
    zsmalloc: account the number of compacted pages
    zsmalloc/zram: introduce zs_pool_stats api
    zsmalloc: cosmetic compaction code adjustments
    zsmalloc: introduce zs_can_compact() function
    zsmalloc: always keep per-class stats
    zsmalloc: drop unused variable `nr_to_migrate'
    mm/memblock.c: fix comment in __next_mem_range()
    mm/page_alloc.c: fix type information of memoryless node
    memory-hotplug: fix comments in zone_spanned_pages_in_node() and zone_spanned_pages_in_node()
    ...

    Linus Torvalds
     
  • CMA reserved memory is not part of total reserved memory. Currently
    when we print the total reserve memory it considers cma as part of
    reserve memory and do minus of totalcma_pages from reserved, which is
    wrong. In cases where total reserved is less than cma reserved we will
    get negative values & while printing we print as unsigned and we will
    get a very large value.

    Below is the show mem output on X86 ubuntu based system where CMA
    reserved is 100MB (25600 pages) & total reserved is ~40MB(10316 pages).
    And reserve memory shows a large value because of this bug.

    Before:
    [ 127.066430] 898908 pages RAM
    [ 127.066432] 671682 pages HighMem/MovableOnly
    [ 127.066434] 4294952012 pages reserved
    [ 127.066436] 25600 pages cma reserved

    After:
    [ 44.663129] 898908 pages RAM
    [ 44.663130] 671682 pages HighMem/MovableOnly
    [ 44.663130] 10316 pages reserved
    [ 44.663131] 25600 pages cma reserved

    Signed-off-by: Vishnu Pratap Singh
    Cc: Michal Nazarewicz
    Cc: Marek Szyprowski
    Cc: Joonsoo Kim
    Cc: Laurent Pinchart
    Cc: Sasha Levin
    Cc: Danesh Petigara
    Cc: Laura Abbott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vishnu Pratap Singh
     
  • Pull libnvdimm updates from Dan Williams:
    "This update has successfully completed a 0day-kbuild run and has
    appeared in a linux-next release. The changes outside of the typical
    drivers/nvdimm/ and drivers/acpi/nfit.[ch] paths are related to the
    removal of IORESOURCE_CACHEABLE, the introduction of memremap(), and
    the introduction of ZONE_DEVICE + devm_memremap_pages().

    Summary:

    - Introduce ZONE_DEVICE and devm_memremap_pages() as a generic
    mechanism for adding device-driver-discovered memory regions to the
    kernel's direct map.

    This facility is used by the pmem driver to enable pfn_to_page()
    operations on the page frames returned by DAX ('direct_access' in
    'struct block_device_operations').

    For now, the 'memmap' allocation for these "device" pages comes
    from "System RAM". Support for allocating the memmap from device
    memory will arrive in a later kernel.

    - Introduce memremap() to replace usages of ioremap_cache() and
    ioremap_wt(). memremap() drops the __iomem annotation for these
    mappings to memory that do not have i/o side effects. The
    replacement of ioremap_cache() with memremap() is limited to the
    pmem driver to ease merging the api change in v4.3.

    Completion of the conversion is targeted for v4.4.

    - Similar to the usage of memcpy_to_pmem() + wmb_pmem() in the pmem
    driver, update the VFS DAX implementation and PMEM api to provide
    persistence guarantees for kernel operations on a DAX mapping.

    - Convert the ACPI NFIT 'BLK' driver to map the block apertures as
    cacheable to improve performance.

    - Miscellaneous updates and fixes to libnvdimm including support for
    issuing "address range scrub" commands, clarifying the optimal
    'sector size' of pmem devices, a clarification of the usage of the
    ACPI '_STA' (status) property for DIMM devices, and other minor
    fixes"

    * tag 'libnvdimm-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (34 commits)
    libnvdimm, pmem: direct map legacy pmem by default
    libnvdimm, pmem: 'struct page' for pmem
    libnvdimm, pfn: 'struct page' provider infrastructure
    x86, pmem: clarify that ARCH_HAS_PMEM_API implies PMEM mapped WB
    add devm_memremap_pages
    mm: ZONE_DEVICE for "device memory"
    mm: move __phys_to_pfn and __pfn_to_phys to asm/generic/memory_model.h
    dax: drop size parameter to ->direct_access()
    nd_blk: change aperture mapping from WC to WB
    nvdimm: change to use generic kvfree()
    pmem, dax: have direct_access use __pmem annotation
    dax: update I/O path to do proper PMEM flushing
    pmem: add copy_from_iter_pmem() and clear_pmem()
    pmem, x86: clean up conditional pmem includes
    pmem: remove layer when calling arch_has_wmb_pmem()
    pmem, x86: move x86 PMEM API to new pmem.h header
    libnvdimm, e820: make CONFIG_X86_PMEM_LEGACY a tristate option
    pmem: switch to devm_ allocations
    devres: add devm_memremap
    libnvdimm, btt: write and validate parent_uuid
    ...

    Linus Torvalds
     
  • Pull security subsystem updates from James Morris:
    "Highlights:

    - PKCS#7 support added to support signed kexec, also utilized for
    module signing. See comments in 3f1e1bea.

    ** NOTE: this requires linking against the OpenSSL library, which
    must be installed, e.g. the openssl-devel on Fedora **

    - Smack
    - add IPv6 host labeling; ignore labels on kernel threads
    - support smack labeling mounts which use binary mount data

    - SELinux:
    - add ioctl whitelisting (see
    http://kernsec.org/files/lss2015/vanderstoep.pdf)
    - fix mprotect PROT_EXEC regression caused by mm change

    - Seccomp:
    - add ptrace options for suspend/resume"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (57 commits)
    PKCS#7: Add OIDs for sha224, sha284 and sha512 hash algos and use them
    Documentation/Changes: Now need OpenSSL devel packages for module signing
    scripts: add extract-cert and sign-file to .gitignore
    modsign: Handle signing key in source tree
    modsign: Use if_changed rule for extracting cert from module signing key
    Move certificate handling to its own directory
    sign-file: Fix warning about BIO_reset() return value
    PKCS#7: Add MODULE_LICENSE() to test module
    Smack - Fix build error with bringup unconfigured
    sign-file: Document dependency on OpenSSL devel libraries
    PKCS#7: Appropriately restrict authenticated attributes and content type
    KEYS: Add a name for PKEY_ID_PKCS7
    PKCS#7: Improve and export the X.509 ASN.1 time object decoder
    modsign: Use extract-cert to process CONFIG_SYSTEM_TRUSTED_KEYS
    extract-cert: Cope with multiple X.509 certificates in a single file
    sign-file: Generate CMS message as signature instead of PKCS#7
    PKCS#7: Support CMS messages also [RFC5652]
    X.509: Change recorded SKID & AKID to not include Subject or Issuer
    PKCS#7: Check content type and versions
    MAINTAINERS: The keyrings mailing list has moved
    ...

    Linus Torvalds
     
  • Pull NMI backtrace update from Russell King:
    "These changes convert the x86 NMI handling to be a library
    implementation which other architectures can make use of. Thomas
    Gleixner has reviewed and tested these changes, and wishes me to send
    these rather than taking them through the tip tree.

    The final patch in the set adds an initial implementation using this
    infrastructure to ARM, even though it doesn't send the IPI at "NMI"
    level. Patches are in progress to add the ARM equivalent of NMI, but
    we still need the IRQ-level fallback for systems where the "NMI" isn't
    available due to secure firmware denying access to it"

    * 'nmi' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
    ARM: add basic support for on-demand backtrace of other CPUs
    nmi: x86: convert to generic nmi handler
    nmi: create generic NMI backtrace implementation

    Linus Torvalds
     

06 Sep, 2015

2 commits

  • Pull vfs updates from Al Viro:
    "In this one:

    - d_move fixes (Eric Biederman)

    - UFS fixes (me; locking is mostly sane now, a bunch of bugs in error
    handling ought to be fixed)

    - switch of sb_writers to percpu rwsem (Oleg Nesterov)

    - superblock scalability (Josef Bacik and Dave Chinner)

    - swapon(2) race fix (Hugh Dickins)"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (65 commits)
    vfs: Test for and handle paths that are unreachable from their mnt_root
    dcache: Reduce the scope of i_lock in d_splice_alias
    dcache: Handle escaped paths in prepend_path
    mm: fix potential data race in SyS_swapon
    inode: don't softlockup when evicting inodes
    inode: rename i_wb_list to i_io_list
    sync: serialise per-superblock sync operations
    inode: convert inode_sb_list_lock to per-sb
    inode: add hlist_fake to avoid the inode hash lock in evict
    writeback: plug writeback at a high level
    change sb_writers to use percpu_rw_semaphore
    shift percpu_counter_destroy() into destroy_super_work()
    percpu-rwsem: kill CONFIG_PERCPU_RWSEM
    percpu-rwsem: introduce percpu_rwsem_release() and percpu_rwsem_acquire()
    percpu-rwsem: introduce percpu_down_read_trylock()
    document rwsem_release() in sb_wait_write()
    fix the broken lockdep logic in __sb_start_write()
    introduce __sb_writers_{acquired,release}() helpers
    ufs_inode_get{frag,block}(): get rid of 'phys' argument
    ufs_getfrag_block(): tidy up a bit
    ...

    Linus Torvalds
     
  • Pull md updates from Neil Brown:

    - an assortment of little fixes, several for minor races only likely to
    be hit during testing

    - further cluster-md-raid1 development, not ready for real use yet.

    - new RAID6 syndrome code for ARM NEON

    - fix a race where a write can return before failure of one device is
    properly recorded in metadata, so an immediate crash might result in
    that write being lost.

    * tag 'md/4.3' of git://neil.brown.name/md: (33 commits)
    md/raid5: ensure device failure recorded before write request returns.
    md/raid5: use bio_list for the list of bios to return.
    md/raid10: ensure device failure recorded before write request returns.
    md/raid1: ensure device failure recorded before write request returns.
    md-cluster: remove inappropriate try_module_get from join()
    md: extend spinlock protection in register_md_cluster_operations
    md-cluster: Read the disk bitmap sb and check if it needs recovery
    md-cluster: only call complete(&cinfo->completion) when node join cluster
    md-cluster: add missed lockres_free
    md-cluster: remove the unused sb_lock
    md-cluster: init suspend_list and suspend_lock early in join
    md-cluster: add the error check if failed to get dlm lock
    md-cluster: init completion within lockres_init
    md-cluster: fix deadlock issue on message lock
    md-cluster: transfer the resync ownership to another node
    md-cluster: split recover_slot for future code reuse
    md-cluster: use %pU to print UUIDs
    md: setup safemode_timer before it's being used
    md/raid5: handle possible race as reshape completes.
    md: sync sync_completed has correct value as recovery finishes.
    ...

    Linus Torvalds
     

05 Sep, 2015

3 commits

  • There were a few conflicts that are fairly easy to resolve.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • This change fills devm_gen_pool_create()/gen_pool_get() "name" argument
    stub with contents and extends of_gen_pool_get() functionality on this
    basis.

    If there is no associated platform device with a device node passed to
    of_gen_pool_get(), the function attempts to get a label property or device
    node name (= repeats MTD OF partition standard) and seeks for a named
    gen_pool registered by device of the parent device node.

    The main idea of the change is to allow registration of independent
    gen_pools under the same umbrella device, say "partitions" on "storage
    device", the original functionality of one "partition" per "storage
    device" is untouched.

    [akpm@linux-foundation.org: fix constness in devres_find()]
    [dan.carpenter@oracle.com: freeing const data pointers]
    Signed-off-by: Vladimir Zapolskiy
    Cc: Philipp Zabel
    Cc: Greg Kroah-Hartman
    Cc: Russell King
    Cc: Nicolas Ferre
    Cc: Alexandre Belloni
    Cc: Jean-Christophe Plagniol-Villard
    Cc: Shawn Guo
    Cc: Sascha Hauer
    Cc: Mauro Carvalho Chehab
    Cc: Arnd Bergmann
    Signed-off-by: Dan Carpenter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Zapolskiy
     
  • This change modifies gen_pool_get() and devm_gen_pool_create() client
    interfaces adding one more argument "name" of a gen_pool object.

    Due to implementation gen_pool_get() is capable to retrieve only one
    gen_pool associated with a device even if multiple gen_pools are created,
    fortunately right at the moment it is sufficient for the clients, hence
    provide NULL as a valid argument on both producer devm_gen_pool_create()
    and consumer gen_pool_get() sides.

    Because only one created gen_pool per device is addressable, explicitly
    add a restriction to devm_gen_pool_create() to create only one gen_pool
    per device, this implies two possible error codes returned by the
    function, account it on client side (only misc/sram). This completes
    client side changes related to genalloc updates.

    [akpm@linux-foundation.org: gen_pool_get() cleanup]
    Signed-off-by: Vladimir Zapolskiy
    Cc: Philipp Zabel
    Cc: Greg Kroah-Hartman
    Cc: Russell King
    Cc: Nicolas Ferre
    Cc: Alexandre Belloni
    Cc: Jean-Christophe Plagniol-Villard
    Cc: Shawn Guo
    Cc: Sascha Hauer
    Cc: Mauro Carvalho Chehab
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Zapolskiy
     

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
     

03 Sep, 2015

2 commits

  • Pull networking updates from David Miller:
    "Another merge window, another set of networking changes. I've heard
    rumblings that the lightweight tunnels infrastructure has been voted
    networking change of the year. But what do I know?

    1) Add conntrack support to openvswitch, from Joe Stringer.

    2) Initial support for VRF (Virtual Routing and Forwarding), which
    allows the segmentation of routing paths without using multiple
    devices. There are some semantic kinks to work out still, but
    this is a reasonably strong foundation. From David Ahern.

    3) Remove spinlock fro act_bpf fast path, from Alexei Starovoitov.

    4) Ignore route nexthops with a link down state in ipv6, just like
    ipv4. From Andy Gospodarek.

    5) Remove spinlock from fast path of act_gact and act_mirred, from
    Eric Dumazet.

    6) Document the DSA layer, from Florian Fainelli.

    7) Add netconsole support to bcmgenet, systemport, and DSA. Also
    from Florian Fainelli.

    8) Add Mellanox Switch Driver and core infrastructure, from Jiri
    Pirko.

    9) Add support for "light weight tunnels", which allow for
    encapsulation and decapsulation without bearing the overhead of a
    full blown netdevice. From Thomas Graf, Jiri Benc, and a cast of
    others.

    10) Add Identifier Locator Addressing support for ipv6, from Tom
    Herbert.

    11) Support fragmented SKBs in iwlwifi, from Johannes Berg.

    12) Allow perf PMUs to be accessed from eBPF programs, from Kaixu Xia.

    13) Add BQL support to 3c59x driver, from Loganaden Velvindron.

    14) Stop using a zero TX queue length to mean that a device shouldn't
    have a qdisc attached, use an explicit flag instead. From Phil
    Sutter.

    15) Use generic geneve netdevice infrastructure in openvswitch, from
    Pravin B Shelar.

    16) Add infrastructure to avoid re-forwarding a packet in software
    that was already forwarded by a hardware switch. From Scott
    Feldman.

    17) Allow AF_PACKET fanout function to be implemented in a bpf
    program, from Willem de Bruijn"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1458 commits)
    netfilter: nf_conntrack: make nf_ct_zone_dflt built-in
    netfilter: nf_dup{4, 6}: fix build error when nf_conntrack disabled
    net: fec: clear receive interrupts before processing a packet
    ipv6: fix exthdrs offload registration in out_rt path
    xen-netback: add support for multicast control
    bgmac: Update fixed_phy_register()
    sock, diag: fix panic in sock_diag_put_filterinfo
    flow_dissector: Use 'const' where possible.
    flow_dissector: Fix function argument ordering dependency
    ixgbe: Resolve "initialized field overwritten" warnings
    ixgbe: Remove bimodal SR-IOV disabling
    ixgbe: Add support for reporting 2.5G link speed
    ixgbe: fix bounds checking in ixgbe_setup_tc for 82598
    ixgbe: support for ethtool set_rxfh
    ixgbe: Avoid needless PHY access on copper phys
    ixgbe: cleanup to use cached mask value
    ixgbe: Remove second instance of lan_id variable
    ixgbe: use kzalloc for allocating one thing
    flow: Move __get_hash_from_flowi{4,6} into flow_dissector.c
    ixgbe: Remove unused PCI bus types
    ...

    Linus Torvalds
     
  • Pull SG updates from Jens Axboe:
    "This contains a set of scatter-gather related changes/fixes for 4.3:

    - Add support for limited chaining of sg tables even for
    architectures that do not set ARCH_HAS_SG_CHAIN. From Christoph.

    - Add sg chain support to target_rd. From Christoph.

    - Fixup open coded sg->page_link in crypto/omap-sham. From
    Christoph.

    - Fixup open coded crypto ->page_link manipulation. From Dan.

    - Also from Dan, automated fixup of manual sg_unmark_end()
    manipulations.

    - Also from Dan, automated fixup of open coded sg_phys()
    implementations.

    - From Robert Jarzmik, addition of an sg table splitting helper that
    drivers can use"

    * 'for-4.3/sg' of git://git.kernel.dk/linux-block:
    lib: scatterlist: add sg splitting function
    scatterlist: use sg_phys()
    crypto/omap-sham: remove an open coded access to ->page_link
    scatterlist: remove open coded sg_unmark_end instances
    crypto: replace scatterwalk_sg_chain with sg_chain
    target/rd: always chain S/G list
    scatterlist: allow limited chaining without ARCH_HAS_SG_CHAIN

    Linus Torvalds
     

02 Sep, 2015

2 commits

  • Pull power management and ACPI updates from Rafael Wysocki:
    "From the number of commits perspective, the biggest items are ACPICA
    and cpufreq changes with the latter taking the lead (over 50 commits).

    On the cpufreq front, there are many cleanups and minor fixes in the
    core and governors, driver updates etc. We also have a new cpufreq
    driver for Mediatek MT8173 chips.

    ACPICA mostly updates its debug infrastructure and adds a number of
    fixes and cleanups for a good measure.

    The Operating Performance Points (OPP) framework is updated with new
    DT bindings and support for them among other things.

    We have a few updates of the generic power domains framework and a
    reorganization of the ACPI device enumeration code and bus type
    operations.

    And a lot of fixes and cleanups all over.

    Included is one branch from the MFD tree as it contains some
    PM-related driver core and ACPI PM changes a few other commits are
    based on.

    Specifics:

    - ACPICA update to upstream revision 20150818 including method
    tracing extensions to allow more in-depth AML debugging in the
    kernel and a number of assorted fixes and cleanups (Bob Moore, Lv
    Zheng, Markus Elfring).

    - ACPI sysfs code updates and a documentation update related to AML
    method tracing (Lv Zheng).

    - ACPI EC driver fix related to serialized evaluations of _Qxx
    methods and ACPI tools updates allowing the EC userspace tool to be
    built from the kernel source (Lv Zheng).

    - ACPI processor driver updates preparing it for future introduction
    of CPPC support and ACPI PCC mailbox driver updates (Ashwin
    Chaugule).

    - ACPI interrupts enumeration fix for a regression related to the
    handling of IRQ attribute conflicts between MADT and the ACPI
    namespace (Jiang Liu).

    - Fixes related to ACPI device PM (Mika Westerberg, Srinidhi
    Kasagar).

    - ACPI device registration code reorganization to separate the
    sysfs-related code and bus type operations from the rest (Rafael J
    Wysocki).

    - Assorted cleanups in the ACPI core (Jarkko Nikula, Mathias Krause,
    Andy Shevchenko, Rafael J Wysocki, Nicolas Iooss).

    - ACPI cpufreq driver and ia64 cpufreq driver fixes and cleanups (Pan
    Xinhui, Rafael J Wysocki).

    - cpufreq core cleanups on top of the previous changes allowing it to
    preseve its sysfs directories over system suspend/resume (Viresh
    Kumar, Rafael J Wysocki, Sebastian Andrzej Siewior).

    - cpufreq fixes and cleanups related to governors (Viresh Kumar).

    - cpufreq updates (core and the cpufreq-dt driver) related to the
    turbo/boost mode support (Viresh Kumar, Bartlomiej Zolnierkiewicz).

    - New DT bindings for Operating Performance Points (OPP), support for
    them in the OPP framework and in the cpufreq-dt driver plus related
    OPP framework fixes and cleanups (Viresh Kumar).

    - cpufreq powernv driver updates (Shilpasri G Bhat).

    - New cpufreq driver for Mediatek MT8173 (Pi-Cheng Chen).

    - Assorted cpufreq driver (speedstep-lib, sfi, integrator) cleanups
    and fixes (Abhilash Jindal, Andrzej Hajda, Cristian Ardelean).

    - intel_pstate driver updates including Skylake-S support, support
    for enabling HW P-states per CPU and an additional vendor bypass
    list entry (Kristen Carlson Accardi, Chen Yu, Ethan Zhao).

    - cpuidle core fixes related to the handling of coupled idle states
    (Xunlei Pang).

    - intel_idle driver updates including Skylake Client support and
    support for freeze-mode-specific idle states (Len Brown).

    - Driver core updates related to power management (Andy Shevchenko,
    Rafael J Wysocki).

    - Generic power domains framework fixes and cleanups (Jon Hunter,
    Geert Uytterhoeven, Rajendra Nayak, Ulf Hansson).

    - Device PM QoS framework update to allow the latency tolerance
    setting to be exposed to user space via sysfs (Mika Westerberg).

    - devfreq support for PPMUv2 in Exynos5433 and a fix for an incorrect
    exynos-ppmu DT binding (Chanwoo Choi, Javier Martinez Canillas).

    - System sleep support updates (Alan Stern, Len Brown, SungEun Kim).

    - rockchip-io AVS support updates (Heiko Stuebner).

    - PM core clocks support fixup (Colin Ian King).

    - Power capping RAPL driver update including support for Skylake H/S
    and Broadwell-H (Radivoje Jovanovic, Seiichi Ikarashi).

    - Generic device properties framework fixes related to the handling
    of static (driver-provided) property sets (Andy Shevchenko).

    - turbostat and cpupower updates (Len Brown, Shilpasri G Bhat,
    Shreyas B Prabhu)"

    * tag 'pm+acpi-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (180 commits)
    cpufreq: speedstep-lib: Use monotonic clock
    cpufreq: powernv: Increase the verbosity of OCC console messages
    cpufreq: sfi: use kmemdup rather than duplicating its implementation
    cpufreq: drop !cpufreq_driver check from cpufreq_parse_governor()
    cpufreq: rename cpufreq_real_policy as cpufreq_user_policy
    cpufreq: remove redundant 'policy' field from user_policy
    cpufreq: remove redundant 'governor' field from user_policy
    cpufreq: update user_policy.* on success
    cpufreq: use memcpy() to copy policy
    cpufreq: remove redundant CPUFREQ_INCOMPATIBLE notifier event
    cpufreq: mediatek: Add MT8173 cpufreq driver
    dt-bindings: mediatek: Add MT8173 CPU DVFS clock bindings
    PM / Domains: Fix typo in description of genpd_dev_pm_detach()
    PM / Domains: Remove unusable governor dummies
    PM / Domains: Make pm_genpd_init() available to modules
    PM / domains: Align column headers and data in pm_genpd_summary output
    powercap / RAPL: disable the 2nd power limit properly
    tools: cpupower: Fix error when running cpupower monitor
    PM / OPP: Drop unlikely before IS_ERR(_OR_NULL)
    PM / OPP: Fix static checker warning (broken 64bit big endian systems)
    ...

    Linus Torvalds
     
  • Pull x86 mm updates from Ingo Molnar:
    "The dominant change in this cycle was the continued work to isolate
    kernel drivers from MTRR legacies: this tree gets rid of all kernel
    internal driver interfaces to MTRRs (mostly by rewriting it to proper
    PAT interfaces), the only access left is the /proc/mtrr ABI.

    This work was done by Luis R Rodriguez.

    There's also some related PCI interface additions for which I've
    Cc:-ed Bjorn"

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)
    x86/mm/mtrr: Remove kernel internal MTRR interfaces: unexport mtrr_add() and mtrr_del()
    s390/io: Add pci_iomap_wc() and pci_iomap_wc_range()
    drivers/dma/iop-adma: Use dma_alloc_writecombine() kernel-style
    drivers/video/fbdev/vt8623fb: Use arch_phys_wc_add() and pci_iomap_wc()
    drivers/video/fbdev/s3fb: Use arch_phys_wc_add() and pci_iomap_wc()
    drivers/video/fbdev/arkfb.c: Use arch_phys_wc_add() and pci_iomap_wc()
    PCI: Add pci_iomap_wc() variants
    drivers/video/fbdev/gxt4500: Use pci_ioremap_wc_bar() to map framebuffer
    drivers/video/fbdev/kyrofb: Use arch_phys_wc_add() and pci_ioremap_wc_bar()
    drivers/video/fbdev/i740fb: Use arch_phys_wc_add() and pci_ioremap_wc_bar()
    PCI: Add pci_ioremap_wc_bar()
    x86/mm: Make kernel/check.c explicitly non-modular
    x86/mm/pat: Make mm/pageattr[-test].c explicitly non-modular
    x86/mm/pat: Add comments to cachemode translation tables
    arch/*/io.h: Add ioremap_uc() to all architectures
    drivers/video/fbdev/atyfb: Use arch_phys_wc_add() and ioremap_wc()
    drivers/video/fbdev/atyfb: Replace MTRR UC hole with strong UC
    drivers/video/fbdev/atyfb: Clarify ioremap() base and length used
    drivers/video/fbdev/atyfb: Carve out framebuffer length fudging into a helper
    x86/mm, asm-generic: Add IOMMU ioremap_uc() variant default
    ...

    Linus Torvalds
     

01 Sep, 2015

6 commits

  • * acpi-pm:
    ACPI / bus: Move duplicate code to a separate new function
    mfd: Add support for Intel Sunrisepoint LPSS devices
    dmaengine: add a driver for Intel integrated DMA 64-bit
    mfd: make mfd_remove_devices() iterate in reverse order
    driver core: implement device_for_each_child_reverse()
    klist: implement klist_prev()
    Driver core: wakeup the parent device before trying probe
    ACPI / PM: Attach ACPI power domain only once
    PM / QoS: Make it possible to expose device latency tolerance to userspace
    ACPI / PM: Update the copyright notice and description of power.c

    Rafael J. Wysocki
     
  • Pull RCU updates from Ingo Molnar:
    "The main RCU changes in this cycle are:

    - the combination of tree geometry-initialization simplifications and
    OS-jitter-reduction changes to expedited grace periods. These two
    are stacked due to the large number of conflicts that would
    otherwise result.

    - privatize smp_mb__after_unlock_lock().

    This commit moves the definition of smp_mb__after_unlock_lock() to
    kernel/rcu/tree.h, in recognition of the fact that RCU is the only
    thing using this, that nothing else is likely to use it, and that
    it is likely to go away completely.

    - documentation updates.

    - torture-test updates.

    - misc fixes"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (60 commits)
    rcu,locking: Privatize smp_mb__after_unlock_lock()
    rcu: Silence lockdep false positive for expedited grace periods
    rcu: Don't disable CPU hotplug during OOM notifiers
    scripts: Make checkpatch.pl warn on expedited RCU grace periods
    rcu: Update MAINTAINERS entry
    rcu: Clarify CONFIG_RCU_EQS_DEBUG help text
    rcu: Fix backwards RCU_LOCKDEP_WARN() in synchronize_rcu_tasks()
    rcu: Rename rcu_lockdep_assert() to RCU_LOCKDEP_WARN()
    rcu: Make rcu_is_watching() really notrace
    cpu: Wait for RCU grace periods concurrently
    rcu: Create a synchronize_rcu_mult()
    rcu: Fix obsolete priority-boosting comment
    rcu: Use WRITE_ONCE in RCU_INIT_POINTER
    rcu: Hide RCU_NOCB_CPU behind RCU_EXPERT
    rcu: Add RCU-sched flavors of get-state and cond-sync
    rcu: Add fastpath bypassing funnel locking
    rcu: Rename RCU_GP_DONE_FQS to RCU_GP_DOING_FQS
    rcu: Pull out wait_event*() condition into helper function
    documentation: Describe new expedited stall warnings
    rcu: Add stall warnings to synchronize_sched_expedited()
    ...

    Linus Torvalds
     
  • Pull crypto updates from Herbert Xu:
    "Here is the crypto update for 4.3:

    API:

    - the AEAD interface transition is now complete.
    - add top-level skcipher interface.

    Drivers:

    - x86-64 acceleration for chacha20/poly1305.
    - add sunxi-ss Allwinner Security System crypto accelerator.
    - add RSA algorithm to qat driver.
    - add SRIOV support to qat driver.
    - add LS1021A support to caam.
    - add i.MX6 support to caam"

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (163 commits)
    crypto: algif_aead - fix for multiple operations on AF_ALG sockets
    crypto: qat - enable legacy VFs
    MPI: Fix mpi_read_buffer
    crypto: qat - silence a static checker warning
    crypto: vmx - Fixing opcode issue
    crypto: caam - Use the preferred style for memory allocations
    crypto: caam - Propagate the real error code in caam_probe
    crypto: caam - Fix the error handling in caam_probe
    crypto: caam - fix writing to JQCR_MS when using service interface
    crypto: hash - Add AHASH_REQUEST_ON_STACK
    crypto: testmgr - Use new skcipher interface
    crypto: skcipher - Add top-level skcipher interface
    crypto: cmac - allow usage in FIPS mode
    crypto: sahara - Use dmam_alloc_coherent
    crypto: caam - Add support for LS1021A
    crypto: qat - Don't move data inside output buffer
    crypto: vmx - Fixing GHASH Key issue on little endian
    crypto: vmx - Fixing AES-CTR counter bug
    crypto: null - Add missing Kconfig tristate for NULL2
    crypto: nx - Add forward declaration for struct crypto_aead
    ...

    Linus Torvalds
     
  • Pull clk updates from Michael Turquette:
    "The clk framework changes for 4.3 are mostly updates to existing
    drivers and the addition of new clock drivers. Stephen Boyd has also
    done a lot of subsystem-wide driver clean-ups (thanks!). There are
    also fixes to the framework core and changes to better split clock
    provider drivers from clock consumer drivers"

    * tag 'clk-for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (227 commits)
    clk: s5pv210: add missing call to samsung_clk_of_add_provider()
    clk: pistachio: correct critical clock list
    clk: pistachio: Fix PLL rate calculation in integer mode
    clk: pistachio: Fix override of clk-pll settings from boot loader
    clk: pistachio: Fix 32bit integer overflows
    clk: tegra: Fix some static checker problems
    clk: qcom: Fix MSM8916 prng clock enable bit
    clk: Add missing header for 'bool' definition to clk-conf.h
    drivers/clk: appropriate __init annotation for const data
    clk: rockchip: register pll mux before pll itself
    clk: add bindings for the Ux500 clocks
    clk/ARM: move Ux500 PRCC bases to the device tree
    clk: remove duplicated code with __clk_set_parent_after
    clk: Convert __clk_get_name(hw->clk) to clk_hw_get_name(hw)
    clk: Constify clk_hw argument to provider APIs
    clk: Hi6220: add stub clock driver
    dt-bindings: clk: Hi6220: Document stub clock driver
    dt-bindings: arm: Hi6220: add doc for SRAM controller
    clk: atlas7: fix pll missed divide NR in fraction mode
    clk: atlas7: fix bit field and its root clk for coresight_tpiu
    ...

    Linus Torvalds
     
  • To fix build errors:
    kernel/built-in.o: In function `bpf_trace_printk':
    bpf_trace.c:(.text+0x11a254): undefined reference to `strncpy_from_unsafe'
    kernel/built-in.o: In function `fetch_memory_string':
    trace_kprobe.c:(.text+0x11acf8): undefined reference to `strncpy_from_unsafe'

    move strncpy_from_unsafe() next to probe_kernel_read/write()
    which use the same memory access style.

    Reported-by: Fengguang Wu
    Reported-by: Guenter Roeck
    Fixes: 1a6877b9c0c2 ("lib: introduce strncpy_from_unsafe()")
    Signed-off-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Alexei Starovoitov
     
  • This implements XOR syndrome calculation using NEON intrinsics.
    As before, the module can be built for ARM and arm64 from the
    same source.

    Relative performance on a Cortex-A57 based system:

    raid6: int64x1 gen() 905 MB/s
    raid6: int64x1 xor() 881 MB/s
    raid6: int64x2 gen() 1343 MB/s
    raid6: int64x2 xor() 1286 MB/s
    raid6: int64x4 gen() 1896 MB/s
    raid6: int64x4 xor() 1321 MB/s
    raid6: int64x8 gen() 1773 MB/s
    raid6: int64x8 xor() 1165 MB/s
    raid6: neonx1 gen() 1834 MB/s
    raid6: neonx1 xor() 1278 MB/s
    raid6: neonx2 gen() 2528 MB/s
    raid6: neonx2 xor() 1942 MB/s
    raid6: neonx4 gen() 2888 MB/s
    raid6: neonx4 xor() 2334 MB/s
    raid6: neonx8 gen() 2957 MB/s
    raid6: neonx8 xor() 2232 MB/s
    raid6: using algorithm neonx8 gen() 2957 MB/s
    raid6: .... xor() 2232 MB/s, rmw enabled

    Cc: Markus Stockhausen
    Cc: Neil Brown
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: NeilBrown

    Ard Biesheuvel
     

29 Aug, 2015

1 commit


28 Aug, 2015

1 commit

  • This should result in a pretty sizeable performance gain for reads. For
    rough comparison I did some simple read testing using PMEM to compare
    reads of write combining (WC) mappings vs write-back (WB). This was
    done on a random lab machine.

    PMEM reads from a write combining mapping:
    # dd of=/dev/null if=/dev/pmem0 bs=4096 count=100000
    100000+0 records in
    100000+0 records out
    409600000 bytes (410 MB) copied, 9.2855 s, 44.1 MB/s

    PMEM reads from a write-back mapping:
    # dd of=/dev/null if=/dev/pmem0 bs=4096 count=1000000
    1000000+0 records in
    1000000+0 records out
    4096000000 bytes (4.1 GB) copied, 3.44034 s, 1.2 GB/s

    To be able to safely support a write-back aperture I needed to add
    support for the "read flush" _DSM flag, as outlined in the DSM spec:

    http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf

    This flag tells the ND BLK driver that it needs to flush the cache lines
    associated with the aperture after the aperture is moved but before any
    new data is read. This ensures that any stale cache lines from the
    previous contents of the aperture will be discarded from the processor
    cache, and the new data will be read properly from the DIMM. We know
    that the cache lines are clean and will be discarded without any
    writeback because either a) the previous aperture operation was a read,
    and we never modified the contents of the aperture, or b) the previous
    aperture operation was a write and we must have written back the dirtied
    contents of the aperture to the DIMM before the I/O was completed.

    In order to add support for the "read flush" flag I needed to add a
    generic routine to invalidate cache lines, mmio_flush_range(). This is
    protected by the ARCH_HAS_MMIO_FLUSH Kconfig variable, and is currently
    only supported on x86.

    Signed-off-by: Ross Zwisler
    Signed-off-by: Dan Williams

    Ross Zwisler