20 Mar, 2016

7 commits

  • Pull vfs updates from Al Viro:

    - Preparations of parallel lookups (the remaining main obstacle is the
    need to move security_d_instantiate(); once that becomes safe, the
    rest will be a matter of rather short series local to fs/*.c

    - preadv2/pwritev2 series from Christoph

    - assorted fixes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (32 commits)
    splice: handle zero nr_pages in splice_to_pipe()
    vfs: show_vfsstat: do not ignore errors from show_devname method
    dcache.c: new helper: __d_add()
    don't bother with __d_instantiate(dentry, NULL)
    untangle fsnotify_d_instantiate() a bit
    uninline d_add()
    replace d_add_unique() with saner primitive
    quota: use lookup_one_len_unlocked()
    cifs_get_root(): use lookup_one_len_unlocked()
    nfs_lookup: don't bother with d_instantiate(dentry, NULL)
    kill dentry_unhash()
    ceph_fill_trace(): don't bother with d_instantiate(dn, NULL)
    autofs4: don't bother with d_instantiate(dentry, NULL) in ->lookup()
    configfs: move d_rehash() into configfs_create() for regular files
    ceph: don't bother with d_rehash() in splice_dentry()
    namei: teach lookup_slow() to skip revalidate
    namei: massage lookup_slow() to be usable by lookup_one_len_unlocked()
    lookup_one_len_unlocked(): use lookup_dcache()
    namei: simplify invalidation logics in lookup_dcache()
    namei: change calling conventions for lookup_{fast,slow} and follow_managed()
    ...

    Linus Torvalds
     
  • Pull audit updates from Paul Moore:
    "A small set of patches for audit this time; just three in total and
    one is a spelling fix.

    The two patches with actual content are designed to help prevent new
    instances of auditd from displacing an existing, functioning auditd
    and to generate a log of the attempt. Not to worry, dead/stuck auditd
    instances can still be replaced by a new instance without problem.

    Nothing controversial, and everything passes our regression suite"

    * 'stable-4.6' of git://git.infradead.org/users/pcmoore/audit:
    audit: Fix typo in comment
    audit: log failed attempts to change audit_pid configuration
    audit: stop an old auditd being starved out by a new auditd

    Linus Torvalds
     
  • Pull ARM updates from Russell King:
    "Another mixture of changes this time around:

    - Split XIP linker file from main linker file to make it more
    maintainable, and various XIP fixes, and clean up a resulting
    macro.

    - Decompressor cleanups from Masahiro Yamada

    - Avoid printing an error for a missing L2 cache

    - Remove some duplicated symbols in System.map, and move
    vectors/stubs back into kernel VMA

    - Various low priority fixes from Arnd

    - Updates to allow bus match functions to return negative errno
    values, touching some drivers and the driver core. Greg has acked
    these changes.

    - Virtualisation platform udpates form Jean-Philippe Brucker.

    - Security enhancements from Kees Cook

    - Rework some Kconfig dependencies and move PSCI idle management code
    out of arch/arm into drivers/firmware/psci.c

    - ARM DMA mapping updates, touching media, acked by Mauro.

    - Fix places in ARM code which should be using virt_to_idmap() so
    that Keystone2 can work.

    - Fix Marvell Tauros2 to work again with non-DT boots.

    - Provide a delay timer for ARM Orion platforms"

    * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (45 commits)
    ARM: 8546/1: dma-mapping: refactor to fix coherent+cma+gfp=0
    ARM: 8547/1: dma-mapping: store buffer information
    ARM: 8543/1: decompressor: rename suffix_y to compress-y
    ARM: 8542/1: decompressor: merge piggy.*.S and simplify Makefile
    ARM: 8541/1: decompressor: drop redundant FORCE in Makefile
    ARM: 8540/1: decompressor: use clean-files instead of extra-y to clean files
    ARM: 8539/1: decompressor: drop more unneeded assignments to "targets"
    ARM: 8538/1: decompressor: drop unneeded assignments to "targets"
    ARM: 8532/1: uncompress: mark putc as inline
    ARM: 8531/1: turn init_new_context into an inline function
    ARM: 8530/1: remove VIRT_TO_BUS
    ARM: 8537/1: drop unused DEBUG_RODATA from XIP_KERNEL
    ARM: 8536/1: mm: hide __start_rodata_section_aligned for non-debug builds
    ARM: 8535/1: mm: DEBUG_RODATA makes no sense with XIP_KERNEL
    ARM: 8534/1: virt: fix hyp-stub build for pre-ARMv7 CPUs
    ARM: make the physical-relative calculation more obvious
    ARM: 8512/1: proc-v7.S: Adjust stack address when XIP_KERNEL
    ARM: 8411/1: Add default SPARSEMEM settings
    ARM: 8503/1: clk_register_clkdev: remove format string interface
    ARM: 8529/1: remove 'i' and 'zi' targets
    ...

    Linus Torvalds
     
  • Pull arch/sh updates from Rich Felker:
    "This includes minor cleanups, a fix for a crash that likely affects
    all sh models with MMU, and introduction of a framework for boards
    described by device tree, which sets the stage for future J2 support"

    * tag 'tag-sh-for-4.6' of git://git.libc.org/linux-sh:
    sched/preempt, sh: kmap_coherent relies on disabled preemption
    sh: add SMP method selection to device tree pseudo-board
    sh: add device tree support and generic board using device tree
    sh: remove arch-specific localtimer and use generic one
    sh: make MMU-specific SMP code conditional on CONFIG_MMU
    sh: provide unified syscall trap compatible with all SH models
    sh: New gcc support
    sh: Disable trace for kernel uncompressing.
    sh: Use generic clkdev.h header

    Linus Torvalds
     
  • Pull powerpc updates from Michael Ellerman:
    "This was delayed a day or two by some build-breakage on old toolchains
    which we've now fixed.

    There's two PCI commits both acked by Bjorn.

    There's one commit to mm/hugepage.c which is (co)authored by Kirill.

    Highlights:
    - Restructure Linux PTE on Book3S/64 to Radix format from Paul
    Mackerras
    - Book3s 64 MMU cleanup in preparation for Radix MMU from Aneesh
    Kumar K.V
    - Add POWER9 cputable entry from Michael Neuling
    - FPU/Altivec/VSX save/restore optimisations from Cyril Bur
    - Add support for new ftrace ABI on ppc64le from Torsten Duwe

    Various cleanups & minor fixes from:
    - Adam Buchbinder, Andrew Donnellan, Balbir Singh, Christophe Leroy,
    Cyril Bur, Luis Henriques, Madhavan Srinivasan, Pan Xinhui, Russell
    Currey, Sukadev Bhattiprolu, Suraj Jitindar Singh.

    General:
    - atomics: Allow architectures to define their own __atomic_op_*
    helpers from Boqun Feng
    - Implement atomic{, 64}_*_return_* variants and acquire/release/
    relaxed variants for (cmp)xchg from Boqun Feng
    - Add powernv_defconfig from Jeremy Kerr
    - Fix BUG_ON() reporting in real mode from Balbir Singh
    - Add xmon command to dump OPAL msglog from Andrew Donnellan
    - Add xmon command to dump process/task similar to ps(1) from Douglas
    Miller
    - Clean up memory hotplug failure paths from David Gibson

    pci/eeh:
    - Redesign SR-IOV on PowerNV to give absolute isolation between VFs
    from Wei Yang.
    - EEH Support for SRIOV VFs from Wei Yang and Gavin Shan.
    - PCI/IOV: Rename and export virtfn_{add, remove} from Wei Yang
    - PCI: Add pcibios_bus_add_device() weak function from Wei Yang
    - MAINTAINERS: Update EEH details and maintainership from Russell
    Currey

    cxl:
    - Support added to the CXL driver for running on both bare-metal and
    hypervisor systems, from Christophe Lombard and Frederic Barrat.
    - Ignore probes for virtual afu pci devices from Vaibhav Jain

    perf:
    - Export Power8 generic and cache events to sysfs from Sukadev
    Bhattiprolu
    - hv-24x7: Fix usage with chip events, display change in counter
    values, display domain indices in sysfs, eliminate domain suffix in
    event names, from Sukadev Bhattiprolu

    Freescale:
    - Updates from Scott: "Highlights include 8xx optimizations, 32-bit
    checksum optimizations, 86xx consolidation, e5500/e6500 cpu
    hotplug, more fman and other dt bits, and minor fixes/cleanup"

    * tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (179 commits)
    powerpc: Fix unrecoverable SLB miss during restore_math()
    powerpc/8xx: Fix do_mtspr_cpu6() build on older compilers
    powerpc/rcpm: Fix build break when SMP=n
    powerpc/book3e-64: Use hardcoded mttmr opcode
    powerpc/fsl/dts: Add "jedec,spi-nor" flash compatible
    powerpc/T104xRDB: add tdm riser card node to device tree
    powerpc32: PAGE_EXEC required for inittext
    powerpc/mpc85xx: Add pcsphy nodes to FManV3 device tree
    powerpc/mpc85xx: Add MDIO bus muxing support to the board device tree(s)
    powerpc/86xx: Introduce and use common dtsi
    powerpc/86xx: Update device tree
    powerpc/86xx: Move dts files to fsl directory
    powerpc/86xx: Switch to kconfig fragments approach
    powerpc/86xx: Update defconfigs
    powerpc/86xx: Consolidate common platform code
    powerpc32: Remove one insn in mulhdu
    powerpc32: small optimisation in flush_icache_range()
    powerpc: Simplify test in __dma_sync()
    powerpc32: move xxxxx_dcache_range() functions inline
    powerpc32: Remove clear_pages() and define clear_page() inline
    ...

    Linus Torvalds
     
  • Pull DeviceTree updates from Rob Herring:

    - new tool 'dtx_diff' to diff DT files

    - sync kernel's dtc/libfdt to current dtc repo master

    - fix for reserved memory regions located in highmem

    - document standard unit suffixes for DT properties

    - various DT binding doc updates

    * tag 'devicetree-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    of: Add vendor prefix for eGalax_eMPIA Technology Inc
    Input: ads7846: Add description how to use internal reference (ADS7846)
    ARM: realview: add EB syscon variants to bindings
    devicetree: bindings: ARM: Use "uV" for micro-volt
    serial: fsl-imx-uart: Fix typo in fsl,dte-mode description
    of: add 'const' for of_property_*_string*() parameter '*np'
    of/unittest: fix infinite loop in of_unittest_destroy_tracked_overlays()
    of: alloc anywhere from memblock if range not specified
    kbuild: Allow using host dtc instead of kernel's copy
    of: resolver: Add missing of_node_get and of_node_put
    of: Add United Radiant Technology Corporation vendor prefix
    dt/bindings: add documentation on standard property unit suffixes
    scripts/dtc: Update to upstream commit b06e55c88b9b
    ARM: boot: Add an implementation of strnlen for libfdt
    scripts/dtc: dtx_diff - add info to error message
    dtc: create tool to diff device trees

    Linus Torvalds
     
  • Pull networking updates from David Miller:
    "Highlights:

    1) Support more Realtek wireless chips, from Jes Sorenson.

    2) New BPF types for per-cpu hash and arrap maps, from Alexei
    Starovoitov.

    3) Make several TCP sysctls per-namespace, from Nikolay Borisov.

    4) Allow the use of SO_REUSEPORT in order to do per-thread processing
    of incoming TCP/UDP connections. The muxing can be done using a
    BPF program which hashes the incoming packet. From Craig Gallek.

    5) Add a multiplexer for TCP streams, to provide a messaged based
    interface. BPF programs can be used to determine the message
    boundaries. From Tom Herbert.

    6) Add 802.1AE MACSEC support, from Sabrina Dubroca.

    7) Avoid factorial complexity when taking down an inetdev interface
    with lots of configured addresses. We were doing things like
    traversing the entire address less for each address removed, and
    flushing the entire netfilter conntrack table for every address as
    well.

    8) Add and use SKB bulk free infrastructure, from Jesper Brouer.

    9) Allow offloading u32 classifiers to hardware, and implement for
    ixgbe, from John Fastabend.

    10) Allow configuring IRQ coalescing parameters on a per-queue basis,
    from Kan Liang.

    11) Extend ethtool so that larger link mode masks can be supported.
    From David Decotigny.

    12) Introduce devlink, which can be used to configure port link types
    (ethernet vs Infiniband, etc.), port splitting, and switch device
    level attributes as a whole. From Jiri Pirko.

    13) Hardware offload support for flower classifiers, from Amir Vadai.

    14) Add "Local Checksum Offload". Basically, for a tunneled packet
    the checksum of the outer header is 'constant' (because with the
    checksum field filled into the inner protocol header, the payload
    of the outer frame checksums to 'zero'), and we can take advantage
    of that in various ways. From Edward Cree"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1548 commits)
    bonding: fix bond_get_stats()
    net: bcmgenet: fix dma api length mismatch
    net/mlx4_core: Fix backward compatibility on VFs
    phy: mdio-thunder: Fix some Kconfig typos
    lan78xx: add ndo_get_stats64
    lan78xx: handle statistics counter rollover
    RDS: TCP: Remove unused constant
    RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket
    net: smc911x: convert pxa dma to dmaengine
    team: remove duplicate set of flag IFF_MULTICAST
    bonding: remove duplicate set of flag IFF_MULTICAST
    net: fix a comment typo
    ethernet: micrel: fix some error codes
    ip_tunnels, bpf: define IP_TUNNEL_OPTS_MAX and use it
    bpf, dst: add and use dst_tclassid helper
    bpf: make skb->tc_classid also readable
    net: mvneta: bm: clarify dependencies
    cls_bpf: reset class and reuse major in da
    ldmvsw: Checkpatch sunvnet.c and sunvnet_common.c
    ldmvsw: Add ldmvsw.c driver code
    ...

    Linus Torvalds
     

19 Mar, 2016

33 commits

  • Pull cgroup updates from Tejun Heo:
    "cgroup changes for v4.6-rc1. No userland visible behavior changes in
    this pull request. I'll send out a separate pull request for the
    addition of cgroup namespace support.

    - The biggest change is the revamping of cgroup core task migration
    and controller handling logic. There are quite a few places where
    controllers and tasks are manipulated. Previously, many of those
    places implemented custom operations for each specific use case
    assuming specific starting conditions. While this worked, it makes
    the code fragile and difficult to follow.

    The bulk of this pull request restructures these operations so that
    most related operations are performed through common helpers which
    implement recursive (subtrees are always processed consistently)
    and idempotent (they make cgroup hierarchy converge to the target
    state rather than performing operations assuming specific starting
    conditions). This makes the code a lot easier to understand,
    verify and extend.

    - Implicit controller support is added. This is primarily for using
    perf_event on the v2 hierarchy so that perf can match cgroup v2
    path without requiring the user to do anything special. The kernel
    portion of perf_event changes is acked but userland changes are
    still pending review.

    - cgroup_no_v1= boot parameter added to ease testing cgroup v2 in
    certain environments.

    - There is a regression introduced during v4.4 devel cycle where
    attempts to migrate zombie tasks can mess up internal object
    management. This was fixed earlier this week and included in this
    pull request w/ stable cc'd.

    - Misc non-critical fixes and improvements"

    * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (44 commits)
    cgroup: avoid false positive gcc-6 warning
    cgroup: ignore css_sets associated with dead cgroups during migration
    Documentation: cgroup v2: Trivial heading correction.
    cgroup: implement cgroup_subsys->implicit_on_dfl
    cgroup: use css_set->mg_dst_cgrp for the migration target cgroup
    cgroup: make cgroup[_taskset]_migrate() take cgroup_root instead of cgroup
    cgroup: move migration destination verification out of cgroup_migrate_prepare_dst()
    cgroup: fix incorrect destination cgroup in cgroup_update_dfl_csses()
    cgroup: Trivial correction to reflect controller.
    cgroup: remove stale item in cgroup-v1 document INDEX file.
    cgroup: update css iteration in cgroup_update_dfl_csses()
    cgroup: allocate 2x cgrp_cset_links when setting up a new root
    cgroup: make cgroup_calc_subtree_ss_mask() take @this_ss_mask
    cgroup: reimplement rebind_subsystems() using cgroup_apply_control() and friends
    cgroup: use cgroup_apply_enable_control() in cgroup creation path
    cgroup: combine cgroup_mutex locking and offline css draining
    cgroup: factor out cgroup_{apply|finalize}_control() from cgroup_subtree_control_write()
    cgroup: introduce cgroup_{save|propagate|restore}_control()
    cgroup: make cgroup_drain_offline() and cgroup_apply_control_{disable|enable}() recursive
    cgroup: factor out cgroup_apply_control_enable() from cgroup_subtree_control_write()
    ...

    Linus Torvalds
     
  • bond_get_stats() can be called from rtnetlink (with RTNL held)
    or from /proc/net/dev seq handler (with RCU held)

    The logic added in commit 5f0c5f73e5ef ("bonding: make global bonding
    stats more reliable") kind of assumed only one cpu could run there.

    If multiple threads are reading /proc/net/dev, stats can be really
    messed up after a while.

    A second problem is that some fields are 32bit, so we need to properly
    handle the wrap around problem.

    Given that RTNL is not always held, we need to use
    bond_for_each_slave_rcu().

    Fixes: 5f0c5f73e5ef ("bonding: make global bonding stats more reliable")
    Signed-off-by: Eric Dumazet
    Cc: Andy Gospodarek
    Cc: Jay Vosburgh
    Cc: Veaceslav Falico
    Reviewed-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • When un-mapping skb->data in __bcmgenet_tx_reclaim(),
    we must use the length that was used in original dma_map_single(),
    instead of skb->len that might be bigger (includes the frags)

    We simply can store skb_len into tx_cb_ptr->dma_len and use it
    at unmap time.

    Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file")
    Signed-off-by: Eric Dumazet
    Acked-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Commit 85743f1eb345 ("net/mlx4_core: Set UAR page size to 4KB regardless
    of system page size") introduced dependency where old VF drivers without
    this fix fail to load if the PF driver runs with this commit.

    To resolve this add a module parameter which disables that functionality
    by default. If both the PF and VFs are running with a driver with that
    commit the administrator may set the module param to true.

    The module parameter is called enable_4k_uar.

    Fixes: 85743f1eb345 ('net/mlx4_core: Set UAR page size to 4KB ...')
    Signed-off-by: Eli Cohen
    Tested-by: Alexey Kardashevskiy
    Signed-off-by: David S. Miller

    Eli Cohen
     
  • Pull libata updates from Tejun Heo:

    - ahci grew runtime power management support so that the controller can
    be turned off if no devices are attached.

    - sata_via isn't dead yet. It got hotplug support and more refined
    workaround for certain WD drives.

    - Misc cleanups. There's a merge from for-4.5-fixes to avoid confusing
    conflicts in ahci PCI ID table.

    * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
    ata: ahci_xgene: dereferencing uninitialized pointer in probe
    AHCI: Remove obsolete Intel Lewisburg SATA RAID device IDs
    ata: sata_rcar: Use ARCH_RENESAS
    sata_via: Implement hotplug for VT6421
    sata_via: Apply WD workaround only when needed on VT6421
    ahci: Add runtime PM support for the host controller
    ahci: Add functions to manage runtime PM of AHCI ports
    ahci: Convert driver to use modern PM hooks
    ahci: Cache host controller version
    scsi: Drop runtime PM usage count after host is added
    scsi: Set request queue runtime PM status back to active on resume
    block: Add blk_set_runtime_active()
    ata: ahci_mvebu: add support for Armada 3700 variant
    libata: fix unbalanced spin_lock_irqsave/spin_unlock_irq() in ata_scsi_park_show()
    libata: support AHCI on OCTEON platform

    Linus Torvalds
     
  • Pull workqueue updates from Tejun Heo:
    "Three trivial workqueue changes"

    * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
    workqueue: Fix comment for work_on_cpu()
    sched/core: Get rid of 'cpu' argument in wq_worker_sleeping()
    workqueue: Replace usage of init_name with dev_set_name()

    Linus Torvalds
     
  • Drop two extra occurrences of "on" in option title and help text.

    Fixes: 379d7ac7ca31 ("phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses.")
    Cc: David Daney
    Signed-off-by: Andreas Färber
    Acked-by: David Daney
    Signed-off-by: David S. Miller

    Andreas Färber
     
  • Add lan78xx_get_stats64 of ndo_get_stats64 to report
    all statistics counters including errors from HW statistics.

    Read from HW when auto suspend is disabled, use saved counter when
    auto suspend is enabled because periodic call to ndo_get_stats64
    prevents USB auto suspend.

    Signed-off-by: Woojung Huh
    Signed-off-by: David S. Miller

    Woojung Huh
     
  • Update to handle statistics counter rollover.
    Check statistics counter periodically and compensate it when
    counter value rolls over at max (20 or 32bits).

    Simple mechanism adjusts monitoring timer to allow USB auto suspend.

    Signed-off-by: Woojung Huh
    Signed-off-by: David S. Miller

    Woojung Huh
     
  • Merge second patch-bomb from Andrew Morton:

    - a couple of hotfixes

    - the rest of MM

    - a new timer slack control in procfs

    - a couple of procfs fixes

    - a few misc things

    - some printk tweaks

    - lib/ updates, notably to radix-tree.

    - add my and Nick Piggin's old userspace radix-tree test harness to
    tools/testing/radix-tree/. Matthew said it was a godsend during the
    radix-tree work he did.

    - a few code-size improvements, switching to __always_inline where gcc
    screwed up.

    - partially implement character sets in sscanf

    * emailed patches from Andrew Morton : (118 commits)
    sscanf: implement basic character sets
    lib/bug.c: use common WARN helper
    param: convert some "on"/"off" users to strtobool
    lib: add "on"/"off" support to kstrtobool
    lib: update single-char callers of strtobool()
    lib: move strtobool() to kstrtobool()
    include/linux/unaligned: force inlining of byteswap operations
    include/uapi/linux/byteorder, swab: force inlining of some byteswap operations
    include/asm-generic/atomic-long.h: force inlining of some atomic_long operations
    usb: common: convert to use match_string() helper
    ide: hpt366: convert to use match_string() helper
    ata: hpt366: convert to use match_string() helper
    power: ab8500: convert to use match_string() helper
    power: charger_manager: convert to use match_string() helper
    drm/edid: convert to use match_string() helper
    pinctrl: convert to use match_string() helper
    device property: convert to use match_string() helper
    lib/string: introduce match_string() helper
    radix-tree tests: add test for radix_tree_iter_next
    radix-tree tests: add regression3 test
    ...

    Linus Torvalds
     
  • Sowmini Varadhan says:

    ====================
    RDS: TCP: tunable socket buffer parameters

    Patch 1 uses sysctl to create tunable socket buffer size parameters.

    Patch 2 removes an unuused constant.

    v2: use sysctl
    v3: review comments from Santosh Shilimkar, Eric Dumazet
    v4: review comments from Hannes Sowa
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • RDS_TCP_DEFAULT_BUFSIZE has been unused since commit 1edd6a14d24f
    ("RDS-TCP: Do not bloat sndbuf/rcvbuf in rds_tcp_tune").

    Signed-off-by: Sowmini Varadhan
    Signed-off-by: David S. Miller

    Sowmini Varadhan
     
  • Add per-net sysctl tunables to set the size of sndbuf and
    rcvbuf on the kernel tcp socket.

    The tunables are added at /proc/sys/net/rds/tcp/rds_tcp_sndbuf
    and /proc/sys/net/rds/tcp/rds_tcp_rcvbuf.

    These values must be set before accept() or connect(),
    and there may be an arbitrary number of existing rds-tcp
    sockets when the tunable is modified. To make sure that all
    connections in the netns pick up the same value for the tunable,
    we reset existing rds-tcp connections in the netns, so that
    they can reconnect with the new parameters.

    Signed-off-by: Sowmini Varadhan
    Signed-off-by: David S. Miller

    Sowmini Varadhan
     
  • Convert the dma transfers to be dmaengine based, now pxa has a dmaengine
    slave driver. This makes this driver a bit more PXA agnostic.

    The driver was only compile tested. The risk is quite small as no
    current PXA platform I'm aware of is using smc911x driver.

    Signed-off-by: Robert Jarzmik
    Tested-by: Fabio Estevam
    Signed-off-by: David S. Miller

    Robert Jarzmik
     
  • Zhang Shengju says:

    ====================
    remove duplicate set of flag IFF_MULTICAST

    This patch series remove duplicate set of flag IFF_MULTICAST.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Remove unnecessary set of flag IFF_MULTICAST, since ether_setup
    already does this.

    Signed-off-by: Zhang Shengju
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Zhang Shengju
     
  • Remove unnecessary set of flag IFF_MULTICAST, since ether_setup
    already does this.

    Signed-off-by: Zhang Shengju
    Reviewed-by: Nikolay Aleksandrov
    Signed-off-by: Andy Gospodarek
    Signed-off-by: David S. Miller

    Zhang Shengju
     
  • Pull block driver updates from Jens Axboe:
    "This is the block driver pull request for this merge window. It sits
    on top of for-4.6/core, that was just sent out.

    This contains:

    - A set of fixes for lightnvm. One from Alan, fixing an overflow,
    and the rest from the usual suspects, Javier and Matias.

    - A set of fixes for nbd from Markus and Dan, and a fixup from Arnd
    for correct usage of the signed 64-bit divider.

    - A set of bug fixes for the Micron mtip32xx, from Asai.

    - A fix for the brd discard handling from Bart.

    - Update the maintainers entry for cciss, since that hardware has
    transferred ownership.

    - Three bug fixes for bcache from Eric Wheeler.

    - Set of fixes for xen-blk{back,front} from Jan and Konrad.

    - Removal of the cpqarray driver. It has been disabled in Kconfig
    since 2013, and we were initially scheduled to remove it in 3.15.

    - Various updates and fixes for NVMe, with the most important being:

    - Removal of the per-device NVMe thread, replacing that with a
    watchdog timer instead. From Christoph.

    - Exposing the namespace WWID through sysfs, from Keith.

    - Set of cleanups from Ming Lin.

    - Logging the controller device name instead of the underlying
    PCI device name, from Sagi.

    - And a bunch of fixes and optimizations from the usual suspects
    in this area"

    * 'for-4.6/drivers' of git://git.kernel.dk/linux-block: (49 commits)
    NVMe: Expose ns wwid through single sysfs entry
    drivers:block: cpqarray clean up
    brd: Fix discard request processing
    cpqarray: remove it from the kernel
    cciss: update MAINTAINERS
    NVMe: Remove unused sq_head read in completion path
    bcache: fix cache_set_flush() NULL pointer dereference on OOM
    bcache: cleaned up error handling around register_cache()
    bcache: fix race of writeback thread starting before complete initialization
    NVMe: Create discard zero quirk white list
    nbd: use correct div_s64 helper
    mtip32xx: remove unneeded variable in mtip_cmd_timeout()
    lightnvm: generalize rrpc ppa calculations
    lightnvm: remove struct nvm_dev->total_blocks
    lightnvm: rename ->nr_pages to ->nr_sects
    lightnvm: update closed list outside of intr context
    xen/blback: Fit the important information of the thread in 17 characters
    lightnvm: fold get bb tbl when using dual/quad plane mode
    lightnvm: fix up nonsensical configure overrun checking
    xen-blkback: advertise indirect segment support earlier
    ...

    Linus Torvalds
     
  • Pull core block updates from Jens Axboe:
    "Here are the core block changes for this merge window. Not a lot of
    exciting stuff going on in this round, most of the changes have been
    on the driver side of things. That pull request is coming next. This
    pull request contains:

    - A set of fixes for chained bio handling from Christoph.

    - A tag bounds check for blk-mq from Hannes, ensuring that we don't
    do something stupid if a device reports an invalid tag value.

    - A set of fixes/updates for the CFQ IO scheduler from Jan Kara.

    - A set of blk-mq fixes from Keith, adding support for dynamic
    hardware queues, and fixing init of max_dev_sectors for stacking
    devices.

    - A fix for the dynamic hw context from Ming.

    - Enabling of cgroup writeback support on a block device, from
    Shaohua"

    * 'for-4.6/core' of git://git.kernel.dk/linux-block:
    blk-mq: add bounds check on tag-to-rq conversion
    block: bio_remaining_done() isn't unlikely
    block: cleanup bio_endio
    block: factor out chained bio completion
    block: don't unecessarily clobber bi_error for chained bios
    block-dev: enable writeback cgroup support
    blk-mq: Fix NULL pointer updating nr_requests
    blk-mq: mark request queue as mq asap
    block: Initialize max_dev_sectors to 0
    blk-mq: dynamic h/w context count
    cfq-iosched: Allow parent cgroup to preempt its child
    cfq-iosched: Allow sync noidle workloads to preempt each other
    cfq-iosched: Reorder checks in cfq_should_preempt()
    cfq-iosched: Don't group_idle if cfqq has big thinktime

    Linus Torvalds
     
  • Fix a comment typo.

    Signed-off-by: Zhang Shengju
    Signed-off-by: David S. Miller

    Zhang Shengju
     
  • There were two issues here:
    1) dma_mapping_error() return true/false but we want to return -ENOMEM
    2) If dmaengine_prep_slave_sg() failed then "err" wasn't set but
    presumably that should be -ENOMEM as well.

    I changed the success path to "return 0;" instead of "return ret;" for
    clarity.

    Fixes: 94fe8c683cea ('ks8842: Support DMA when accessed via timberdale')
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Daniel Borkmann says:

    ====================
    Minor BPF follow-ups

    Some minor last follow-ups I still had in my queue. The first one adds
    readability support for __sk_buff's tc_classid member, the remaining
    two are some minor cleanups. For details please see individual patches.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • eBPF defines this as BPF_TUNLEN_MAX and OVS just uses the hard-coded
    value inside struct sw_flow_key. Thus, add and use IP_TUNNEL_OPTS_MAX
    for this, which makes the code a bit more generic and allows to remove
    BPF_TUNLEN_MAX from eBPF code.

    Signed-off-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • We can just add a small helper dst_tclassid() for retrieving the
    dst->tclassid value. It makes the code a bit better in that we can
    get rid of the ifdef from filter.c by moving this into the header.

    Signed-off-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • Currently, the tc_classid from eBPF skb context is write-only, but there's
    no good reason for tc programs to limit it to write-only. For example,
    it can be used to transfer its state via tail calls where the resulting
    tc_classid gets filled gradually.

    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • MVNETA_BM has a dependency on MVNETA, so we can only select the former
    if the latter is enabled. However, the code dependency is the reverse:
    The mvneta module can call into the mvneta_bm module, so mvneta cannot
    be a built-in if mvneta_bm is a module, or we get a link error:

    drivers/net/built-in.o: In function `mvneta_remove':
    drivers/net/ethernet/marvell/mvneta.c:4211: undefined reference to `mvneta_bm_pool_destroy'
    drivers/net/built-in.o: In function `mvneta_bm_update_mtu':
    drivers/net/ethernet/marvell/mvneta.c:1034: undefined reference to `mvneta_bm_bufs_free'

    This avoids the problem by further clarifying the dependency so that
    MVNETA_BM is a silent Kconfig option that gets turned on by the
    new MVNETA_BM_ENABLE option. This way both the core HWBM module and
    the MVNETA_BM code are always built-in when needed.

    Signed-off-by: Arnd Bergmann
    Fixes: dc35a10f68d3 ("net: mvneta: bm: add support for hardware buffer management")
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • There are two issues with the current code. First one is that we need
    to set res->class to 0 in case we use non-default classid matching.

    This is important for the case where cls_bpf was initially set up with
    an optional binding to a default class with tcf_bind_filter(), where
    the underlying qdisc implements bind_tcf() that fills res->class and
    tests for it later on when doing the classification. Convention for
    these cases is that after tc_classify() was called, such qdiscs (atm,
    drr, qfq, cbq, hfsc, htb) first test class, and if 0, then they lookup
    based on classid.

    Second, there's a bug with da mode, where res->classid is only assigned
    a 16 bit minor, but it needs to expand to the full 32 bit major/minor
    combination instead, therefore we need to expand with the bound major.
    This is fine as classes belonging to a classful qdisc must share the
    same major.

    Fixes: 045efa82ff56 ("cls_bpf: introduce integrated actions")
    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • Aaron Young says:

    ====================
    ldmvsw: Add ldmvsw driver

    This series adds a new Logical Domains vSwitch (ldmvsw) driver.

    The ldmvsw driver code will live in the drivers/net/ethernet/sun/
    directory and will operate on Oracle systems running SPARC Linux in a
    Logical Domains environment (typically in the control domain).

    The ldmvsw driver is very similar in function to the existing sunvnet
    driver. Ldmvsw creates a network interface for each "vsw-port" node
    found in the Machine Description (MD) of a service domain. These
    nodes correspond to ports on a vswitch created by the logical domains
    manager. The created network interface(s) can be used by bridge/vswitch
    software (such as the Linux bridge or Open vSwitch) to provide
    guest domain(s) with network interconnectivity or connectivity
    to a physical network.

    Here is a example diagram of ldmvsw driver usage in a logical
    domain environment to provide a guest domain with network connectivity
    to a physical NIC on the service domain:

    +----------------+ +-----------------
    | Service Domain | | Guest domain |
    | | | |
    | LinuxBridge | | |
    | | | | | |
    | NIC Ldmvsw | | Sunvnet |
    +----------------+ +----------------+
    | | LDC |
    LAN ------------------------------

    As stated, the sunvnet and ldmvsw drivers are _very_ similar in function.
    They both create network interface(s) to receive/transmit network
    traffic across LDC network channel(s). Since the driver is so similar
    in function to sunvnet, the approach will be as follows to integrate
    the driver and take advantage of common code:

    Patch #1: Split sunvnet.c driver into sunvnet.c and sunvnet_common.c
    Patch #2: Modify the sunvnet_common code and data structures to be compatible
    with both the sunvnet and ldmvsw drivers.
    Patch #3: Add the new ldmvsw.c driver code
    Patch #4: Checkpatch cleanup of the sunvnet/sunvnet_common code.

    NOTE - Patch#1 renames a file (sunvnet.h -> sunvnet_common.h). When generating
    the patches (using git format-patch), I had to use the --no-renames option
    otherwise patch#1 would NOT apply using 'patch -p1' - which as I
    understand is a requirement for patch acceptance. I wasn't sure if this
    is proper thing to do. Please advise if not. Thanks.

    v2 changes:
    * change all EXPORT_SYMBOL declarations to EXPORT_SYMBOL_GPL
    * remove inline attribute for external function port_is_up_common()
    * Give all exported/global funcs in sunvnet_common.c a 'sunvnet_' prefix
    to avoid kernel global namespace pollution/collisions
    * ldmvsw.c: Order local variable declarations from longest to shortest line
    * ldmvsw.c: register the netdevice after all supporting state is ready/setup.
    NOTE: The consensus at Oracle is that the following functions
    must be done AFTER register_netdev() - this is the same
    ordering currently used in the sunvnet driver:
    1. sunvnet_port_add_txq_common() - needs registered netdev
    2. napi_enable() - requires registered netdev
    3. vio_port_up() - as soon as this function is called
    LDC handshake messages will come in
    which must be handled by the napi code.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Checkpatch updates for sunvnet.c and sunvnet_common.c.

    Signed-off-by: Aaron Young
    Signed-off-by: Rashmi Narasimhan
    Reviewed-by: Sowmini Varadhan
    Reviewed-by: Alexandre Chartre

    Signed-off-by: David S. Miller

    Aaron Young
     
  • Add ldmvsw.c driver

    Details:

    The ldmvsw driver very closely follows the sunvnet.c code and makes
    use of the sunvnet_common.c code for core functionality.

    A significant difference between sunvnet and ldmvsw driver is
    sunvnet creates a network interface for each vnet-port *parent*
    node in the MD while the ldmvsw driver creates a network interface
    for every vsw-port node in the Machine Description (MD).
    Therefore the netdev_priv() for sunvnet is a vnet structure while
    the netdev_priv() for ldmvsw is a vnet_port structure.

    Vnet_port structures allocated by ldmvsw have the vsw bit set.
    When finding the net_device associated with a port, the common code keys
    off this bit to use either the net_device found in the vnet_port or the
    net_device in the vnet structure (see the VNET_PORT_TO_NET_DEVICE() macro in
    sunvnet_common.h). This scheme allows the common code to work with
    both drivers with minimal changes.

    Similar to Xen, network interfaces created by the ldmvsw driver will always
    have a HW Addr (i.e. mac address) of FE:FF:FF:FF:FF:FF and each will be
    assigned the devname "vif." - where and
    are a unique handle/port pair assigned to the associated
    vsw-port node in the MD.

    Signed-off-by: Aaron Young
    Signed-off-by: Rashmi Narasimhan
    Reviewed-by: Sowmini Varadhan
    Reviewed-by: Alexandre Chartre

    Signed-off-by: David S. Miller

    Aaron Young
     
  • Modify sunvnet common code and data structures to be compatible
    with both sunvnet and ldmvsw drivers.

    Details:

    Sunvnet operates on "vnet-port" nodes which appear in the Machine
    Description (MD) in a guest domain. Ldmvsw operates on "vsw-port"
    nodes which appear in the MD of a service domain.

    A difference between the sunvnet driver and the ldmvsw driver is
    the sunvnet driver creates a network interface (i.e. a struct net_device)
    for every vnet-port *parent* "network" node. Several vnet-ports may appear
    under this common parent network node - each corresponding to a common parent
    network interface. Conversely, since bridge/vswitch software will need
    to interface with every vsw-port in a system, the ldmvsw driver creates
    a network interface (i.e. a struct net_device) for every vsw-port - not
    every parent node as with sunvnet. This difference required some special
    handling in the common code as explained below.

    There are 2 key data structures used by the sunvnet and ldmvsw drivers
    (which are now found in sunvnet_common.h):

    1. struct vnet_port
    This structure represents a vnet-port node in sunvnet and a vsw-port
    in the ldmvsw driver.

    2. struct vnet
    This structure represents a parent "network" node in sunvnet and a parent
    "virtual-network-switch" node in ldmvsw.

    Since the sunvnet driver allocates a net_device for every parent "network"
    node, a net_device member appears in the struct vnet. Since the ldmvsw
    driver allocates a net_device for every port, a net_device member was
    added to the vnet_port. The common code distinguishes which structure
    net_device member to use by checking a 'vsw' bit that was added to the
    vnet_port structure. See the VNET_PORT_TO_NET_DEVICE() marco in
    sunvnet_common.h.

    The netdev_priv() in sunvnet is allocated as a vnet. The netdev_priv()
    in ldmvsw is a vnet_port. Therefore, any place in the common code
    where a netdev_priv() call was made, a wrapper function was implemented
    in each driver to first get the vnet and/or vnet_port (in a driver
    specific way) and pass them as newly added parameters to the common
    functions (see wrapper funcs: vnet_set_rx_mode() and vnet_poll_controller()).
    Since these wrapper functions call __tx_port_find(), __tx_port_find() was
    moved from the common code back into sunvnet.c. Note - ldmvsw.c does not
    require this function.

    These changes also required that port_is_up() be made
    into a common function and thus it was given a _common suffix and
    exported like the other common functions.

    A wrapper function was also added for vnet_start_xmit_common() to pass a
    driver-specific function arg to return the port associated with a given
    struct sk_buff and struct net_device. This was required because
    vnet_start_xmit_common() grabs a lock prior to getting the associated
    port. Using a function pointer arg allowed the code to work unchanged
    without risking changes to the non-trivial locking logic in
    vnet_start_xmit_common().

    Signed-off-by: Aaron Young
    Signed-off-by: Rashmi Narasimhan
    Reviewed-by: Sowmini Varadhan
    Reviewed-by: Alexandre Chartre

    Signed-off-by: David S. Miller

    Aaron Young
     
  • Split sunvnet.c into sunvnet.c and sunvnet_common.c.

    Details:

    Since the sunvnet and ldmvsw drivers will both use common sunvnet code,
    move the functions (and support functions) anticipated to be common code
    from sunvnet.c to sunvnet_common.c. Similarly, sunvnet.h was renamed to
    sunvnet_common.h. The sunvnet_common.c code will be compiled into the
    kernel and act as a library of functions that are linked by either
    (or both) drivers when loaded.

    Function names for external functions in sunvnet_common.c (to be
    called by both the sunvnet and ldmvsw drivers) were tagged with a "_common"
    suffix to clearly designate them as common functions.

    No functional changes as of yet... just moved code verbatim to the new
    sunvnet_common.c/h files.

    Makefile/Kconfig support added to build sunvnet_common.c file. The code
    is included in the kernel if SUN_LDOMS is defined/selected.

    NOTE - per the SubmittingPatches documentation, since the code was just
    moved from one file another, the code was NOT checkpatch'd in this commit
    to aid in review.

    Signed-off-by: Aaron Young
    Signed-off-by: Rashmi Narasimhan
    Reviewed-by: Sowmini Varadhan
    Reviewed-by: Alexandre Chartre

    Signed-off-by: David S. Miller

    Aaron Young
     
  • Pull USB fixes from Greg KH:
    "Here is a USB fix for the reported issue with commit 69bec7259853
    ("USB: core: let USB device know device node") as well as some other
    issues that have been reported so far with this merge window"

    * tag 'usb-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: uas: Reduce can_queue to MAX_CMNDS
    USB: cdc-acm: more sanity checking
    USB: usb_driver_claim_interface: add sanity checking
    usb/core: usb_alloc_dev(): fix setting of ->portnum
    USB: iowarrior: fix oops with malicious USB descriptors

    Linus Torvalds