1. 24 Sep, 2014 8 commits
    • Tejun Heo's avatar
      percpu_ref: add PCPU_REF_DEAD · 27344a90
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <kmo@daterainc.com>
      Cc: kbuild test robot <fengguang.wu@intel.com>
      27344a90
    • Tejun Heo's avatar
      percpu_ref: rename things to prepare for decoupling percpu/atomic mode switch · 9e804d1f
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <kmo@daterainc.com>
      9e804d1f
    • Tejun Heo's avatar
      percpu_ref: replace pcpu_ prefix with percpu_ · eecc16ba
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <kmo@daterainc.com>
      eecc16ba
    • Tejun Heo's avatar
      percpu_ref: minor code and comment updates · 6251f997
      Tejun Heo authored
      * 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: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <kmo@daterainc.com>
      6251f997
    • Tejun Heo's avatar
      percpu_ref: relocate percpu_ref_reinit() · a2237370
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <kmo@daterainc.com>
      a2237370
    • Tejun Heo's avatar
      Revert "blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe" · 9eca8046
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@lst.de>
      9eca8046
    • Tejun Heo's avatar
      Merge branch 'for-linus' of... · d06efebf
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Christoph Hellwig <hch@lst.de>
      d06efebf
    • Tejun Heo's avatar
      blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe · 0a30288d
      Tejun Heo authored
      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: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarChristoph 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: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      0a30288d
  2. 23 Sep, 2014 15 commits
    • Linus Torvalds's avatar
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 452b6361
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · ffd4341d
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 31f9bf46
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge branch 'parisc-3.17-7' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · d19eff3a
      Linus Torvalds authored
      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
    • John David Anglin's avatar
      parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds · d26a7730
      John David Anglin authored
      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: default avatarJohn David Anglin <dave.anglin@bell.net>
      Cc: stable@vger.kernel.org  # v3.0+
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      d26a7730
    • Linus Torvalds's avatar
      Merge tag 'please-pull-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · f0eb4a24
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · c1d58658
      Linus Torvalds authored
      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
    • Tony Luck's avatar
      [IA64] refresh arch/ia64/configs/* using "make savedefconfig" · e8ee39e2
      Tony Luck authored
      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
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 6cd2f854
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge branch 'for-3.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 324c7b62
      Linus Torvalds authored
      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
    • Paolo Bonzini's avatar
      Merge tag 'kvm-arm-for-v3.17-rc7-or-final' of... · 95426393
      Paolo Bonzini authored
      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
    • Linus Torvalds's avatar
      Revert "x86/efi: Fixup GOT in all boot code paths" · f3670394
      Linus Torvalds authored
      This reverts commit 9cb0e394.
      
      It causes my Sony Vaio Pro 11 to immediately reboot at startup.
      Acked-by: default avatarIngo 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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f3670394
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 98f75b82
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux · 94783036
      Linus Torvalds authored
      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
    • Linus Torvalds's avatar
      Merge tag 'fscache-fixes-20140917' of... · e2519c2c
      Linus Torvalds authored
      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
  3. 22 Sep, 2014 17 commits