1. 29 6月, 2013 1 次提交
    • W
      x86: Use asm-goto to implement mutex fast path on x86-64 · 00e55a79
      Wedson Almeida Filho 提交于
      The new implementation allows the compiler to better optimize the code; the
      original implementation is still used when the kernel is compiled with older
      versions of gcc that don't support asm-goto.
      
      Compiling with gcc 4.7.3, the original mutex_lock() is 60 bytes with the fast
      path taking 16 instructions; the new mutex_lock() is 42 bytes, with the fast
      path taking 12 instructions.
      
      The original mutex_unlock() is 24 bytes with the fast path taking 7
      instructions; the new mutex_unlock() is 25 bytes (because the compiler used
      a 2-byte ret) with the fast path taking 4 instructions.
      
      The two versions of the functions are included below for reference.
      
      Old:
      ffffffff817742a0 <mutex_lock>:
      ffffffff817742a0:       55                      push   %rbp
      ffffffff817742a1:       48 89 e5                mov    %rsp,%rbp
      ffffffff817742a4:       48 83 ec 10             sub    $0x10,%rsp
      ffffffff817742a8:       48 89 5d f0             mov    %rbx,-0x10(%rbp)
      ffffffff817742ac:       48 89 fb                mov    %rdi,%rbx
      ffffffff817742af:       4c 89 65 f8             mov    %r12,-0x8(%rbp)
      ffffffff817742b3:       e8 28 15 00 00          callq  ffffffff817757e0 <_cond_resched>
      ffffffff817742b8:       48 89 df                mov    %rbx,%rdi
      ffffffff817742bb:       f0 ff 0f                lock decl (%rdi)
      ffffffff817742be:       79 05                   jns    ffffffff817742c5 <mutex_lock+0x25>
      ffffffff817742c0:       e8 cb 04 00 00          callq  ffffffff81774790 <__mutex_lock_slowpath>
      ffffffff817742c5:       65 48 8b 04 25 c0 b7    mov    %gs:0xb7c0,%rax
      ffffffff817742cc:       00 00
      ffffffff817742ce:       4c 8b 65 f8             mov    -0x8(%rbp),%r12
      ffffffff817742d2:       48 89 43 18             mov    %rax,0x18(%rbx)
      ffffffff817742d6:       48 8b 5d f0             mov    -0x10(%rbp),%rbx
      ffffffff817742da:       c9                      leaveq
      ffffffff817742db:       c3                      retq
      
      ffffffff81774250 <mutex_unlock>:
      ffffffff81774250:       55                      push   %rbp
      ffffffff81774251:       48 c7 47 18 00 00 00    movq   $0x0,0x18(%rdi)
      ffffffff81774258:       00
      ffffffff81774259:       48 89 e5                mov    %rsp,%rbp
      ffffffff8177425c:       f0 ff 07                lock incl (%rdi)
      ffffffff8177425f:       7f 05                   jg     ffffffff81774266 <mutex_unlock+0x16>
      ffffffff81774261:       e8 ea 04 00 00          callq  ffffffff81774750 <__mutex_unlock_slowpath>
      ffffffff81774266:       5d                      pop    %rbp
      ffffffff81774267:       c3                      retq
      
      New:
      ffffffff81774920 <mutex_lock>:
      ffffffff81774920:       55                      push   %rbp
      ffffffff81774921:       48 89 e5                mov    %rsp,%rbp
      ffffffff81774924:       53                      push   %rbx
      ffffffff81774925:       48 89 fb                mov    %rdi,%rbx
      ffffffff81774928:       e8 a3 0e 00 00          callq  ffffffff817757d0 <_cond_resched>
      ffffffff8177492d:       f0 ff 0b                lock decl (%rbx)
      ffffffff81774930:       79 08                   jns    ffffffff8177493a <mutex_lock+0x1a>
      ffffffff81774932:       48 89 df                mov    %rbx,%rdi
      ffffffff81774935:       e8 16 fe ff ff          callq  ffffffff81774750 <__mutex_lock_slowpath>
      ffffffff8177493a:       65 48 8b 04 25 c0 b7    mov    %gs:0xb7c0,%rax
      ffffffff81774941:       00 00
      ffffffff81774943:       48 89 43 18             mov    %rax,0x18(%rbx)
      ffffffff81774947:       5b                      pop    %rbx
      ffffffff81774948:       5d                      pop    %rbp
      ffffffff81774949:       c3                      retq
      
      ffffffff81774730 <mutex_unlock>:
      ffffffff81774730:       48 c7 47 18 00 00 00    movq   $0x0,0x18(%rdi)
      ffffffff81774737:       00
      ffffffff81774738:       f0 ff 07                lock incl (%rdi)
      ffffffff8177473b:       7f 0a                   jg     ffffffff81774747 <mutex_unlock+0x17>
      ffffffff8177473d:       55                      push   %rbp
      ffffffff8177473e:       48 89 e5                mov    %rsp,%rbp
      ffffffff81774741:       e8 aa ff ff ff          callq  ffffffff817746f0 <__mutex_unlock_slowpath>
      ffffffff81774746:       5d                      pop    %rbp
      ffffffff81774747:       f3 c3                   repz retq
      Signed-off-by: NWedson Almeida Filho <wedsonaf@gmail.com>
      Link: http://lkml.kernel.org/r/1372420245-60021-1-git-send-email-wedsonaf@gmail.comSigned-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      00e55a79
  2. 26 6月, 2013 5 次提交
  3. 19 6月, 2013 1 次提交
  4. 31 5月, 2013 1 次提交
  5. 30 5月, 2013 6 次提交
  6. 29 5月, 2013 8 次提交
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · c4763215
      Linus Torvalds 提交于
      Pull ARM Exynos fixes from Olof Johansson:
       "Here's a shorter set of fixes for 3.10, all for Samsung Exynos
        platforms.
      
        It also includes a defconfig update so that exynos_defconfig provides
        a meaningful set of drivers to boot an unmodified kernel on the
        Samsung ARM-based Chromebooks."
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: exynos: defconfig update
        ARM: SAMSUNG: Add names to fimd0 IRQ resources
        ARM: EXYNOS: fix software reset logic for EXYNOS5440 SOC
        ARM: EXYNOS: Fix support of Exynos4210 rev0 SoC
        ARM: dts: Enabling samsung-usb2phy driver for exynos5250
      c4763215
    • O
      ARM: exynos: defconfig update · da9d0fbf
      Olof Johansson 提交于
      This turns on a number of configs that are useful on the Chromebook, but also
      good to have on in general:
      
      * USB host and MMC drivers(!)
      * I2C GPIO arbitration driver
      * CYAPA trackpad driver
      * simplefb
      * CROS EC and keyboard drivers
      * S5M8767 driver
      * MAX77686 drivers
      * MAX8997 driver
      * DEVTMPFS + mount
      * DM_CRYPT (as module)
      * CRYPTOLOOP
      * HIGHMEM
      * PRINTK timestamps
      
      This also turns off DEBUG_LL, and switches the hardcoded Samsung lowlevel
      uart to uart 3 (which is only used to show the "uncompressing kernel"
      message at boot, it seems).
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      Reviewed-by: NDoug Anderson <dianders@chromium.org>
      Tested-by: NTushar Behera <tushar.behera@linaro.org>
      Acked-by: NKukjin Kim <kgene.kim@samsung.com>
      da9d0fbf
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 58f8bbd2
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "This is mostly exynos and intel fixes, along with some vblank patches
        I lost from Rob a few months ago that make wayland work better on lots
        of GPUs, also a qxl kconfig fix."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (22 commits)
        qxl: fix Kconfig deps - select FB_DEFERRED_IO
        drm/exynos: replace request_threaded_irq with devm function
        drm/exynos: remove unnecessary devm_kfree
        drm/exynos: fix build warnings from ipp fimc
        drm/exynos: cleanup device pointer usages
        drm/exynos: wait for the completion of pending page flip
        drm/exynos: use drm_send_vblank_event() helper
        drm/i915: avoid premature DP AUX timeouts
        drm/i915: avoid premature timeouts in __wait_seqno()
        drm/i915: use msecs_to_jiffies_timeout instead of open coding the same
        drm/i915: add msecs_to_jiffies_timeout to guarantee minimum duration
        drm/i915: force full modeset if the connector is in DPMS OFF mode
        drm/exynos: page flip fixes
        drm/exynos: exynos_hdmi: Pass correct pointer to free_irq()
        drm/exynos: exynos_drm_ipp: Fix incorrect usage of IS_ERR_OR_NULL
        drm/exynos: exynos_drm_fbdev: Fix incorrect usage of IS_ERR_OR_NULL
        drm/imx: use drm_send_vblank_event() helper
        drm/shmob: use drm_send_vblank_event() helper
        drm/radeon: use drm_send_vblank_event() helper
        drm/nouveau: use drm_send_vblank_event() helper
        ...
      58f8bbd2
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 30a9e501
      Linus Torvalds 提交于
      Pull crypto fixes from Herbert Xu:
       "This push fixes a crash in the new sha256_ssse3 driver as well as a
        DMA setup/teardown bug in caam"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: sha256_ssse3 - fix stack corruption with SSSE3 and AVX implementations
        crypto: caam - fix inconsistent assoc dma mapping direction
      30a9e501
    • L
      Merge branch 'for-3.10' of git://git.samba.org/sfrench/cifs-2.6 · 320b34e3
      Linus Torvalds 提交于
      Pull CIFS fixes from Steve French:
       "Fixes for a couple of DFS problems, a problem with extended security
        negotiation and two other small cifs fixes"
      
      * 'for-3.10' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix composing of mount options for DFS referrals
        cifs: stop printing the unc= option in /proc/mounts
        cifs: fix error handling when calling cifs_parse_devname
        cifs: allow sec=none mounts to work against servers that don't support extended security
        cifs: fix potential buffer overrun when composing a new options string
        cifs: only set ops for inodes in I_NEW state
      320b34e3
    • L
      Merge tag 'trace-fixes-v3.10-rc3' of... · e3bf756e
      Linus Torvalds 提交于
      Merge tag 'trace-fixes-v3.10-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull tracing fixes from Steven Rostedt:
       "Two more fixes:
      
        The first one was reported by Mauro Carvalho Chehab, where if a poll()
        is done against a trace buffer for a CPU that has never been online,
        it will crash the kernel, as buffers are only created when a CPU comes
        on line, but the trace files are for all possible CPUs.
      
        This fix is to check if the buffer was allocated and if not return
        -EINVAL.
      
        That was the simple fix, the real fix is a bit more complex and not
        for a -rc release.  We could have the files created when the CPUs come
        online.  That would require some design changes.
      
        The second one was reported by Peter Zijlstra.  If the kernel command
        line has ftrace=nop, it will lock up the system on boot up.  This is
        because the new design for 3.10 has the nop tracer bootstrap the
        tracing subsystem.  When ftrace=<trace> is defined, when a that tracer
        is registered, it starts the tracing, but uses the nop tracer to clear
        things out.  What happened here was that ftrace=nop caused the
        registering of nop to start it and use nop before it was initialized.
      
        The only thing nop needs to have done to initialize it is to have the
        tracer point its current_tracer structure member to the nop tracer.
        Doing that before registering the nop tracer makes everything work."
      
      * tag 'trace-fixes-v3.10-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        ring-buffer: Do not poll non allocated cpu buffers
        tracing: Fix crash when ftrace=nop on the kernel command line
      e3bf756e
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 3c48dd49
      Linus Torvalds 提交于
      Pull m68k fixes from Geert Uytterhoeven:
       - futex support that I had missed before,
       - A long-overdue update of the m68k defconfigs.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Update defconfigs for v3.9
        m68k: implement futex.h to support userspace robust futexes and PI mutexes
      3c48dd49
    • L
      Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze · 6e7d43f4
      Linus Torvalds 提交于
      Pull microblaze fixes from Michal Simek:
       "One patch fix futex support and my patches fix warnings which were
        reported by Geert's regression testing"
      
      * 'next' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Reversed logic in futex cmpxchg
        microblaze: Use proper casting for inb/inw/inl in io.h
        microblaze: Initialize temp variable to remove compilation warning
      6e7d43f4
  7. 28 5月, 2013 5 次提交
  8. 27 5月, 2013 13 次提交