1. 07 May, 2013 29 commits
    • Linus Torvalds's avatar
      Merge tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · fcba9145
      Linus Torvalds authored
      Pull ARM SoC platform updates (part 3) from Arnd Bergmann:
       "This is the third and smallest of the SoC specific updates.  Changes
        include:
      
         - SMP support for the Xilinx zynq platform
         - Smaller imx changes
         - LPAE support for mvebu
         - Moving the orion5x, kirkwood, dove and mvebu platforms to a common
           "mbus" driver for their internal devices.
      
        It would be good to get feedback on the location of the "mbus" driver.
        Since this is used on multiple platforms may potentially get shared
        with other architectures (powerpc and arm64), it was moved to
        drivers/bus/.  We expect other similar drivers to get moved to the
        same place in order to avoid creating more top-level directories under
        drivers/ or cluttering up the messy drivers/misc/ even more."
      
      * tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits)
        ARM: imx: reset_controller may be disabled
        ARM: mvebu: Align the internal registers virtual base to support LPAE
        ARM: mvebu: Limit the DMA zone when LPAE is selected
        arm: plat-orion: remove addr-map code
        arm: mach-mv78xx0: convert to use the mvebu-mbus driver
        arm: mach-orion5x: convert to use mvebu-mbus driver
        arm: mach-dove: convert to use mvebu-mbus driver
        arm: mach-kirkwood: convert to use mvebu-mbus driver
        arm: mach-mvebu: convert to use mvebu-mbus driver
        ARM i.MX53: set CLK_SET_RATE_PARENT flag on the tve_ext_sel clock
        ARM i.MX53: tve_di clock is not part of the CCM, but of TVE
        ARM i.MX53: make tve_ext_sel propagate rate change to PLL
        ARM i.MX53: Remove unused tve_gate clkdev entry
        ARM i.MX5: Remove tve_sel clock from i.MX53 clock tree
        ARM: i.MX5: Add PATA and SRTC clocks
        ARM: imx: do not bring up unavailable cores
        ARM: imx: add initial imx6dl support
        ARM: imx1: mm: add call to mxc_device_init
        ARM: imx_v4_v5_defconfig: Add CONFIG_GPIO_SYSFS
        ARM: imx_v6_v7_defconfig: Select CONFIG_PERF_EVENTS
        ...
      fcba9145
    • Linus Torvalds's avatar
      Merge tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · a8c4b90e
      Linus Torvalds authored
      Pull ARM SoC platform updates (part 2) from Arnd Bergmann:
       "These patches are all for Renesas shmobile, and depend on the earlier
        pinctrl updates.  Remarkably, this adds support for three new SoCs:
        r8a73a4, r8a73a4 and r8a7778.  The bulk of the code added for these is
        for pinctrl (using the new subsystem) and for clocks (not yet using
        the common clock subsystem).  The latter will have to get converted in
        one of the upcoming releases, but shmobile is not ready for that yet.
      
        The series also contains Renesas shmobile board changes, adding one
        board file for each of the three new SoCs.  These boards are using a
        mix of classic and device-tree based probing, as there is still a lot
        of infrastructure in shmobile that has not been converted to DT yet.
        Once those are resolved to the degree that no board specific setup
        code is needed, they can get folded into the respective SoC setup files."
      
      * tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (78 commits)
        ARM: shmobile: use r8a7790 timer setup code on Lager
        ARM: shmobile: force enable of r8a7790 arch timer
        ARM: shmobile: Add second I/O range for r8a7790 PFC
        ARM: shmobile: bockw: enable network settings on bootargs
        ARM: shmobile: bockw: add SMSC ethernet support
        ARM: shmobile: R8A7778: add Ether support
        ARM: shmobile: bockw: enable SMSC ethernet on defconfig
        ARM: shmobile: r8a7778: add r8a7778_init_irq_extpin()
        ARM: shmobile: r8a7778: remove pointless PLATFORM_INFO()
        ARM: shmobile: mackerel: clean up MMCIF vs. SDHI1 selection
        ARM: shmobile: mackerel: add interrupt names for SDHI0
        ARM: shmobile: mackerel: switch SDHI and MMCIF interfaces to slot-gpio
        ARM: shmobile: mackerel: remove OCR masks, where regulators are used
        ARM: shmobile: mackerel: SDHI resources do not have to be numbered
        ARM: shmobile: Initial r8a7790 Lager board support
        ARM: shmobile: APE6EVM LAN9220 support
        ARM: shmobile: APE6EVM PFC support
        ARM: shmobile: APE6EVM base support
        ARM: shmobile: kzm9g-reference: add ethernet support
        ARM: shmobile: add R-Car M1A Bock-W platform support
        ...
      a8c4b90e
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · eac84105
      Linus Torvalds authored
      Pull more vhost fixes from Michael Tsirkin:
       "This fixes some minor issues in the patches that have been merged.
      
        We also finally drop the workaround disabling event_idx for scsi: it
        was always questionable, and now we know it's not needed.
      
        There's also a memory leak fix"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        vhost-scsi: Enable VIRTIO_RING_F_EVENT_IDX
        vhost: drop virtio_net.h dependency
        vhost-net: Cleanup vhost_ubuf and vhost_zcopy
        vhost: Remove vhost_enable_zcopy in vhost.h
        vhost: Remove comments for hdr in vhost.h
        vhost: Move VHOST_NET_FEATURES to net.c
        vhost-net: Free ubuf when vhost_dev_set_owner fails
        vhost: Export vhost_dev_set_owner
      eac84105
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · a26ea93a
      Linus Torvalds authored
      Pull fuse updates from Miklos Szeredi:
       "This contains two patchsets from Maxim Patlasov.
      
        The first reworks the request throttling so that only async requests
        are throttled.  Wakeup of waiting async requests is also optimized.
      
        The second series adds support for async processing of direct IO which
        optimizes direct IO and enables the use of the AIO userspace
        interface."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: add flag to turn on async direct IO
        fuse: truncate file if async dio failed
        fuse: optimize short direct reads
        fuse: enable asynchronous processing direct IO
        fuse: make fuse_direct_io() aware about AIO
        fuse: add support of async IO
        fuse: move fuse_release_user_pages() up
        fuse: optimize wake_up
        fuse: implement exclusive wakeup for blocked_waitq
        fuse: skip blocking on allocations of synchronous requests
        fuse: add flag fc->initialized
        fuse: make request allocations for background processing explicit
      a26ea93a
    • Linus Torvalds's avatar
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · c818c778
      Linus Torvalds authored
      Pull powerpc updates from Benjamin Herrenschmidt:
       "Here are a few more powerpc bits that I would like in 3.10.
      
        Mostly remaining bolts & screw tightening of power8 support such as
        actually exposing the new features via the previously added AT_HWCAP2,
        and a few fixes, some of them for problems exposed recently like
        irqdomain warnings or sysfs access permission issues, some exposed by
        power8 hardware.
      
        The only change outside of arch/powerpc is a small one to irqdomain.c
        to allow silent failure to fix a problem on Cell where we get a dozen
        WARN_ON's tripping at boot for what is basically a normal case."
      
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Make hard_irq_disable() do the right thing vs. irq tracing
        powerpc/topology: Fix spurr attribute permission
        powerpc/pci: Support per-aperture memory offset
        powerpc/cell/iommu: Improve error message for missing node
        powerpc/cell/spufs: Fix status attribute permission
        irqdomain: Allow quiet failure mode
        powerpc/pnv: Fix "compatible" property for P8 PHB
        powerpc/pci: Don't add bogus empty resources to PHBs
        powerpc/powerpnv: Properly handle failure starting CPUs
        powerpc/cputable: Advertise support for ISEL/HTM/DSCR/TAR on POWER8
        powerpc/cputable: Advertise ISEL support on appropriate embedded processors
        powerpc/cputable: Advertise DSCR support on P7/P7+
        powerpc/cputable: Reserve bits in HWCAP2 for new features
        powerpc/pseries: Perform proper max_bus_speed detection
        powerpc/pseries: Force 32 bit MSIs for devices that require it
        powerpc/tm: Fix null pointer deference in flush_hash_page
        powerpc/powernv: Defer OPAL exception handler registration
        powerpc: Emulate non privileged DSCR read and write
      c818c778
    • Linus Torvalds's avatar
      Merge branch 'rwsem-optimizations' · c8de2fa4
      Linus Torvalds authored
      Merge rwsem optimizations from Michel Lespinasse:
       "These patches extend Alex Shi's work (which added write lock stealing
        on the rwsem slow path) in order to provide rwsem write lock stealing
        on the fast path (that is, without taking the rwsem's wait_lock).
      
        I have unfortunately been unable to push this through -next before due
        to Ingo Molnar / David Howells / Peter Zijlstra being busy with other
        things.  However, this has gotten some attention from Rik van Riel and
        Davidlohr Bueso who both commented that they felt this was ready for
        v3.10, and Ingo Molnar has said that he was OK with me pushing
        directly to you.  So, here goes :)
      
        Davidlohr got the following test results from pgbench running on a
        quad-core laptop:
      
          | db_size | clients  |  tps-vanilla   |   tps-rwsem  |
          +---------+----------+----------------+--------------+
          | 160 MB   |       1 |           5803 |         6906 | + 19.0%
          | 160 MB   |       2 |          13092 |        15931 |
          | 160 MB   |       4 |          29412 |        33021 |
          | 160 MB   |       8 |          32448 |        34626 |
          | 160 MB   |      16 |          32758 |        33098 |
          | 160 MB   |      20 |          26940 |        31343 | + 16.3%
          | 160 MB   |      30 |          25147 |        28961 |
          | 160 MB   |      40 |          25484 |        26902 |
          | 160 MB   |      50 |          24528 |        25760 |
          ------------------------------------------------------
          | 1.6 GB   |       1 |           5733 |         7729 | + 34.8%
          | 1.6 GB   |       2 |           9411 |        19009 | + 101.9%
          | 1.6 GB   |       4 |          31818 |        33185 |
          | 1.6 GB   |       8 |          33700 |        34550 |
          | 1.6 GB   |      16 |          32751 |        33079 |
          | 1.6 GB   |      20 |          30919 |        31494 |
          | 1.6 GB   |      30 |          28540 |        28535 |
          | 1.6 GB   |      40 |          26380 |        27054 |
          | 1.6 GB   |      50 |          25241 |        25591 |
          ------------------------------------------------------
          | 7.6 GB   |       1 |           5779 |         6224 |
          | 7.6 GB   |       2 |          10897 |        13611 | + 24.9%
          | 7.6 GB   |       4 |          32683 |        33108 |
          | 7.6 GB   |       8 |          33968 |        34712 |
          | 7.6 GB   |      16 |          32287 |        32895 |
          | 7.6 GB   |      20 |          27770 |        31689 | + 14.1%
          | 7.6 GB   |      30 |          26739 |        29003 |
          | 7.6 GB   |      40 |          24901 |        26683 |
          | 7.6 GB   |      50 |          17115 |        25925 | + 51.5%
          ------------------------------------------------------
      
        (Davidlohr also has one additional patch which further improves
        throughput, though I will ask him to send it directly to you as I have
        suggested some minor changes)."
      
      * emailed patches from Michel Lespinasse <walken@google.com>:
        rwsem: no need for explicit signed longs
        x86 rwsem: avoid taking slow path when stealing write lock
        rwsem: do not block readers at head of queue if other readers are active
        rwsem: implement support for write lock stealing on the fastpath
        rwsem: simplify __rwsem_do_wake
        rwsem: skip initial trylock in rwsem_down_write_failed
        rwsem: avoid taking wait_lock in rwsem_down_write_failed
        rwsem: use cmpxchg for trying to steal write lock
        rwsem: more agressive lock stealing in rwsem_down_write_failed
        rwsem: simplify rwsem_down_write_failed
        rwsem: simplify rwsem_down_read_failed
        rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed
        rwsem: shorter spinlocked section in rwsem_down_failed_common()
        rwsem: make the waiter type an enumeration rather than a bitmask
      c8de2fa4
    • Linus Torvalds's avatar
      Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux · 0f47c942
      Linus Torvalds authored
      Pull slab changes from Pekka Enberg:
       "The bulk of the changes are more slab unification from Christoph.
      
        There's also few fixes from Aaron, Glauber, and Joonsoo thrown into
        the mix."
      
      * 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux: (24 commits)
        mm, slab_common: Fix bootstrap creation of kmalloc caches
        slab: Return NULL for oversized allocations
        mm: slab: Verify the nodeid passed to ____cache_alloc_node
        slub: tid must be retrieved from the percpu area of the current processor
        slub: Do not dereference NULL pointer in node_match
        slub: add 'likely' macro to inc_slabs_node()
        slub: correct to calculate num of acquired objects in get_partial_node()
        slub: correctly bootstrap boot caches
        mm/sl[au]b: correct allocation type check in kmalloc_slab()
        slab: Fixup CONFIG_PAGE_ALLOC/DEBUG_SLAB_LEAK sections
        slab: Handle ARCH_DMA_MINALIGN correctly
        slab: Common definition for kmem_cache_node
        slab: Rename list3/l3 to node
        slab: Common Kmalloc cache determination
        stat: Use size_t for sizes instead of unsigned
        slab: Common function to create the kmalloc array
        slab: Common definition for the array of kmalloc caches
        slab: Common constants for kmalloc boundaries
        slab: Rename nodelists to node
        slab: Common name for the per node structures
        ...
      0f47c942
    • Linus Torvalds's avatar
      Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · b9e306e0
      Linus Torvalds authored
      Pull misc kbuild updates from Michal Marek:
       "Non-critical kbuild changes:
      
         - make coccicheck improvements, but no new semantic patches this time
      
         - make rpm improvements
      
         - make tar-pkg change to include the architecture in the filename.
      
           This is a deliberate incompatibility, but nobody has complained so
           far and it is useful if you build for different architectures.  It
           also matches what the deb-pkg and rpm-pkg targets produce.
      
         - kbuild documentation fix"
      
      * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        rpm-pkg: Remove pointless set -e statements
        rpm-pkg: Always regenerate the specfile
        rpm-pkg: Do not write to the parent directory
        rpm-pkg: Do not package the whole source directory
        buildtar: Add ARCH to the archive name
        Coccinelle: Fix patch output when coccicheck is used with M= and C=
        Coccinelle: Add support to the SPFLAGS variable
        Coccinelle: Cleanup the setting of the FLAGS and OPTIONS variables
        Coccinelle: Restore coccicheck verbosity in ONLINE mode (C=1 or C=2)
        scripts/package/Makefile: compare objtree with srctree instead of test KBUILD_OUTPUT
        doc: change example to existing Makefile fragment
        scripts/tags.sh: Add magic for OFFSET and DEFINE
      b9e306e0
    • Linus Torvalds's avatar
      Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 685e56d2
      Linus Torvalds authored
      Pull kconfig updates from Michal Marek:
       - use pkg-config to detect curses libraries
       - clean up the way curses headers are searched
       - Some randconfig fixes, of which one had to be reverted
       - KCONFIG_SEED for randconfig debugging
       - memuconfig memory leak plugged
       - menuconfig > breadcrumbs > navigation
       - xconfig compilation fix
       - Other minor fixes
      
      * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        kconfig: fix lists definition for C++
        Revert "kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG"
        kconfig: implement KCONFIG_PROBABILITY for randconfig
        kconfig: allow specifying the seed for randconfig
        kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG
        kconfig: do not override symbols already set
        kconfig: fix randconfig tristate detection
        kconfig/lxdialog: rationalise the include paths where to find {.n}curses{,w}.h
        menuconfig: Add "breadcrumbs" navigation aid
        menuconfig: Fix memory leak introduced by jump keys feature
        merge_config.sh: Avoid creating unnessary source softlinks
        kconfig: optionally use pkg-config to detect ncurses libs
        menuconfig: optionally use pkg-config to detect ncurses libs
      685e56d2
    • Linus Torvalds's avatar
      Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 57c29bd3
      Linus Torvalds authored
      Pull kbuild changes from Michal Marek:
       "Kbuild commits for v3.10-rc1:
      
         - Fix make mrproper after mod/file2alias rework
         - Fix ld-option Makefile function
         - Rewrite headers_install to shell to drop Perl dependency.
      
        There are some more patches I have to look at, so I might send another
        pull request later.  Or just queue them for 3.11."
      
      * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        Fix cleaning in scripts/mod
        headers_install.pl: convert to headers_install.sh
        kbuild: fix ld-option function
      57c29bd3
    • Li Zefan's avatar
      menuconfig: fix NULL pointer dereference when searching a symbol · 383da76f
      Li Zefan authored
      Searching for PPC_EFIKA results in a segmentation fault, and it's
      because get_symbol_prop() returns NULL.
      
      In this case CONFIG_PPC_EFIKA is defined in arch/powerpc/platforms/
      52xx/Kconfig, so it won't be parsed if ARCH!=PPC, but menuconfig knows
      this symbol when it parses sound/soc/fsl/Kconfig:
      
          config SND_MPC52xx_SOC_EFIKA
              tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
              depends on PPC_EFIKA
      
      This bug was introduced by commit bcdedcc1 ("menuconfig: print more
      info for symbol without prompts").
      Reported-and-tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Tested-by: default avatarLibo Chen <libo.chen@huawei.com>
      Reviewed-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      383da76f
    • Bruce Allan's avatar
      e1000e: fix scheduling while atomic bug · 2a437cd3
      Bruce Allan authored
      A scheduling while atomic bug was introduced recently (by commit
      ce43a216: "e1000e: cleanup USLEEP_RANGE checkpatch checks").
      
      Revert the particular instance of usleep_range() which causes the bug.
      Reported-by: default avatarMaarten Lankhorst <m.b.lankhorst@gmail.com>
      Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2a437cd3
    • Davidlohr Bueso's avatar
      rwsem: no need for explicit signed longs · b5f54181
      Davidlohr Bueso authored
      Change explicit "signed long" declarations into plain "long" as suggested
      by Peter Hurley.
      Signed-off-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Reviewed-by: default avatarMichel Lespinasse <walken@google.com>
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b5f54181
    • Michel Lespinasse's avatar
      x86 rwsem: avoid taking slow path when stealing write lock · a31a369b
      Michel Lespinasse authored
      modify __down_write[_nested] and __down_write_trylock to grab the write
      lock whenever the active count is 0, even if there are queued waiters
      (they must be writers pending wakeup, since the active count is 0).
      
      Note that this is an optimization only; architectures without this
      optimization will still work fine:
      
      - __down_write() would take the slow path which would take the wait_lock
        and then try stealing the lock (as in the spinlocked rwsem implementation)
      
      - __down_write_trylock() would fail, but callers must be ready to deal
        with that - since there are some writers pending wakeup, they could
        have raced with us and obtained the lock before we steal it.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a31a369b
    • Michel Lespinasse's avatar
      rwsem: do not block readers at head of queue if other readers are active · 25c39325
      Michel Lespinasse authored
      This change fixes a race condition where a reader might determine it
      needs to block, but by the time it acquires the wait_lock the rwsem has
      active readers and no queued waiters.
      
      In this situation the reader can run in parallel with the existing
      active readers; it does not need to block until the active readers
      complete.
      
      Thanks to Peter Hurley for noticing this possible race.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      25c39325
    • Michel Lespinasse's avatar
      rwsem: implement support for write lock stealing on the fastpath · fe6e674c
      Michel Lespinasse authored
      When we decide to wake up readers, we must first grant them as many read
      locks as necessary, and then actually wake up all these readers.  But in
      order to know how many read shares to grant, we must first count the
      readers at the head of the queue.  This might take a while if there are
      many readers, and we want to be protected against a writer stealing the
      lock while we're counting.  To that end, we grant the first reader lock
      before counting how many more readers are queued.
      
      We also require some adjustments to the wake_type semantics.
      
      RWSEM_WAKE_NO_ACTIVE used to mean that we had found the count to be
      RWSEM_WAITING_BIAS, in which case the rwsem was known to be free as
      nobody could steal it while we hold the wait_lock.  This doesn't make
      sense once we implement fastpath write lock stealing, so we now use
      RWSEM_WAKE_ANY in that case.
      
      Similarly, when rwsem_down_write_failed found that a read lock was
      active, it would use RWSEM_WAKE_READ_OWNED which signalled that new
      readers could be woken without checking first that the rwsem was
      available.  We can't do that anymore since the existing readers might
      release their read locks, and a writer could steal the lock before we
      wake up additional readers.  So, we have to use a new RWSEM_WAKE_READERS
      value to indicate we only want to wake readers, but we don't currently
      hold any read lock.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fe6e674c
    • Michel Lespinasse's avatar
      rwsem: simplify __rwsem_do_wake · 8cf5322c
      Michel Lespinasse authored
      This is mostly for cleanup value:
      
      - We don't need several gotos to handle the case where the first
        waiter is a writer. Two simple tests will do (and generate very
        similar code).
      
      - In the remainder of the function, we know the first waiter is a reader,
        so we don't have to double check that. We can use do..while loops
        to iterate over the readers to wake (generates slightly better code).
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8cf5322c
    • Michel Lespinasse's avatar
      rwsem: skip initial trylock in rwsem_down_write_failed · 9b0fc9c0
      Michel Lespinasse authored
      We can skip the initial trylock in rwsem_down_write_failed() if there
      are known active lockers already, thus saving one likely-to-fail
      cmpxchg.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9b0fc9c0
    • Michel Lespinasse's avatar
      rwsem: avoid taking wait_lock in rwsem_down_write_failed · a7d2c573
      Michel Lespinasse authored
      In rwsem_down_write_failed(), if there are active locks after we wake up
      (i.e.  the lock got stolen from us), skip taking the wait_lock and go
      back to sleep immediately.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a7d2c573
    • Michel Lespinasse's avatar
      rwsem: use cmpxchg for trying to steal write lock · 5ede972d
      Michel Lespinasse authored
      Using rwsem_atomic_update to try stealing the write lock forced us to
      undo the adjustment in the failure path.  We can have simpler and faster
      code by using cmpxchg instead.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5ede972d
    • Michel Lespinasse's avatar
      rwsem: more agressive lock stealing in rwsem_down_write_failed · ed00f643
      Michel Lespinasse authored
      Some small code simplifications can be achieved by doing more agressive
      lock stealing:
      
      - When rwsem_down_write_failed() notices that there are no active locks
        (and thus no thread to wake us if we decided to sleep), it used to wake
        the first queued process. However, stealing the lock is also sufficient
        to deal with this case, so we don't need this check anymore.
      
      - In try_get_writer_sem(), we can steal the lock even when the first waiter
        is a reader. This is correct because the code path that wakes readers is
        protected by the wait_lock. As to the performance effects of this change,
        they are expected to be minimal: readers are still granted the lock
        (rather than having to acquire it themselves) when they reach the front
        of the wait queue, so we have essentially the same behavior as in
        rwsem-spinlock.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ed00f643
    • Michel Lespinasse's avatar
      rwsem: simplify rwsem_down_write_failed · 023fe4f7
      Michel Lespinasse authored
      When waking writers, we never grant them the lock - instead, they have
      to acquire it themselves when they run, and remove themselves from the
      wait_list when they succeed.
      
      As a result, we can do a few simplifications in rwsem_down_write_failed():
      
      - We don't need to check for !waiter.task since __rwsem_do_wake() doesn't
        remove writers from the wait_list
      
      - There is no point releaseing the wait_lock before entering the wait loop,
        as we will need to reacquire it immediately. We can change the loop so
        that the lock is always held at the start of each loop iteration.
      
      - We don't need to get a reference on the task structure, since the task
        is responsible for removing itself from the wait_list. There is no risk,
        like in the rwsem_down_read_failed() case, that a task would wake up and
        exit (thus destroying its task structure) while __rwsem_do_wake() is
        still running - wait_lock protects against that.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      023fe4f7
    • Michel Lespinasse's avatar
      rwsem: simplify rwsem_down_read_failed · da16922c
      Michel Lespinasse authored
      When trying to acquire a read lock, the RWSEM_ACTIVE_READ_BIAS
      adjustment doesn't cause other readers to block, so we never have to
      worry about waking them back after canceling this adjustment in
      rwsem_down_read_failed().
      
      We also never want to steal the lock in rwsem_down_read_failed(), so we
      don't have to grab the wait_lock either.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      da16922c
    • Michel Lespinasse's avatar
      rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed · 1e78277c
      Michel Lespinasse authored
      Remove the rwsem_down_failed_common function and replace it with two
      identical copies of its code in rwsem_down_{read,write}_failed.
      
      This is because we want to make different optimizations in
      rwsem_down_{read,write}_failed; we are adding this pure-duplication
      step as a separate commit in order to make it easier to check the
      following steps.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1e78277c
    • Michel Lespinasse's avatar
      rwsem: shorter spinlocked section in rwsem_down_failed_common() · f7dd1cee
      Michel Lespinasse authored
      This change reduces the size of the spinlocked and TASK_UNINTERRUPTIBLE
      sections in rwsem_down_failed_common():
      
      - We only need the sem->wait_lock to insert ourselves on the wait_list;
        the waiter node can be prepared outside of the wait_lock.
      
      - The task state only needs to be set to TASK_UNINTERRUPTIBLE immediately
        before checking if we actually need to sleep; it doesn't need to protect
        the entire function.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f7dd1cee
    • Michel Lespinasse's avatar
      rwsem: make the waiter type an enumeration rather than a bitmask · e2d57f78
      Michel Lespinasse authored
      We are not planning to add some new waiter flags, so we can convert the
      waiter type into an enumeration.
      
      Background: David Howells suggested I do this back when I tried adding
      a new waiter type for unfair readers. However, I believe the cleanup
      applies regardless of that use case.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e2d57f78
    • Asias He's avatar
      vhost-scsi: Enable VIRTIO_RING_F_EVENT_IDX · a18cc421
      Asias He authored
      It was disabled as a workaround. Now userspace bits work fine with it.
      The broken version was not ever committed to QEMU, I guess the same is
      true for nlkt.
      
      So, let's enable it.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      a18cc421
    • Benjamin Herrenschmidt's avatar
      powerpc: Make hard_irq_disable() do the right thing vs. irq tracing · 5737789c
      Benjamin Herrenschmidt authored
      If hard_irq_disable() is called while interrupts are already soft-disabled
      (which is the most common case) all is already well.
      
      However you can (and in some cases want) to call it while everything is
      enabled (to make sure you don't get a lazy even, for example before entry
      into KVM guests) and in this case we need to inform the irq tracer that
      the irqs are going off.
      
      We have to change the inline into a macro to avoid an include circular
      dependency hell hole.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      5737789c
    • Pekka Enberg's avatar
      69df2ac1
  2. 06 May, 2013 11 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 51a26ae7
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Just a small pile of fixes"
      
       1) Fix race conditions in IP fragmentation LRU list handling, from
          Konstantin Khlebnikov.
      
       2) vfree() is no longer verboten in interrupts, so deferring is
          pointless, from Al Viro.
      
       3) Conversion from mutex to semaphore in netpoll left trylock test
          inverted, caught by Dan Carpenter.
      
       4) 3c59x uses wrong base address when releasing regions, from Sergei
          Shtylyov.
      
       5) Bounds checking in TIPC from Dan Carpenter.
      
       6) Fastopen cookies should not be expired as aggressively as other TCP
          metrics.  From Eric Dumazet.
      
       7) Fix retrieval of MAC address in ibmveth, from Ben Herrenschmidt.
      
       8) Don't use "u16" in virtio user headers, from Stephen Hemminger
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        tipc: potential divide by zero in tipc_link_recv_fragment()
        tipc: add a bounds check in link_recv_changeover_msg()
        net/usb: new driver for RTL8152
        3c59x: fix freeing nonexistent resource on driver unload
        netpoll: inverted down_trylock() test
        rps_dev_flow_table_release(): no need to delay vfree()
        fib_trie: no need to delay vfree()
        net: frag, fix race conditions in LRU list maintenance
        tcp: do not expire TCP fastopen cookies
        net/eth/ibmveth: Fixup retrieval of MAC address
        virtio: don't expose u16 in userspace api
      51a26ae7
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds · 2b69703f
      Linus Torvalds authored
      Pull LED subsystem updates from Bryan Wu:
       - move LED trigger drivers into a new directory
       - lp55xx common driver updates
       - other led drivers updates and bug fixing
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
        leds: leds-asic3: switch to using SIMPLE_DEV_PM_OPS
        leds: leds-bd2802: add CONFIG_PM_SLEEP to suspend/resume functions
        leds: lp55xx: configure the clock detection
        leds: lp55xx: use common clock framework when external clock is used
        leds: leds-ns2: fix oops at module removal
        leds: leds-pwm: Defer led_pwm_set() if PWM can sleep
        leds: lp55xx: fix the sysfs read operation
        leds: lm355x, lm3642: support camera LED triggers for flash and torch
        leds: add camera LED triggers
        leds: trigger: use inline functions instead of macros
        leds: tca6507: Use of_match_ptr() macro
        leds: wm8350: Complain if we fail to reenable DCDC
        leds: renesas: set gpio_request_one() flags param correctly
        leds: leds-ns2: set devm_gpio_request_one() flags param correctly
        leds: leds-lt3593: set devm_gpio_request_one() flags param correctly
        leds: leds-bd2802: remove erroneous __exit annotation
        leds: atmel-pwm: remove erroneous __exit annotation
        leds: move LED trigger drivers into new subdirectory
        leds: add new LP5562 LED driver
      2b69703f
    • Linus Torvalds's avatar
      Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux · 30c67e93
      Linus Torvalds authored
      Pull GPIO changes from Grant Likely:
       "The usual selection of bug fixes and driver updates for GPIO.  Nothing
        really stands out except the addition of the GRGPIO driver and some
        enhacements to ACPI support"
      
      I'm pulling this despite the earlier mess.  Let's hope it compiles these
      days.
      
      * tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux: (46 commits)
        gpio: grgpio: Add irq support
        gpio: grgpio: Add device driver for GRGPIO cores
        gpiolib-acpi: introduce acpi_get_gpio_by_index() helper
        GPIO: gpio-generic: remove kfree() from bgpio_remove call
        gpio / ACPI: Handle ACPI events in accordance with the spec
        gpio: lpc32xx: Fix off-by-one valid range checking for bank
        gpio: mcp23s08: convert driver to DT
        gpio/omap: force restore if context loss is not detectable
        gpio/omap: optimise interrupt service routine
        gpio/omap: remove extra context restores in *_runtime_resume()
        gpio/omap: free irq domain in probe() failure paths
        gpio: gpio-generic: Add 16 and 32 bit big endian byte order support
        gpio: samsung: Add terminating entry for exynos_pinctrl_ids
        gpio: mvebu: add dbg_show function
        MAX7301 GPIO: Do not force SPI speed when using OF Platform
        gpio: gpio-tps65910.c: fix checkpatch error
        gpio: gpio-timberdale.c: fix checkpatch error
        gpio: gpio-tc3589x.c: fix checkpatch errors
        gpio: gpio-stp-xway.c: fix checkpatch error
        gpio: gpio-sch.c: fix checkpatch error
        ...
      30c67e93
    • Linus Torvalds's avatar
      Merge tag 'for-3.10-rc1' of git://gitorious.org/linux-pwm/linux-pwm · f87bb9ee
      Linus Torvalds authored
      Pull pwm changes from Thierry Reding:
       "Nothing very exciting this time around.  A couple of bug fixes and a
        lot of cleanup across the board.  The DaVinci 8xx family of SoCs now
        use the same driver as the AM33xx family.
      
        Many thanks to Axel Lin and Jingoo Han who have done a great job
        fixing various bugs and inconsistencies."
      
      * tag 'for-3.10-rc1' of git://gitorious.org/linux-pwm/linux-pwm: (27 commits)
        pwm: lpc32xx: Don't change PWM_ENABLE bit in lpc32xx_pwm_config
        pwm: lpc32xx: Properly set PWM_ENABLE bit in lpc32xx_pwm_[enable|disable]
        pwm: Constify OF match tables
        pwm: pwm-tiehrpwm: Update device-tree binding document
        pwm: pwm-tiecap: Update device-tree binding document
        pwm: puv3: Remove unused enabled filed from struct puv3_pwm_chip
        pwm: pxa: Remove PWM_ID_BASE macro
        pwm: spear: Remove unused *dev from struct spear_pwm_chip
        pwm: mxs: Remove unused *dev from struct mxs_pwm_chip
        pwm: twl: Return proper error if twl6030_pwm_enable() fails
        pwm: pxa: Remove clk_enabled field from struct pxa_pwm_chip
        pwm: imx: Remove enabled field from struct imx_chip
        pwm: twl: Add .owner to struct pwm_ops
        pwm: twl-led: Add .owner to struct pwm_ops
        pwm: atmel-tcb: Add .owner to struct pwm_ops
        pwm: ab8500: Add .owner to struct pwm_ops
        pwm: spear: Fix checking return value of clk_enable() and clk_prepare()
        pwm: tiehrpwm: Staticize non-exported symbols
        pwm: tiecap: Staticize non-exported symbols
        pwm: ab8500: Fix trivial typo in dev_err message
        ...
      f87bb9ee
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 99737982
      Linus Torvalds authored
      Pull IOMMU updates from Joerg Roedel:
       "The updates are mostly about the x86 IOMMUs this time.
      
        Exceptions are the groundwork for the PAMU IOMMU from Freescale (for a
        PPC platform) and an extension to the IOMMU group interface.
      
        On the x86 side this includes a workaround for VT-d to disable
        interrupt remapping on broken chipsets.  On the AMD-Vi side the most
        important new feature is a kernel command-line interface to override
        broken information in IVRS ACPI tables and get interrupt remapping
        working this way.
      
        Besides that there are small fixes all over the place."
      
      * tag 'iommu-updates-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (24 commits)
        iommu/tegra: Fix printk formats for dma_addr_t
        iommu: Add a function to find an iommu group by id
        iommu/vt-d: Remove warning for HPET scope type
        iommu: Move swap_pci_ref function to drivers/iommu/pci.h.
        iommu/vt-d: Disable translation if already enabled
        iommu/amd: fix error return code in early_amd_iommu_init()
        iommu/AMD: Per-thread IOMMU Interrupt Handling
        iommu: Include linux/err.h
        iommu/amd: Workaround for ERBT1312
        iommu/amd: Document ivrs_ioapic and ivrs_hpet parameters
        iommu/amd: Don't report firmware bugs with cmd-line ivrs overrides
        iommu/amd: Add ioapic and hpet ivrs override
        iommu/amd: Add early maps for ioapic and hpet
        iommu/amd: Extend IVRS special device data structure
        iommu/amd: Move add_special_device() to __init
        iommu: Fix compile warnings with forward declarations
        iommu/amd: Properly initialize irq-table lock
        iommu/amd: Use AMD specific data structure for irq remapping
        iommu/amd: Remove map_sg_no_iommu()
        iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets
        ...
      99737982
    • Andreas Schwab's avatar
      Fix cleaning in scripts/mod · 22fc4273
      Andreas Schwab authored
      Make sure devicetable-offsets.h is cleaned in the scripts/mod directory
      Signed-off-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
      Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      22fc4273
    • Christoph Lameter's avatar
      mm, slab_common: Fix bootstrap creation of kmalloc caches · 8a965b3b
      Christoph Lameter authored
      For SLAB the kmalloc caches must be created in ascending sizes in order
      for the OFF_SLAB sub-slab cache to work properly.
      
      Create the non power of two caches immediately after the prior power of
      two kmalloc cache. Do not create the non power of two caches before all
      other caches.
      Reported-and-tested-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarChristoph Lamete <cl@linux.com>
      Link: http://lkml.kernel.org/r/201305040348.CIF81716.OStQOHFJMFLOVF@I-love.SAKURA.ne.jpSigned-off-by: default avatarPekka Enberg <penberg@kernel.org>
      8a965b3b
    • Dan Carpenter's avatar
      tipc: potential divide by zero in tipc_link_recv_fragment() · 6bf15191
      Dan Carpenter authored
      The worry here is that fragm_sz could be zero since it comes from
      skb->data.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6bf15191
    • Dan Carpenter's avatar
      tipc: add a bounds check in link_recv_changeover_msg() · cb4b102f
      Dan Carpenter authored
      The bearer_id here comes from skb->data and it can be a number from 0 to
      7.  The problem is that the ->links[] array has only 2 elements so I
      have added a range check.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cb4b102f
    • hayeswang's avatar
      net/usb: new driver for RTL8152 · ac718b69
      hayeswang authored
      Add new driver for supporting Realtek RTL8152 Based USB 2.0 Ethernet Adapters
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Cc: Realtek linux nic maintainers <nic_swsd@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac718b69
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 91f85756
      Linus Torvalds authored
      Pull Ceph changes from Alex Elder:
       "This is a big pull.
      
        Most of it is culmination of Alex's work to implement RBD image
        layering, which is now complete (yay!).
      
        There is also some work from Yan to fix i_mutex behavior surrounding
        writes in cephfs, a sync write fix, a fix for RBD images that get
        resized while they are mapped, and a few patches from me that resolve
        annoying auth warnings and fix several bugs in the ceph auth code."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (254 commits)
        rbd: fix image request leak on parent read
        libceph: use slab cache for osd client requests
        libceph: allocate ceph message data with a slab allocator
        libceph: allocate ceph messages with a slab allocator
        rbd: allocate image object names with a slab allocator
        rbd: allocate object requests with a slab allocator
        rbd: allocate name separate from obj_request
        rbd: allocate image requests with a slab allocator
        rbd: use binary search for snapshot lookup
        rbd: clear EXISTS flag if mapped snapshot disappears
        rbd: kill off the snapshot list
        rbd: define rbd_snap_size() and rbd_snap_features()
        rbd: use snap_id not index to look up snap info
        rbd: look up snapshot name in names buffer
        rbd: drop obj_request->version
        rbd: drop rbd_obj_method_sync() version parameter
        rbd: more version parameter removal
        rbd: get rid of some version parameters
        rbd: stop tracking header object version
        rbd: snap names are pointer to constant data
        ...
      91f85756