1. 18 Sep, 2014 4 commits
    • Linus Torvalds's avatar
      Merge tag 'sound-3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 33d31d34
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "All small fixes in random various drivers, mostly for ASoC at this
        time, which look reasonable for a high rc number"
      
      * tag 'sound-3.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: rockchip-i2s: dt: swap tx and rx channed request number in example
        ASoC: rockchip-i2s: fix registers' property of rockchip i2s controller
        ASoC: rockchip-i2s: fix master mode set bit error
        ASoC: cs4265: Fix register address to set the proper data type.
        ALSA: hda - Fix invalid pin powermap without jack detection
        ASoC: soc-pcm: fix dpcm_path_get error handling
        ASoC: samsung-i2s: Check secondary DAI exists before referencing
        ASoC: Update email id of the author
        ASoC: dwc: Update email id of the author
        ASoC: davinci-mcasp: Correct rx format unit configuration
        ASoC: tlv320aic31xx: Fix 24bit samples with I2S format and 12MHz mclk
      33d31d34
    • Krzysztof Hałasa's avatar
      Fix unbalanced mutex in dma_pool_create(). · 153a9f13
      Krzysztof Hałasa authored
      dma_pool_create() needs to unlock the mutex in error case.  The bug was
      introduced in the 3.16 by commit cc6b664a ("mm/dmapool.c: remove
      redundant NULL check for dev in dma_pool_create()")/
      Signed-off-by: default avatarKrzysztof Hałasa <khc@piap.pl>
      Cc: stable@vger.kernel.org  # v3.16
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      153a9f13
    • Linus Torvalds's avatar
      Merge tag 'regulator-v3.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · bd26a74e
      Linus Torvalds authored
      Pull regulator fix from Mark Brown:
       "Fix some leaked OF node references in regulator drivers that have been
        left over following a fix on a fix to the reference counting"
      
      * tag 'regulator-v3.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: remove unnecessary of_node_get() to parent
      bd26a74e
    • Linus Torvalds's avatar
      Merge tag 'spi-v3.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 27180f7d
      Linus Torvalds authored
      Pull spi fixes from Mark Brown:
       "A few driver specific fixes for v3.17:
      
         - Fix davinci so that GPIO chip selects work with deferred probe of
           GPIOs (which could happen in production depending on kernel config)
           plus one incremental stylistic fix to that.
         - Several fixes for the newly introduced rockchip driver that came up
           in wider testing of the device.
         - A couple of small things in the sirf driver, one bug that would
           stop DMA transfers working and another update to follow the
           documented procedure in the datasheet.
         - Fix some memory leaks with devm_kzalloc() being used outside of the
           device bind path"
      
      * tag 'spi-v3.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
        spi: davinci: remove empty function davinci_spi_cleanup
        spi: davinci: request cs_gpio's from probe
        spi/pl022: Fix error message
        spi/rockchip: Mark DMA as optional
        spi/rockchip: Don't warn if SPI is busy but disabled
        spi/rockchip: Fix the wait_for_idle() timeout
        spi: sirf: add fifo reset/start for cmd transfer
        spi: sirf: enable RX_IO_DMA_INT interrupt
        spi: dw: Don't use devm_kzalloc in master->setup callback
        spi: fsl: Don't use devm_kzalloc in master->setup callback
      27180f7d
  2. 17 Sep, 2014 1 commit
    • Paul Gortmaker's avatar
      Revert "init: make rootdelay=N consistent with rootwait behaviour" · 8ba4caf1
      Paul Gortmaker authored
      This reverts commit 4dfe694f.
      
      In that, we did:
      
        Here we move the rootdelay code to be right beside the rootwait code, so
        that their behaviour is consistent.
      
      ...which is fine, but in hindsight, perhaps moving the rootwait to be
      beside the rootdelay would have been better.  We also indicated:
      
        It should be noted that in doing so, the actions based on the
        saved_root_name[0] and initrd_load() were previously put on hold by
        rootdelay=N and now currently will not be delayed.  However, I think
        consistent behaviour is more important than matching historical behaviour
        of delaying the above two operations.
      
      But Pavel reported an instance where an ARM target with root on MMC
      was failing to mount root, and Russell diagnosed it to the fact that
      the call to set ROOT_DEV within the saved_root_name[0] processing
      block mentioned above was no longer being delayed.
      
      Rather than moving both wait clauses to the original position of
      rootdelay and risking unearthing other possible corner case breakage
      at this point in time, we simply revert now and we can revisit
      trying the alternate/earlier location in another development cycle.
      
      Cc: Pavel Machek <pavel@denx.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8ba4caf1
  3. 16 Sep, 2014 6 commits
  4. 15 Sep, 2014 11 commits
  5. 14 Sep, 2014 12 commits
  6. 13 Sep, 2014 6 commits
    • Linus Torvalds's avatar
      Merge branches 'locking-urgent-for-linus' and 'timers-urgent-for-linus' of... · 1536340e
      Linus Torvalds authored
      Merge branches 'locking-urgent-for-linus' and 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
      
      Pull futex and timer fixes from Thomas Gleixner:
       "A oneliner bugfix for the jinxed futex code:
      
         - Drop hash bucket lock in the error exit path.  I really could slap
           myself for intruducing that bug while fixing all the other horror
           in that code three month ago ...
      
        and the timer department is not too proud about the following fixes:
      
         - Deal with a long standing rounding bug in the timeval to jiffies
           conversion.  It's a real issue and this fix fell through the cracks
           for quite some time.
      
         - Another round of alarmtimer fixes.  Finally this code gets used
           more widely and the subtle issues hidden for quite some time are
           noticed and fixed.  Nothing really exciting, just the itty bitty
           details which bite the serious users here and there"
      
      * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        futex: Unlock hb->lock in futex_wait_requeue_pi() error path
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        alarmtimer: Lock k_itimer during timer callback
        alarmtimer: Do not signal SIGEV_NONE timers
        alarmtimer: Return relative times in timer_gettime
        jiffies: Fix timeval conversion to jiffies
      1536340e
    • Guy Martin's avatar
      parisc: Implement new LWS CAS supporting 64 bit operations. · 89206491
      Guy Martin authored
      The current LWS cas only works correctly for 32bit. The new LWS allows
      for CAS operations of variable size.
      Signed-off-by: default avatarGuy Martin <gmsoft@tuxicoman.be>
      Cc: <stable@vger.kernel.org> # 3.13+
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      89206491
    • Linus Torvalds's avatar
      vfs: fix bad hashing of dentries · 99d263d4
      Linus Torvalds authored
      Josef Bacik found a performance regression between 3.2 and 3.10 and
      narrowed it down to commit bfcfaa77 ("vfs: use 'unsigned long'
      accesses for dcache name comparison and hashing"). He reports:
      
       "The test case is essentially
      
            for (i = 0; i < 1000000; i++)
                    mkdir("a$i");
      
        On xfs on a fio card this goes at about 20k dir/sec with 3.2, and 12k
        dir/sec with 3.10.  This is because we spend waaaaay more time in
        __d_lookup on 3.10 than in 3.2.
      
        The new hashing function for strings is suboptimal for <
        sizeof(unsigned long) string names (and hell even > sizeof(unsigned
        long) string names that I've tested).  I broke out the old hashing
        function and the new one into a userspace helper to get real numbers
        and this is what I'm getting:
      
            Old hash table had 1000000 entries, 0 dupes, 0 max dupes
            New hash table had 12628 entries, 987372 dupes, 900 max dupes
            We had 11400 buckets with a p50 of 30 dupes, p90 of 240 dupes, p99 of 567 dupes for the new hash
      
        My test does the hash, and then does the d_hash into a integer pointer
        array the same size as the dentry hash table on my system, and then
        just increments the value at the address we got to see how many
        entries we overlap with.
      
        As you can see the old hash function ended up with all 1 million
        entries in their own bucket, whereas the new one they are only
        distributed among ~12.5k buckets, which is why we're using so much
        more CPU in __d_lookup".
      
      The reason for this hash regression is two-fold:
      
       - On 64-bit architectures the down-mixing of the original 64-bit
         word-at-a-time hash into the final 32-bit hash value is very
         simplistic and suboptimal, and just adds the two 32-bit parts
         together.
      
         In particular, because there is no bit shuffling and the mixing
         boundary is also a byte boundary, similar character patterns in the
         low and high word easily end up just canceling each other out.
      
       - the old byte-at-a-time hash mixed each byte into the final hash as it
         hashed the path component name, resulting in the low bits of the hash
         generally being a good source of hash data.  That is not true for the
         word-at-a-time case, and the hash data is distributed among all the
         bits.
      
      The fix is the same in both cases: do a better job of mixing the bits up
      and using as much of the hash data as possible.  We already have the
      "hash_32|64()" functions to do that.
      Reported-by: default avatarJosef Bacik <jbacik@fb.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Chris Mason <clm@fb.com>
      Cc: linux-fsdevel@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      99d263d4
    • Linus Torvalds's avatar
      Make hash_64() use a 64-bit multiply when appropriate · 23d0db76
      Linus Torvalds authored
      The hash_64() function historically does the multiply by the
      GOLDEN_RATIO_PRIME_64 number with explicit shifts and adds, because
      unlike the 32-bit case, gcc seems unable to turn the constant multiply
      into the more appropriate shift and adds when required.
      
      However, that means that we generate those shifts and adds even when the
      architecture has a fast multiplier, and could just do it better in
      hardware.
      
      Use the now-cleaned-up CONFIG_ARCH_HAS_FAST_MULTIPLIER (together with
      "is it a 64-bit architecture") to decide whether to use an integer
      multiply or the explicit sequence of shift/add instructions.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      23d0db76
    • Linus Torvalds's avatar
      Make ARCH_HAS_FAST_MULTIPLIER a real config variable · 72d93104
      Linus Torvalds authored
      It used to be an ad-hoc hack defined by the x86 version of
      <asm/bitops.h> that enabled a couple of library routines to know whether
      an integer multiply is faster than repeated shifts and additions.
      
      This just makes it use the real Kconfig system instead, and makes x86
      (which was the only architecture that did this) select the option.
      
      NOTE! Even for x86, this really is kind of wrong.  If we cared, we would
      probably not enable this for builds optimized for netburst (P4), where
      shifts-and-adds are generally faster than multiplies.  This patch does
      *not* change that kind of logic, though, it is purely a syntactic change
      with no code changes.
      
      This was triggered by the fact that we have other places that really
      want to know "do I want to expand multiples by constants by hand or
      not", particularly the hash generation code.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      72d93104
    • Linus Torvalds's avatar
      Merge tag 'dm-3.17-fix2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 186cec31
      Linus Torvalds authored
      Pull device mapper fix from Mike Snitzer:
       "Fix a race in the DM cache target that caused dirty blocks to be
        marked as clean.  This could cause no writeback to occur or spurious
        dirty block counts"
      
      * tag 'dm-3.17-fix2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm cache: fix race causing dirty blocks to be marked as clean
      186cec31