1. 02 Jul, 2012 2 commits
  2. 20 Jun, 2012 3 commits
    • Joonsoo Kim's avatar
      slub: refactoring unfreeze_partials() · 43d77867
      Joonsoo Kim authored
      Current implementation of unfreeze_partials() is so complicated,
      but benefit from it is insignificant. In addition many code in
      do {} while loop have a bad influence to a fail rate of cmpxchg_double_slab.
      Under current implementation which test status of cpu partial slab
      and acquire list_lock in do {} while loop,
      we don't need to acquire a list_lock and gain a little benefit
      when front of the cpu partial slab is to be discarded, but this is a rare case.
      In case that add_partial is performed and cmpxchg_double_slab is failed,
      remove_partial should be called case by case.
      
      I think that these are disadvantages of current implementation,
      so I do refactoring unfreeze_partials().
      
      Minimizing code in do {} while loop introduce a reduced fail rate
      of cmpxchg_double_slab. Below is output of 'slabinfo -r kmalloc-256'
      when './perf stat -r 33 hackbench 50 process 4000 > /dev/null' is done.
      
      ** before **
      Cmpxchg_double Looping
      ------------------------
      Locked Cmpxchg Double redos   182685
      Unlocked Cmpxchg Double redos 0
      
      ** after **
      Cmpxchg_double Looping
      ------------------------
      Locked Cmpxchg Double redos   177995
      Unlocked Cmpxchg Double redos 1
      
      We can see cmpxchg_double_slab fail rate is improved slightly.
      
      Bolow is output of './perf stat -r 30 hackbench 50 process 4000 > /dev/null'.
      
      ** before **
       Performance counter stats for './hackbench 50 process 4000' (30 runs):
      
           108517.190463 task-clock                #    7.926 CPUs utilized            ( +-  0.24% )
               2,919,550 context-switches          #    0.027 M/sec                    ( +-  3.07% )
                 100,774 CPU-migrations            #    0.929 K/sec                    ( +-  4.72% )
                 124,201 page-faults               #    0.001 M/sec                    ( +-  0.15% )
         401,500,234,387 cycles                    #    3.700 GHz                      ( +-  0.24% )
         <not supported> stalled-cycles-frontend
         <not supported> stalled-cycles-backend
         250,576,913,354 instructions              #    0.62  insns per cycle          ( +-  0.13% )
          45,934,956,860 branches                  #  423.297 M/sec                    ( +-  0.14% )
             188,219,787 branch-misses             #    0.41% of all branches          ( +-  0.56% )
      
            13.691837307 seconds time elapsed                                          ( +-  0.24% )
      
      ** after **
       Performance counter stats for './hackbench 50 process 4000' (30 runs):
      
           107784.479767 task-clock                #    7.928 CPUs utilized            ( +-  0.22% )
               2,834,781 context-switches          #    0.026 M/sec                    ( +-  2.33% )
                  93,083 CPU-migrations            #    0.864 K/sec                    ( +-  3.45% )
                 123,967 page-faults               #    0.001 M/sec                    ( +-  0.15% )
         398,781,421,836 cycles                    #    3.700 GHz                      ( +-  0.22% )
         <not supported> stalled-cycles-frontend
         <not supported> stalled-cycles-backend
         250,189,160,419 instructions              #    0.63  insns per cycle          ( +-  0.09% )
          45,855,370,128 branches                  #  425.436 M/sec                    ( +-  0.10% )
             169,881,248 branch-misses             #    0.37% of all branches          ( +-  0.43% )
      
            13.596272341 seconds time elapsed                                          ( +-  0.22% )
      
      No regression is found, but rather we can see slightly better result.
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarJoonsoo Kim <js1304@gmail.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      43d77867
    • Joonsoo Kim's avatar
      slub: use __cmpxchg_double_slab() at interrupt disabled place · d24ac77f
      Joonsoo Kim authored
      get_freelist(), unfreeze_partials() are only called with interrupt disabled,
      so __cmpxchg_double_slab() is suitable.
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarJoonsoo Kim <js1304@gmail.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      d24ac77f
    • Andi Kleen's avatar
      slab/mempolicy: always use local policy from interrupt context · e7b691b0
      Andi Kleen authored
      slab_node() could access current->mempolicy from interrupt context.
      However there's a race condition during exit where the mempolicy
      is first freed and then the pointer zeroed.
      
      Using this from interrupts seems bogus anyways. The interrupt
      will interrupt a random process and therefore get a random
      mempolicy. Many times, this will be idle's, which noone can change.
      
      Just disable this here and always use local for slab
      from interrupts. I also cleaned up the callers of slab_node a bit
      which always passed the same argument.
      
      I believe the original mempolicy code did that in fact,
      so it's likely a regression.
      
      v2: send version with correct logic
      v3: simplify. fix typo.
      Reported-by: default avatarArun Sharma <asharma@fb.com>
      Cc: penberg@kernel.org
      Cc: cl@linux.com
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      [tdmackey@twitter.com: Rework control flow based on feedback from
      cl@linux.com, fix logic, and cleanup current task_struct reference]
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Acked-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: default avatarDavid Mackey <tdmackey@twitter.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      e7b691b0
  3. 14 Jun, 2012 7 commits
  4. 04 Jun, 2012 1 commit
  5. 03 Jun, 2012 2 commits
  6. 02 Jun, 2012 18 commits
  7. 01 Jun, 2012 7 commits
    • Linus Torvalds's avatar
      Merge tag 'fbdev-updates-for-3.5' of git://github.com/schandinat/linux-2.6 · 804ce986
      Linus Torvalds authored
      Pull fbdev updates from Florian Tobias Schandinat:
       - driver for AUO-K1900 and AUO-K1901 epaper controller
       - large updates for OMAP (e.g. decouple HDMI audio and video)
       - some updates for Exynos and SH Mobile
       - various other small fixes and cleanups
      
      * tag 'fbdev-updates-for-3.5' of git://github.com/schandinat/linux-2.6: (130 commits)
        video: bfin_adv7393fb: Fix cleanup code
        video: exynos_dp: reduce delay time when configuring video setting
        video: exynos_dp: move sw reset prioir to enabling sw defined function
        video: exynos_dp: use devm_ functions
        fb: handle NULL pointers in framebuffer release
        OMAPDSS: HDMI: OMAP4: Update IRQ flags for the HPD IRQ request
        OMAPDSS: Apply VENC timings even if panel is disabled
        OMAPDSS: VENC/DISPC: Delay dividing Y resolution for managers connected to VENC
        OMAPDSS: DISPC: Support rotation through TILER
        OMAPDSS: VRFB: remove compiler warnings when CONFIG_BUG=n
        OMAPFB: remove compiler warnings when CONFIG_BUG=n
        OMAPDSS: remove compiler warnings when CONFIG_BUG=n
        OMAPDSS: DISPC: fix usage of dispc_ovl_set_accu_uv
        OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays
        OMAPDSS: DSI: Support command mode interleaving during video mode blanking periods
        OMAPDSS: DISPC: Update Accumulator configuration for chroma plane
        drivers/video: fsl-diu-fb: don't initialize the THRESHOLDS registers
        video: exynos mipi dsi: support reverse panel type
        video: exynos mipi dsi: Properly interpret the interrupt source flags
        video: exynos mipi dsi: Avoid races in probe()
        ...
      804ce986
    • Linus Torvalds's avatar
      Merge tag 'for-linus-3.5-20120601' of git://git.infradead.org/linux-mtd · f5e7e844
      Linus Torvalds authored
      Pull mtd update from David Woodhouse:
       - More robust parsing especially of xattr data in JFFS2
       - Updates to mxc_nand and gpmi drivers to support new boards and device tree
       - Improve consistency of information about ECC strength in NAND devices
       - Clean up partition handling of plat_nand
       - Support NAND drivers without dedicated access to OOB area
       - BCH hardware ECC support for OMAP
       - Other fixes and cleanups, and a few new device IDs
      
      Fixed trivial conflict in drivers/mtd/nand/gpmi-nand/gpmi-nand.c due to
      added include files next to each other.
      
      * tag 'for-linus-3.5-20120601' of git://git.infradead.org/linux-mtd: (75 commits)
        mtd: mxc_nand: move ecc strengh setup before nand_scan_tail
        mtd: block2mtd: fix recursive call of mtd_writev
        mtd: gpmi-nand: define ecc.strength
        mtd: of_parts: fix breakage in Kconfig
        mtd: nand: fix scan_read_raw_oob
        mtd: docg3 fix in-middle of blocks reads
        mtd: cfi_cmdset_0002: Slight cleanup of fixup messages
        mtd: add fixup for S29NS512P NOR flash.
        jffs2: allow to complete xattr integrity check on first GC scan
        jffs2: allow to discriminate between recoverable and non-recoverable errors
        mtd: nand: omap: add support for hardware BCH ecc
        ARM: OMAP3: gpmc: add BCH ecc api and modes
        mtd: nand: check the return code of 'read_oob/read_oob_raw'
        mtd: nand: remove 'sndcmd' parameter of 'read_oob/read_oob_raw'
        mtd: m25p80: Add support for Winbond W25Q80BW
        jffs2: get rid of jffs2_sync_super
        jffs2: remove unnecessary GC pass on sync
        jffs2: remove unnecessary GC pass on umount
        jffs2: remove lock_super
        mtd: gpmi: add gpmi support for mx6q
        ...
      f5e7e844
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · 48445159
      Linus Torvalds authored
      Pull x86 platform driver updates from Matthew Garrett:
       "Some significant improvements for the Sony driver on newer machines,
        but other than that mostly just minor fixes and a patch to remove the
        broken rfkill code from the Dell driver."
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: (35 commits)
        apple-gmux: Fix up the suspend/resume patch
        dell-laptop: Remove rfkill code
        toshiba_acpi: Fix mis-merge
        dell-laptop: Add touchpad led support for Dell V3450
        acer-wmi: add 3 laptops to video backlight vendor mode quirk table
        sony-laptop: add touchpad enable/disable function
        sony-laptop: add missing Fn key combos for 0x100 handlers
        sony-laptop: add support for more WWAN modems
        sony-laptop: new keyboard backlight handle
        sony-laptop: add high speed battery charging function
        sony-laptop: support automatic resume on lid open
        sony-laptop: adjust error handling in finding SNC handles
        sony-laptop: add thermal profiles support
        sony-laptop: support battery care functions
        sony-laptop: additional debug statements
        sony-laptop: improve SNC initialization and acpi notify callback code
        sony-laptop: use kstrtoul to parse sysfs values
        sony-laptop: generalise ACPI calls into SNC functions
        sony-laptop: fix return path when no ACPI buffer is allocated
        sony-laptop: use soft rfkill status stored in hw
        ...
      48445159
    • Linus Torvalds's avatar
      Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux · af4f8ba3
      Linus Torvalds authored
      Pull slab updates from Pekka Enberg:
       "Mainly a bunch of SLUB fixes from Joonsoo Kim"
      
      * 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:
        slub: use __SetPageSlab function to set PG_slab flag
        slub: fix a memory leak in get_partial_node()
        slub: remove unused argument of init_kmem_cache_node()
        slub: fix a possible memory leak
        Documentations: Fix slabinfo.c directory in vm/slub.txt
        slub: fix incorrect return type of get_any_partial()
      af4f8ba3
    • H. Peter Anvin's avatar
    • Linus Torvalds's avatar
      Merge branch 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · efff0471
      Linus Torvalds authored
      Pull arm fixes for ux500 mismerge mishap from Arnd Bergmann:
       "The device tree conversion for arm/ux500 in 3.5 turns out to be
        incomplete because of a mismerge done by Linus Walleij that I failed
        to notice early enough and that Lee Jones as the original author of
        those patches did not manage to fix during the -next cycle.  While we
        originally to get a much larger set of ux500 device tree enablement
        patches merged, this did not happen in time.
      
        After some discussion at Linaro Connect conference this week, Lee has
        been able to do damage control and provide a series to put the broken
        platform back into usable shape for both DT and non-DT based booting.
      
        This series has not been part of linux-next and is based on top of the
        current state of the upstream kernel rather than an -rc, but this is
        the best we could manage given the earlier breakage."
      
      * 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: ux500: Enable probing of pinctrl through Device Tree
        ARM: ux500: Add support for ab8500 regulators into the Device Tree
        ARM: ux500: Provide regulator support for SMSC911x via Device Tree
        ARM: ux500: Allow PRCMU regulator to be probed during a DT enabled boot
        ARM: ux500: Apply db8500-prcmu regulator information to db8500 Device Tree
        ARM: ux500: Only initialise STE's UIBs on boards which support them
        ARM: ux500: Disable platform setup of the ab8500 when DT is enabled
        ARM: ux500: Use correct format for dynamic IRQ assignment
        ARM: ux500: Re-enable SMSC911x platform code registration during non-DT boots
        ARM: ux500: PRCMU related configuration and layout corrections for Device Tree
        ARM: ux500: Remove DB8500 PRCMU platform registration when DT is enabled
        ARM: ux500: Disable SMSC911x platform code registration when DT is enabled
        ARM: ux500: New DT:ed u8500_init_devices for one-by-one device enablement
        ARM: ux500: New DT:ed snowball_platform_devs for one-by-one device enablement
        pinctrl-nomadik: Allow Device Tree driver probing
      efff0471
    • Devendra Naga's avatar
      r8169: call netif_napi_del at errpaths and at driver unload · ad1be8d3
      Devendra Naga authored
      when register_netdev fails, the init'ed NAPIs by netif_napi_add must be
      deleted with netif_napi_del, and also when driver unloads, it should
      delete the NAPI before unregistering netdevice using unregister_netdev.
      Signed-off-by: default avatarDevendra Naga <devendra.aaru@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad1be8d3