1. 25 9月, 2014 10 次提交
    • T
      percpu_ref: add PERCPU_REF_INIT_* flags · 2aad2a86
      Tejun Heo 提交于
      With the recent addition of percpu_ref_reinit(), percpu_ref now can be
      used as a persistent switch which can be turned on and off repeatedly
      where turning off maps to killing the ref and waiting for it to drain;
      however, there currently isn't a way to initialize a percpu_ref in its
      off (killed and drained) state, which can be inconvenient for certain
      persistent switch use cases.
      
      Similarly, percpu_ref_switch_to_atomic/percpu() allow dynamic
      selection of operation mode; however, currently a newly initialized
      percpu_ref is always in percpu mode making it impossible to avoid the
      latency overhead of switching to atomic mode.
      
      This patch adds @flags to percpu_ref_init() and implements the
      following flags.
      
      * PERCPU_REF_INIT_ATOMIC	: start ref in atomic mode
      * PERCPU_REF_INIT_DEAD		: start ref killed and drained
      
      These flags should be able to serve the above two use cases.
      
      v2: target_core_tpg.c conversion was missing.  Fixed.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      2aad2a86
    • T
      percpu_ref: decouple switching to percpu mode and reinit · f47ad457
      Tejun Heo 提交于
      percpu_ref has treated the dropping of the base reference and
      switching to atomic mode as an integral operation; however, there's
      nothing inherent tying the two together.
      
      The use cases for percpu_ref have been expanding continuously.  While
      the current init/kill/reinit/exit model can cover a lot, the coupling
      of kill/reinit with atomic/percpu mode switching is turning out to be
      too restrictive for use cases where many percpu_refs are created and
      destroyed back-to-back with only some of them reaching extended
      operation.  The coupling also makes implementing always-atomic debug
      mode difficult.
      
      This patch separates out percpu mode switching into
      percpu_ref_switch_to_percpu() and reimplements percpu_ref_reinit() on
      top of it.
      
      * DEAD still requires ATOMIC.  A dead ref can't be switched to percpu
        mode w/o going through reinit.
      
      v2: __percpu_ref_switch_to_percpu() was missing static.  Fixed.
          Reported by Fengguang aka kbuild test robot.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: kbuild test robot <fengguang.wu@intel.com>
      f47ad457
    • T
      percpu_ref: decouple switching to atomic mode and killing · 490c79a6
      Tejun Heo 提交于
      percpu_ref has treated the dropping of the base reference and
      switching to atomic mode as an integral operation; however, there's
      nothing inherent tying the two together.
      
      The use cases for percpu_ref have been expanding continuously.  While
      the current init/kill/reinit/exit model can cover a lot, the coupling
      of kill/reinit with atomic/percpu mode switching is turning out to be
      too restrictive for use cases where many percpu_refs are created and
      destroyed back-to-back with only some of them reaching extended
      operation.  The coupling also makes implementing always-atomic debug
      mode difficult.
      
      This patch separates out atomic mode switching into
      percpu_ref_switch_to_atomic() and reimplements
      percpu_ref_kill_and_confirm() on top of it.
      
      * The handling of __PERCPU_REF_ATOMIC and __PERCPU_REF_DEAD is now
        differentiated.  Among get/put operations, percpu_ref_tryget_live()
        is the only one which cares about DEAD.
      
      * percpu_ref_switch_to_atomic() can be called multiple times on the
        same ref.  This means that multiple @confirm_switch may get queued
        up which we can't do reliably without extra memory area.  This is
        handled by making the later invocation synchronously wait for the
        completion of the previous one.  This isn't particularly desirable
        but such synchronous waits shouldn't happen in most cases.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      490c79a6
    • T
      percpu_ref: add PCPU_REF_DEAD · 27344a90
      Tejun Heo 提交于
      percpu_ref will be restructured so that percpu/atomic mode switching
      and reference killing are dedoupled.  In preparation, add
      PCPU_REF_DEAD and PCPU_REF_ATOMIC_DEAD which is OR of ATOMIC and DEAD.
      For now, ATOMIC and DEAD are changed together and all PCPU_REF_ATOMIC
      uses are converted to PCPU_REF_ATOMIC_DEAD without causing any
      behavior changes.
      
      percpu_ref_init() now specifies an explicit alignment when allocating
      the percpu counters so that the pointer has enough unused low bits to
      accomodate the flags.  Note that one flag was fine as min alignment
      for percpu memory is 2 bytes but two flags are already too many for
      the natural alignment of unsigned longs on archs like cris and m68k.
      
      v2: The original patch had BUILD_BUG_ON() which triggers if unsigned
          long's alignment isn't enough to accomodate the flags, which
          triggered on cris and m64k.  percpu_ref_init() updated to specify
          the required alignment explicitly.  Reported by Fengguang.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      Cc: kbuild test robot <fengguang.wu@intel.com>
      27344a90
    • T
      percpu_ref: rename things to prepare for decoupling percpu/atomic mode switch · 9e804d1f
      Tejun Heo 提交于
      percpu_ref will be restructured so that percpu/atomic mode switching
      and reference killing are dedoupled.  In preparation, do the following
      renames.
      
      * percpu_ref->confirm_kill	-> percpu_ref->confirm_switch
      * __PERCPU_REF_DEAD		-> __PERCPU_REF_ATOMIC
      * __percpu_ref_alive()		-> __ref_is_percpu()
      
      This patch is pure rename and doesn't introduce any functional
      changes.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      9e804d1f
    • T
      percpu_ref: replace pcpu_ prefix with percpu_ · eecc16ba
      Tejun Heo 提交于
      percpu_ref uses pcpu_ prefix for internal stuff and percpu_ for
      externally visible ones.  This is the same convention used in the
      percpu allocator implementation.  It works fine there but percpu_ref
      doesn't have too much internal-only stuff and scattered usages of
      pcpu_ prefix are confusing than helpful.
      
      This patch replaces all pcpu_ prefixes with percpu_.  This is pure
      rename and there's no functional change.  Note that PCPU_REF_DEAD is
      renamed to __PERCPU_REF_DEAD to signify that the flag is internal.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      eecc16ba
    • T
      percpu_ref: minor code and comment updates · 6251f997
      Tejun Heo 提交于
      * Some comments became stale.  Updated.
      * percpu_ref_tryget() unnecessarily initializes @ret.  Removed.
      * A blank line removed from percpu_ref_kill_rcu().
      * Explicit function name in a WARN format string replaced with __func__.
      * WARN_ON() in percpu_ref_reinit() converted to WARN_ON_ONCE().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      6251f997
    • T
      percpu_ref: relocate percpu_ref_reinit() · a2237370
      Tejun Heo 提交于
      percpu_ref is gonna go through restructuring.  Move
      percpu_ref_reinit() after percpu_ref_kill_and_confirm().  This will
      make later changes easier to follow and result in cleaner
      organization.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NKent Overstreet <kmo@daterainc.com>
      a2237370
    • T
      Revert "blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe" · 9eca8046
      Tejun Heo 提交于
      This reverts commit 0a30288d, which
      was a temporary fix for SCSI blk-mq stall issue.  The following
      patches will fix the issue properly by introducing atomic mode to
      percpu_ref.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@lst.de>
      9eca8046
    • T
      Merge branch 'for-linus' of... · d06efebf
      Tejun Heo 提交于
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block into for-3.18
      
      This is to receive 0a30288d ("blk-mq, percpu_ref: implement a
      kludge for SCSI blk-mq stall during probe") which implements
      __percpu_ref_kill_expedited() to work around SCSI blk-mq stall.  The
      commit reverted and patches to implement proper fix will be added.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@lst.de>
      d06efebf
  2. 24 9月, 2014 11 次提交
    • T
      blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe · 0a30288d
      Tejun Heo 提交于
      blk-mq uses percpu_ref for its usage counter which tracks the number
      of in-flight commands and used to synchronously drain the queue on
      freeze.  percpu_ref shutdown takes measureable wallclock time as it
      involves a sched RCU grace period.  This means that draining a blk-mq
      takes measureable wallclock time.  One would think that this shouldn't
      matter as queue shutdown should be a rare event which takes place
      asynchronously w.r.t. userland.
      
      Unfortunately, SCSI probing involves synchronously setting up and then
      tearing down a lot of request_queues back-to-back for non-existent
      LUNs.  This means that SCSI probing may take more than ten seconds
      when scsi-mq is used.
      
      This will be properly fixed by implementing a mechanism to keep
      q->mq_usage_counter in atomic mode till genhd registration; however,
      that involves rather big updates to percpu_ref which is difficult to
      apply late in the devel cycle (v3.17-rc6 at the moment).  As a
      stop-gap measure till the proper fix can be implemented in the next
      cycle, this patch introduces __percpu_ref_kill_expedited() and makes
      blk_mq_freeze_queue() use it.  This is heavy-handed but should work
      for testing the experimental SCSI blk-mq implementation.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NChristoph Hellwig <hch@infradead.org>
      Link: http://lkml.kernel.org/g/20140919113815.GA10791@lst.de
      Fixes: add703fd ("blk-mq: use percpu_ref for mq usage count")
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Tested-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      0a30288d
    • L
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 452b6361
      Linus Torvalds 提交于
      Pull infiniband/rdma fixes from Roland Dreier:
       "Last late set of InfiniBand/RDMA fixes for 3.17:
      
         - fixes for the new memory region re-registration support
         - iSER initiator error path fixes
         - grab bag of small fixes for the qib and ocrdma hardware drivers
         - larger set of fixes for mlx4, especially in RoCE mode"
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (26 commits)
        IB/mlx4: Fix VF mac handling in RoCE
        IB/mlx4: Do not allow APM under RoCE
        IB/mlx4: Don't update QP1 in native mode
        IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header
        mlx4: Fix mlx4 reg/unreg mac to work properly with 0-mac addresses
        IB/core: When marshaling uverbs path, clear unused fields
        IB/mlx4: Avoid executing gid task when device is being removed
        IB/mlx4: Fix lockdep splat for the iboe lock
        IB/mlx4: Get upper dev addresses as RoCE GIDs when port comes up
        IB/mlx4: Reorder steps in RoCE GID table initialization
        IB/mlx4: Don't duplicate the default RoCE GID
        IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs()
        IB/iser: Bump version to 1.4.1
        IB/iser: Allow bind only when connection state is UP
        IB/iser: Fix RX/TX CQ resource leak on error flow
        RDMA/ocrdma: Use right macro in query AH
        RDMA/ocrdma: Resolve L2 address when creating user AH
        mlx4: Correct error flows in rereg_mr
        IB/qib: Correct reference counting in debugfs qp_stats
        IPoIB: Remove unnecessary port query
        ...
      452b6361
    • L
      Merge tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · ffd4341d
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "One fix is about a buggy computation in PCM API function Clemens
        spotted out, but the impact must be really small as no one really uses
        it in user-space side.
      
        The rest are a trivial fix for a HD-audio model and a USB-audio
        device-specific regression fix, so all look fairly safe to apply"
      
      * tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: snd-usb-caiaq: Fix LED commands for Kore controller
        ALSA: pcm: fix fifo_size frame calculation
        ALSA: hda - Add fixup model name lookup for Lemote A1205
      ffd4341d
    • L
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 31f9bf46
      Linus Torvalds 提交于
      Pull final block fixes from Jens Axboe:
       "This week and last we've been fixing some corner cases related to
        blk-mq, mostly.  I ended up pulling most of that out of for-linus
        yesterday, which is why the branch looks fresh.  The rest were
        postponed for 3.18.
      
        This pull request contains:
      
         - Fix from Christoph, avoiding a stack overflow when FUA insertion
           would recursive infinitely.
      
         - Fix from David Hildenbrand on races between the timeout handler and
           uninitialized requests.  Fixes a real issue that virtio_blk has run
           into.
      
         - A few fixes from me:
      
              - Ensure that request deadline/timeout is ordered before the
                request is marked as started.
      
              - A potential oops on out-of-memory, when we scale the queue
                depth of the device and retry.
      
              - A hang fix on requeue from SCSI, where the hardware queue
                would be stopped when we attempt to re-run it (and hence
                nothing would happen, stalling progress).
      
              - A fix for commit 2da78092, where the cleanup path was moved
                to RCU, but a debug might_sleep() was inadvertently left in
                the code.  This causes warnings for people"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        genhd: fix leftover might_sleep() in blk_free_devt()
        blk-mq: use blk_mq_start_hw_queues() when running requeue work
        blk-mq: fix potential oops on out-of-memory in __blk_mq_alloc_rq_maps()
        blk-mq: avoid infinite recursion with the FUA flag
        blk-mq: Avoid race condition with uninitialized requests
        blk-mq: request deadline must be visible before marking rq as started
      31f9bf46
    • L
      Merge branch 'parisc-3.17-7' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · d19eff3a
      Linus Torvalds 提交于
      Pull parisc fixes from Helge Deller:
       "We avoid using -mfast-indirect-calls for 64bit kernel builds to
        prevent building an unbootable kernel due to latest gcc changes.
      
        In the pdc_stable/firmware-access driver we fix a few possible stack
        overflows and we now call secure_computing_strict() instead of
        secure_computing() which fixes upcoming SECCOMP patches in the
        for-next trees"
      
      * 'parisc-3.17-7' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds
        parisc: pdc_stable.c: Avoid potential stack overflows
        parisc: pdc_stable.c: Cleaning up unnecessary use of memset in conjunction with strncpy
        parisc: ptrace: use secure_computing_strict()
      d19eff3a
    • J
      parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds · d26a7730
      John David Anglin 提交于
      In spite of what the GCC manual says, the -mfast-indirect-calls has
      never been supported in the 64-bit parisc compiler. Indirect calls have
      always been done using function descriptors irrespective of the
      -mfast-indirect-calls option.
      
      Recently, it was noticed that a function descriptor was always requested
      when the -mfast-indirect-calls option was specified. This caused
      problems when the option was used in  application code and doesn't make
      any sense because the whole point of the option is to avoid using a
      function descriptor for indirect calls.
      
      Fixing this broke 64-bit kernel builds.
      
      I will fix GCC but for now we need the attached change. This results in
      the same kernel code as before.
      Signed-off-by: NJohn David Anglin <dave.anglin@bell.net>
      Cc: stable@vger.kernel.org  # v3.0+
      Signed-off-by: NHelge Deller <deller@gmx.de>
      d26a7730
    • L
      Merge tag 'please-pull-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · f0eb4a24
      Linus Torvalds 提交于
      Pull ia64 defconfig update from Tony Luck:
       "Need to rebuild defconfig files to cope with removal of "select NET"
        in drivers/scsi/Kconfig"
      
      * tag 'please-pull-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        [IA64] refresh arch/ia64/configs/* using "make savedefconfig"
      f0eb4a24
    • L
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · c1d58658
      Linus Torvalds 提交于
      Pull hwmon fixes from Guenter Roeck:
       - Fix a resource leak in tmp103 driver
       - Add support for two more processors to fam15h_power driver
       - Also fix a bug in the same driver to only report the power level on
         chips which actually support reporting it
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (tmp103) Fix resource leak bug in tmp103 temperature sensor driver
        hwmon: (fam15h_power) Add support for two more processors
        hwmon: (fam15h_power) Make actual power reporting conditional
      c1d58658
    • T
      [IA64] refresh arch/ia64/configs/* using "make savedefconfig" · e8ee39e2
      Tony Luck 提交于
      Prompted by a change to drivers/scsi/Kconfig which used to do a
      "select NET" but now does a "depends on NET". This meant that some
      configurations ended up without CONFIG_NET=y
      
      Signed-off-by Tony Luck <tony.luck@intel.com>
      e8ee39e2
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 6cd2f854
      Linus Torvalds 提交于
      Pull another kvm fix from Paolo Bonzini:
       "Another fix for 3.17 arrived at just the wrong time, after I had sent
        yesterday's pull request.  Normally I would have waited for some other
        patches to pile up, but since 3.17 might be short here it is"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        arm/arm64: KVM: Fix unaligned access bug on gicv2 access
      6cd2f854
    • L
      Merge branch 'for-3.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 324c7b62
      Linus Torvalds 提交于
      Pull cgroup fix from Tejun Heo:
       "One late fix for cgroup.
      
        I was waiting for another set of fixes for a long-standing obscure
         cpuset bug but am not sure whether they'll be ready before v3.17
        release.  This one is a simple fix for a mutex unlock balance bug in
        an allocation failure path in pidlist_array_load().
      
        The bug was introduced in v3.14 and the fix is tagged for -stable"
      
      * 'for-3.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: fix unbalanced locking
      324c7b62
  3. 23 9月, 2014 19 次提交
    • P
      Merge tag 'kvm-arm-for-v3.17-rc7-or-final' of... · 95426393
      Paolo Bonzini 提交于
      Merge tag 'kvm-arm-for-v3.17-rc7-or-final' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
      
      Fixes unaligned access to the gicv2 virtual cpu status.
      95426393
    • L
      Revert "x86/efi: Fixup GOT in all boot code paths" · f3670394
      Linus Torvalds 提交于
      This reverts commit 9cb0e394.
      
      It causes my Sony Vaio Pro 11 to immediately reboot at startup.
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Cc: Peter Anvin <hpa@zytor.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Matt Fleming <matt.fleming@intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f3670394
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 98f75b82
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) If the user gives us a msg_namelen of 0, don't try to interpret
          anything pointed to by msg_name.  From Ani Sinha.
      
       2) Fix some bnx2i/bnx2fc randconfig compilation errors.
      
          The gist of the issue is that we firstly have drivers that span both
          SCSI and networking.  And at the top of that chain of dependencies
          we have things like SCSI_FC_ATTRS and SCSI_NETLINK which are
          selected.
      
          But since select is a sledgehammer and ignores dependencies,
          everything to select's SCSI_FC_ATTRS and/or SCSI_NETLINK has to also
          explicitly select their dependencies and so on and so forth.
      
          Generally speaking 'select' is supposed to only be used for child
          nodes, those which have no dependencies of their own.  And this
          whole chain of dependencies in the scsi layer violates that rather
          strongly.
      
          So just make SCSI_NETLINK depend upon it's dependencies, and so on
          and so forth for the things selecting it (either directly or
          indirectly).
      
          From Anish Bhatt and Randy Dunlap.
      
       3) Fix generation of blackhole routes in IPSEC, from Steffen Klassert.
      
       4) Actually notice netdev feature changes in rtl_open() code, from
          Hayes Wang.
      
       5) Fix divide by zero in bond enslaving, from Nikolay Aleksandrov.
      
       6) Missing memory barrier in sunvnet driver, from David Stevens.
      
       7) Don't leave anycast addresses around when ipv6 interface is
          destroyed, from Sabrina Dubroca.
      
       8) Don't call efx_{arch}_filter_sync_rx_mode before addr_list_lock is
          initialized in SFC driver, from Edward Cree.
      
       9) Fix missing DMA error checking in 3c59x, from Neal Horman.
      
      10) Openvswitch doesn't emit OVS_FLOW_CMD_NEW notifications accidently,
          fix from Samuel Gauthier.
      
      11) pch_gbe needs to select NET_PTP_CLASSIFY otherwise we can get a
          build error.
      
      12) Fix macvlan regression wherein we stopped emitting
          broadcast/multicast frames over software devices.  From Nicolas
          Dichtel.
      
      13) Fix infiniband bug due to unintended overflow of skb->cb[], from
          Eric Dumazet.  And add an assertion so this doesn't happen again.
      
      14) dm9000_parse_dt() should return error pointers, not NULL.  From
          Tobias Klauser.
      
      15) IP tunneling code uses this_cpu_ptr() in preemptible contexts, fix
          from Eric Dumazet.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (87 commits)
        net: bcmgenet: call bcmgenet_dma_teardown in bcmgenet_fini_dma
        net: bcmgenet: fix TX reclaim accounting for fragments
        ipv4: do not use this_cpu_ptr() in preemptible context
        dm9000: Return an ERR_PTR() in all error conditions of dm9000_parse_dt()
        r8169: fix an if condition
        r8152: disable ALDPS
        ipoib: validate struct ipoib_cb size
        net: sched: shrink struct qdisc_skb_cb to 28 bytes
        tg3: Work around HW/FW limitations with vlan encapsulated frames
        macvlan: allow to enqueue broadcast pkt on virtual device
        pch_gbe: 'select' NET_PTP_CLASSIFY.
        scsi: Use 'depends' with LIBFC instead of 'select'.
        openvswitch: restore OVS_FLOW_CMD_NEW notifications
        genetlink: add function genl_has_listeners()
        lib: rhashtable: remove second linux/log2.h inclusion
        net: allow macvlans to move to net namespace
        3c59x: Fix bad offset spec in skb_frag_dma_map
        3c59x: Add dma error checking and recovery
        sparc: bpf_jit: fix support for ldx/stx mem and SKF_AD_VLAN_TAG
        can: at91_can: add missing prepare and unprepare of the clock
        ...
      98f75b82
    • L
      Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux · 94783036
      Linus Torvalds 提交于
      Pull clock layer fixes from Mike Turquette:
       "The fixes for the clock tree are mostly run-time bugs in clock
        drivers.
      
        The fixes for TI DRA7 remove divide-by-zero errors.  The recently
        merged AT91 clock driver fixes some bad error checking and the QCOM
        driver fix restores audio for that platform, a clear regression.  A
        list iteration bug in the framework core was hit recently and is fixed
        up here.  Finally a compilation warning is fixed for efm32gg, which is
        also a regression fix"
      
      * tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux:
        clk/efm32gg: fix dt init prototype
        clk: prevent erronous parsing of children during rate change
        clk: rockchip: Fix the clocks for i2c1 and i2c2
        clk: qcom: Fix sdc 144kHz frequency entry
        clk: at91: fix num_parents test in at91sam9260 slow clk implementation
        clk: ti: dra7-atl: Provide error check for incoming parameters in set_rate
        clk: ti: divider: Provide error check for incoming parameters in set_rate
      94783036
    • L
      Merge tag 'fscache-fixes-20140917' of... · e2519c2c
      Linus Torvalds 提交于
      Merge tag 'fscache-fixes-20140917' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
      
      Pull fs-cache fixes from David Howells:
      
       - Put a timeout in releasepage() to deal with a recursive hang between
         the memory allocator, writeback, ext4 and fscache under memory
         pressure.
      
       - Fix a pair of refcount bugs in the fscache error handling.
      
       - Remove a couple of unused pagevecs.
      
       - The cachefiles requirement that the base directory support rename
         should permit rename2 as an alternative - otherwise certain
         filesystems cannot now be used as backing stores (such as ext4).
      
      * tag 'fscache-fixes-20140917' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        CacheFiles: Handle rename2
        cachefiles: remove two unused pagevecs.
        FS-Cache: refcount becomes corrupt under vma pressure.
        FS-Cache: Reduce cookie ref count if submit fails.
        FS-Cache: Timeout for releasepage()
      e2519c2c
    • D
      Merge branch 'bcmgenet' · e18b7faa
      David S. Miller 提交于
      Florian Fainelli says:
      
      ====================
      net: bcmgenet: TX reclaim and DMA fixes
      
      This patch set contains one fix for an accounting problem while reclaiming
      transmitted buffers having fragments, and the second fix is to make sure
      that the DMA shutdown is properly controlled.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e18b7faa
    • F
      net: bcmgenet: call bcmgenet_dma_teardown in bcmgenet_fini_dma · 4a0c081e
      Florian Fainelli 提交于
      We should not be manipulaging the DMA_CTRL registers directly by writing
      0 to them to disable DMA. This is an operation that needs to be timed to
      make sure the DMA engines have been properly stopped since their state
      machine stops on a packet boundary, not immediately.
      
      Make sure that tha bcmgenet_fini_dma() calls bcmgenet_dma_teardown() to
      ensure a proper DMA engine state. As a result, we need to reorder the
      function bodies to resolve the use dependency.
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4a0c081e
    • F
      net: bcmgenet: fix TX reclaim accounting for fragments · 478a010c
      Florian Fainelli 提交于
      The GENET driver supports SKB fragments, and succeeds in transmitting
      them properly, but when reclaiming these transmitted fragments, we will
      only update the count of free buffer descriptors by 1, even for SKBs
      with fragments. This leads to the networking stack thinking it has more
      room than the hardware has when pushing new SKBs, and backing off
      consequently because we return NETDEV_TX_BUSY.
      
      Fix this by accounting for the SKB nr_frags plus one (itself) and update
      ring->free_bds accordingly with that value for each iteration loop in
      __bcmgenet_tx_reclaim().
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      478a010c
    • E
      ipv4: do not use this_cpu_ptr() in preemptible context · a35165ca
      Eric Dumazet 提交于
      this_cpu_ptr() in preemptible context is generally bad
      
      Sep 22 05:05:55 br kernel: [   94.608310] BUG: using smp_processor_id()
      in
      preemptible [00000000] code: ip/2261
      Sep 22 05:05:55 br kernel: [   94.608316] caller is
      tunnel_dst_set.isra.28+0x20/0x60 [ip_tunnel]
      Sep 22 05:05:55 br kernel: [   94.608319] CPU: 3 PID: 2261 Comm: ip Not
      tainted
      3.17.0-rc5 #82
      
      We can simply use raw_cpu_ptr(), as preemption is safe in these
      contexts.
      
      Should fix https://bugzilla.kernel.org/show_bug.cgi?id=84991Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NJoe <joe9mail@gmail.com>
      Fixes: 9a4aa9af ("ipv4: Use percpu Cache route in IP tunnels")
      Acked-by: NTom Herbert <therbert@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a35165ca
    • C
      arm/arm64: KVM: Fix unaligned access bug on gicv2 access · 1f2bb4ac
      Christoffer Dall 提交于
      We were using an atomic bitop on the vgic_v2.vgic_elrsr field which was
      not aligned to the natural size on 64-bit platforms.  This bug showed up
      after QEMU correctly identifies the pl011 line as being level-triggered,
      and not edge-triggered.
      
      These data structures are protected by a spinlock so simply use a
      non-atomic version of the accessor instead.
      Tested-by: NJoel Schopp <joel.schopp@amd.com>
      Reported-by: NRiku Voipio <riku.voipio@linaro.org>
      Signed-off-by: NChristoffer Dall <christoffer.dall@linaro.org>
      1f2bb4ac
    • J
      genhd: fix leftover might_sleep() in blk_free_devt() · 46f341ff
      Jens Axboe 提交于
      Commit 2da78092 changed the locking from a mutex to a spinlock,
      so we now longer sleep in this context. But there was a leftover
      might_sleep() in there, which now triggers since we do the final
      free from an RCU callback. Get rid of it.
      Reported-by: NPontus Fuchs <pontus.fuchs@gmail.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      46f341ff
    • D
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec · 84de67b2
      David S. Miller 提交于
      Steffen Klassert says:
      
      ====================
      pull request (net): ipsec 2014-09-22
      
      We generate a blackhole or queueing route if a packet
      matches an IPsec policy but a state can't be resolved.
      Here we assume that dst_output() is called to kill
      these packets. Unfortunately this assumption is not
      true in all cases, so it is possible that these packets
      leave the system without the necessary transformations.
      
      This pull request contains two patches to fix this issue:
      
      1) Fix for blackhole routed packets.
      
      2) Fix for queue routed packets.
      
      Both patches are serious stable candidates.
      
      Please pull or let me know if there are problems.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      84de67b2
    • T
      dm9000: Return an ERR_PTR() in all error conditions of dm9000_parse_dt() · 09f3756b
      Tobias Klauser 提交于
      In one error condition dm9000_parse_dt() returns NULL, however the
      return value is checked using IS_ERR() in dm9000_probe(), leading to the
      error not being properly propagated if CONFIG_OF is not enabled or the
      device tree data is not available. Fix this by also returning an
      ERR_PTR() in this case.
      
      Fixes: 0b8bf1ba (net: dm9000: Allow instantiation using device tree)
      Signed-off-by: NTobias Klauser <tklauser@distanz.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      09f3756b
    • D
      r8169: fix an if condition · 85911d71
      Dan Carpenter 提交于
      There is an extra semi-colon so __rtl8169_set_features() is called every
      time.
      
      Fixes: 929a031d ('r8169: adjust __rtl8169_set_features')
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: Hayes Wang <hayeswang@realtek.com>--
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85911d71
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · b0e2a55c
      Linus Torvalds 提交于
      Pull KVM fixes from Paolo Bonzini:
       "Two very simple bugfixes, affecting all supported architectures"
      
      [ Two? There's three commits in here.  Oh well, I guess Paolo didn't
        count the preparatory symbol export ]
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: correct null pid check in kvm_vcpu_yield_to()
        KVM: check for !is_zero_pfn() in kvm_is_mmio_pfn()
        mm: export symbol dependencies of is_zero_pfn()
      b0e2a55c
    • H
      r8152: disable ALDPS · d70b1137
      hayeswang 提交于
      If the hw is in ALDPS mode, the hw may have no response for accessing
      the most registers. Therefore, the ALDPS should be disabled before
      accessing the hw in rtl_ops.init(), rtl_ops.disable(), rtl_ops.up(),
      and rtl_ops.down(). Regardless of rtl_ops.enable(), because the hw
      wouldn't enter ALDPS mode when linking on. The hw would enter the
      ALDPS mode after several seconds when link down occurs and the ALDPS
      is enabled.
      Signed-off-by: NHayes Wang <hayeswang@realtek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d70b1137
    • E
      ipoib: validate struct ipoib_cb size · b49fe362
      Eric Dumazet 提交于
      To catch future errors sooner.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b49fe362
    • E
      net: sched: shrink struct qdisc_skb_cb to 28 bytes · 25711786
      Eric Dumazet 提交于
      We cannot make struct qdisc_skb_cb bigger without impacting IPoIB,
      or increasing skb->cb[] size.
      
      Commit e0f31d84 ("flow_keys: Record IP layer protocol in
      skb_flow_dissect()") broke IPoIB.
      
      Only current offender is sch_choke, and this one do not need an
      absolutely precise flow key.
      
      If we store 17 bytes of flow key, its more than enough. (Its the actual
      size of flow_keys if it was a packed structure, but we might add new
      fields at the end of it later)
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Fixes: e0f31d84 ("flow_keys: Record IP layer protocol in skb_flow_dissect()")
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      25711786
    • V
      tg3: Work around HW/FW limitations with vlan encapsulated frames · 476c1885
      Vlad Yasevich 提交于
      TG3 appears to have an issue performing TSO and checksum offloading
      correclty when the frame has been vlan encapsulated (non-accelrated).
      In these cases, tcp checksum is not correctly updated.
      
      This patch attempts to work around this issue.  After the patch,
      802.1ad vlans start working correctly over tg3 devices.
      
      CC: Prashant Sreedharan <prashant@broadcom.com>
      CC: Michael Chan <mchan@broadcom.com>
      Signed-off-by: NVladislav Yasevich <vyasevic@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      476c1885