1. 20 5月, 2011 40 次提交
    • N
      sched: Increase SCHED_LOAD_SCALE resolution · c8b28116
      Nikhil Rao 提交于
      Introduce SCHED_LOAD_RESOLUTION, which scales is added to
      SCHED_LOAD_SHIFT and increases the resolution of
      SCHED_LOAD_SCALE. This patch sets the value of
      SCHED_LOAD_RESOLUTION to 10, scaling up the weights for all
      sched entities by a factor of 1024. With this extra resolution,
      we can handle deeper cgroup hiearchies and the scheduler can do
      better shares distribution and load load balancing on larger
      systems (especially for low weight task groups).
      
      This does not change the existing user interface, the scaled
      weights are only used internally. We do not modify
      prio_to_weight values or inverses, but use the original weights
      when calculating the inverse which is used to scale execution
      time delta in calc_delta_mine(). This ensures we do not lose
      accuracy when accounting time to the sched entities. Thanks to
      Nikunj Dadhania for fixing an bug in c_d_m() that broken fairness.
      
      Below is some analysis of the performance costs/improvements of
      this patch.
      
      1. Micro-arch performance costs:
      
      Experiment was to run Ingo's pipe_test_100k 200 times with the
      task pinned to one cpu. I measured instruction, cycles and
      stalled-cycles for the runs. See:
      
         http://thread.gmane.org/gmane.linux.kernel/1129232/focus=1129389
      
      for more info.
      
      -tip (baseline):
      
       Performance counter stats for '/root/load-scale/pipe-test-100k' (200 runs):
      
             964,991,769 instructions             #    0.82  insns per cycle
                                                  #    0.33  stalled cycles per insn
                                                  #    ( +-  0.05% )
           1,171,186,635 cycles                   #    0.000 GHz                      ( +-  0.08% )
             306,373,664 stalled-cycles-backend   #   26.16% backend  cycles idle     ( +-  0.28% )
             314,933,621 stalled-cycles-frontend  #   26.89% frontend cycles idle     ( +-  0.34% )
      
              1.122405684  seconds time elapsed  ( +-  0.05% )
      
      -tip+patches:
      
       Performance counter stats for './load-scale/pipe-test-100k' (200 runs):
      
             963,624,821 instructions             #    0.82  insns per cycle
                                                  #    0.33  stalled cycles per insn
                                                  #    ( +-  0.04% )
           1,175,215,649 cycles                   #    0.000 GHz                      ( +-  0.08% )
             315,321,126 stalled-cycles-backend   #   26.83% backend  cycles idle     ( +-  0.28% )
             316,835,873 stalled-cycles-frontend  #   26.96% frontend cycles idle     ( +-  0.29% )
      
              1.122238659  seconds time elapsed  ( +-  0.06% )
      
      With this patch, instructions decrease by ~0.10% and cycles
      increase by 0.27%. This doesn't look statistically significant.
      The number of stalled cycles in the backend increased from
      26.16% to 26.83%. This can be attributed to the shifts we do in
      c_d_m() and other places. The fraction of stalled cycles in the
      frontend remains about the same, at 26.96% compared to 26.89% in -tip.
      
      2. Balancing low-weight task groups
      
      Test setup: run 50 tasks with random sleep/busy times (biased
      around 100ms) in a low weight container (with cpu.shares = 2).
      Measure %idle as reported by mpstat over a 10s window.
      
      -tip (baseline):
      
      06:47:48 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle    intr/s
      06:47:49 PM  all   94.32    0.00    0.06    0.00    0.00    0.00    0.00    0.00    5.62  15888.00
      06:47:50 PM  all   94.57    0.00    0.62    0.00    0.00    0.00    0.00    0.00    4.81  16180.00
      06:47:51 PM  all   94.69    0.00    0.06    0.00    0.00    0.00    0.00    0.00    5.25  15966.00
      06:47:52 PM  all   95.81    0.00    0.00    0.00    0.00    0.00    0.00    0.00    4.19  16053.00
      06:47:53 PM  all   94.88    0.06    0.00    0.00    0.00    0.00    0.00    0.00    5.06  15984.00
      06:47:54 PM  all   93.31    0.00    0.00    0.00    0.00    0.00    0.00    0.00    6.69  15806.00
      06:47:55 PM  all   94.19    0.00    0.06    0.00    0.00    0.00    0.00    0.00    5.75  15896.00
      06:47:56 PM  all   92.87    0.00    0.00    0.00    0.00    0.00    0.00    0.00    7.13  15716.00
      06:47:57 PM  all   94.88    0.00    0.00    0.00    0.00    0.00    0.00    0.00    5.12  15982.00
      06:47:58 PM  all   95.44    0.00    0.00    0.00    0.00    0.00    0.00    0.00    4.56  16075.00
      Average:     all   94.49    0.01    0.08    0.00    0.00    0.00    0.00    0.00    5.42  15954.60
      
      -tip+patches:
      
      06:47:03 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle    intr/s
      06:47:04 PM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  16630.00
      06:47:05 PM  all   99.69    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.31  16580.20
      06:47:06 PM  all   99.69    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.25  16596.00
      06:47:07 PM  all   99.20    0.00    0.74    0.00    0.00    0.06    0.00    0.00    0.00  17838.61
      06:47:08 PM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  16540.00
      06:47:09 PM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  16575.00
      06:47:10 PM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  16614.00
      06:47:11 PM  all   99.94    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.06  16588.00
      06:47:12 PM  all   99.94    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00  16593.00
      06:47:13 PM  all   99.94    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00  16551.00
      Average:     all   99.84    0.00    0.09    0.00    0.00    0.01    0.00    0.00    0.06  16711.58
      
      We see an improvement in idle% on the system (drops from 5.42% on -tip to 0.06%
      with the patches).
      
      We see an improvement in idle% on the system (drops from 5.42%
      on -tip to 0.06% with the patches).
      Signed-off-by: NNikhil Rao <ncrao@google.com>
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
      Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Cc: Stephan Barwolf <stephan.baerwolf@tu-ilmenau.de>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1305754668-18792-1-git-send-email-ncrao@google.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
      c8b28116
    • N
      sched: Introduce SCHED_POWER_SCALE to scale cpu_power calculations · 1399fa78
      Nikhil Rao 提交于
      SCHED_LOAD_SCALE is used to increase nice resolution and to
      scale cpu_power calculations in the scheduler. This patch
      introduces SCHED_POWER_SCALE and converts all uses of
      SCHED_LOAD_SCALE for scaling cpu_power to use SCHED_POWER_SCALE
      instead.
      
      This is a preparatory patch for increasing the resolution of
      SCHED_LOAD_SCALE, and there is no need to increase resolution
      for cpu_power calculations.
      Signed-off-by: NNikhil Rao <ncrao@google.com>
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
      Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Cc: Stephan Barwolf <stephan.baerwolf@tu-ilmenau.de>
      Cc: Mike Galbraith <efault@gmx.de>
      Link: http://lkml.kernel.org/r/1305738580-9924-3-git-send-email-ncrao@google.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
      1399fa78
    • N
      sched: Cleanup set_load_weight() · f05998d4
      Nikhil Rao 提交于
      Avoid using long repetitious names; make this simpler and nicer
      to read. No functional change introduced in this patch.
      Signed-off-by: NNikhil Rao <ncrao@google.com>
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
      Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Cc: Stephan Barwolf <stephan.baerwolf@tu-ilmenau.de>
      Cc: Mike Galbraith <efault@gmx.de>
      Link: http://lkml.kernel.org/r/1305738580-9924-2-git-send-email-ncrao@google.comSigned-off-by: NIngo Molnar <mingo@elte.hu>
      f05998d4
    • L
      selinux: avoid unnecessary avc cache stat hit count · 257313b2
      Linus Torvalds 提交于
      There is no point in counting hits - we can calculate it from the number
      of lookups and misses.
      
      This makes the avc statistics a bit smaller, and makes the code
      generation better too.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      257313b2
    • L
      selinux: de-crapify avc cache stat code generation · 044aea9b
      Linus Torvalds 提交于
      You can turn off the avc cache stats, but distributions seem to not do
      that (perhaps because several performance tuning how-to's talk about the
      avc cache statistics).
      
      Which is sad, because the code it generates is truly horrendous, with
      the statistics update being sandwitched between get_cpu/put_cpu which in
      turn causes preemption disables etc.  We're talking ten+ instructions
      just to increment a per-cpu variable in some pretty hot code.
      
      Fix the craziness by just using 'this_cpu_inc()' instead.  Suddenly we
      only need a single 'inc' instruction to increment the statistics.  This
      is quite noticeable in the incredibly hot avc_has_perm_noaudit()
      function (which triggers all the statistics by virtue of doing an
      avc_lookup() call).
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      044aea9b
    • L
      Merge branch 'driver-core-next' of... · 39ab05c8
      Linus Torvalds 提交于
      Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
      
      * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (44 commits)
        debugfs: Silence DEBUG_STRICT_USER_COPY_CHECKS=y warning
        sysfs: remove "last sysfs file:" line from the oops messages
        drivers/base/memory.c: fix warning due to "memory hotplug: Speed up add/remove when blocks are larger than PAGES_PER_SECTION"
        memory hotplug: Speed up add/remove when blocks are larger than PAGES_PER_SECTION
        SYSFS: Fix erroneous comments for sysfs_update_group().
        driver core: remove the driver-model structures from the documentation
        driver core: Add the device driver-model structures to kerneldoc
        Translated Documentation/email-clients.txt
        RAW driver: Remove call to kobject_put().
        reboot: disable usermodehelper to prevent fs access
        efivars: prevent oops on unload when efi is not enabled
        Allow setting of number of raw devices as a module parameter
        Introduce CONFIG_GOOGLE_FIRMWARE
        driver: Google Memory Console
        driver: Google EFI SMI
        x86: Better comments for get_bios_ebda()
        x86: get_bios_ebda_length()
        misc: fix ti-st build issues
        params.c: Use new strtobool function to process boolean inputs
        debugfs: move to new strtobool
        ...
      
      Fix up trivial conflicts in fs/debugfs/file.c due to the same patch
      being applied twice, and an unrelated cleanup nearby.
      39ab05c8
    • S
      signal.h need a definition of struct task_struct · 1477fcc2
      Stephen Rothwell 提交于
      This fixes these build errors on powerpc:
      
        In file included from arch/powerpc/mm/fault.c:18:
        include/linux/signal.h:239: error: 'struct task_struct' declared inside parameter list
        include/linux/signal.h:239: error: its scope is only this definition or declaration, which is probably not what you want
        include/linux/signal.h:240: error: 'struct task_struct' declared inside parameter list
        ..
      
      Exposed by commit e66eed65 ("list: remove prefetching from regular
      list iterators"), which removed the include of <linux/prefetch.h> from
      <linux/list.h>.
      
      Without that, linux/signal.h no longer accidentally got the declaration
      of 'struct task_struct'.
      
      Fix by properly declaring the struct, rather than introducing any new
      header file dependency.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1477fcc2
    • L
      Merge branch 'core-rcu-for-linus' of... · eb04f2f0
      Linus Torvalds 提交于
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (78 commits)
        Revert "rcu: Decrease memory-barrier usage based on semi-formal proof"
        net,rcu: convert call_rcu(prl_entry_destroy_rcu) to kfree
        batman,rcu: convert call_rcu(softif_neigh_free_rcu) to kfree_rcu
        batman,rcu: convert call_rcu(neigh_node_free_rcu) to kfree()
        batman,rcu: convert call_rcu(gw_node_free_rcu) to kfree_rcu
        net,rcu: convert call_rcu(kfree_tid_tx) to kfree_rcu()
        net,rcu: convert call_rcu(xt_osf_finger_free_rcu) to kfree_rcu()
        net/mac80211,rcu: convert call_rcu(work_free_rcu) to kfree_rcu()
        net,rcu: convert call_rcu(wq_free_rcu) to kfree_rcu()
        net,rcu: convert call_rcu(phonet_device_rcu_free) to kfree_rcu()
        perf,rcu: convert call_rcu(swevent_hlist_release_rcu) to kfree_rcu()
        perf,rcu: convert call_rcu(free_ctx) to kfree_rcu()
        net,rcu: convert call_rcu(__nf_ct_ext_free_rcu) to kfree_rcu()
        net,rcu: convert call_rcu(net_generic_release) to kfree_rcu()
        net,rcu: convert call_rcu(netlbl_unlhsh_free_addr6) to kfree_rcu()
        net,rcu: convert call_rcu(netlbl_unlhsh_free_addr4) to kfree_rcu()
        security,rcu: convert call_rcu(sel_netif_free) to kfree_rcu()
        net,rcu: convert call_rcu(xps_dev_maps_release) to kfree_rcu()
        net,rcu: convert call_rcu(xps_map_release) to kfree_rcu()
        net,rcu: convert call_rcu(rps_map_release) to kfree_rcu()
        ...
      eb04f2f0
    • L
      Merge branch 'x86-smep-for-linus' of... · 5765040e
      Linus Torvalds 提交于
      Merge branch 'x86-smep-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-smep-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, cpu: Enable/disable Supervisor Mode Execution Protection
        x86, cpu: Add SMEP CPU feature in CR4
        x86, cpufeature: Add cpufeature flag for SMEP
      5765040e
    • L
      Merge branches 'x86-reboot-for-linus' and 'x86-setup-for-linus' of... · 08839ff8
      Linus Torvalds 提交于
      Merge branches 'x86-reboot-for-linus' and 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-reboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: Reorder reboot method preferences
      
      * 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, setup: Fix EDD3.0 data verification.
      08839ff8
    • L
      Merge branch 'x86-platform-for-linus' of... · 08b5d06e
      Linus Torvalds 提交于
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: Introduce pci_map_biosrom()
        x86, olpc: Use device tree for platform identification
      08b5d06e
    • L
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · 13588209
      Linus Torvalds 提交于
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (50 commits)
        x86, mm: Allow ZONE_DMA to be configurable
        x86, NUMA: Trim numa meminfo with max_pfn in a separate loop
        x86, NUMA: Rename setup_node_bootmem() to setup_node_data()
        x86, NUMA: Enable emulation on 32bit too
        x86, NUMA: Enable CONFIG_AMD_NUMA on 32bit too
        x86, NUMA: Rename amdtopology_64.c to amdtopology.c
        x86, NUMA: Make numa_init_array() static
        x86, NUMA: Make 32bit use common NUMA init path
        x86, NUMA: Initialize and use remap allocator from setup_node_bootmem()
        x86-32, NUMA: Add @start and @end to init_alloc_remap()
        x86, NUMA: Remove long 64bit assumption from numa.c
        x86, NUMA: Enable build of generic NUMA init code on 32bit
        x86, NUMA: Move NUMA init logic from numa_64.c to numa.c
        x86-32, NUMA: Update numaq to use new NUMA init protocol
        x86-32, NUMA: Replace srat_32.c with srat.c
        x86-32, NUMA: implement temporary NUMA init shims
        x86, NUMA: Move numa_nodes_parsed to numa.[hc]
        x86-32, NUMA: Move get_memcfg_numa() into numa_32.c
        x86, NUMA: make srat.c 32bit safe
        x86, NUMA: rename srat_64.c to srat.c
        ...
      13588209
    • L
      Merge branches 'x86-efi-for-linus', 'x86-gart-for-linus', 'x86-irq-for-linus'... · ac2941f5
      Linus Torvalds 提交于
      Merge branches 'x86-efi-for-linus', 'x86-gart-for-linus', 'x86-irq-for-linus' and 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, efi: Ensure that the entirity of a region is mapped
        x86, efi: Pass a minimal map to SetVirtualAddressMap()
        x86, efi: Merge contiguous memory regions of the same type and attribute
        x86, efi: Consolidate EFI nx control
        x86, efi: Remove virtual-mode SetVirtualAddressMap call
      
      * 'x86-gart-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, gart: Don't enforce GART aperture lower-bound by alignment
      
      * 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: Don't unmask disabled irqs when migrating them
        x86: Skip migrating IRQF_PER_CPU irqs in fixup_irqs()
      
      * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, mce: Drop the default decoding notifier
        x86, MCE: Do not taint when handling correctable errors
      ac2941f5
    • L
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · 01628188
      Linus Torvalds 提交于
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, cpu: Fix detection of Celeron Covington stepping A1 and B0
        Documentation, ABI: Update L3 cache index disable text
        x86, AMD, cacheinfo: Fix L3 cache index disable checks
        x86, AMD, cacheinfo: Fix fallout caused by max3 conversion
        x86, cpu: Change NOP selection for certain Intel CPUs
        x86, cpu: Clean up and unify the NOP selection infrastructure
        x86, percpu: Use ASM_NOP4 instead of hardcoding P6_NOP4
        x86, cpu: Move AMD Elan Kconfig under "Processor family"
      
      Fix up trivial conflicts in alternative handling (commit dc326fca
      "x86, cpu: Clean up and unify the NOP selection infrastructure" removed
      some hacky 5-byte instruction stuff, while commit d430d3d7 "jump
      label: Introduce static_branch() interface" renamed HAVE_JUMP_LABEL to
      CONFIG_JUMP_LABEL in the code that went away)
      01628188
    • L
      Merge branches 'x86-apic-for-linus', 'x86-asm-for-linus' and... · 17b14180
      Linus Torvalds 提交于
      Merge branches 'x86-apic-for-linus', 'x86-asm-for-linus' and 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, apic: Print verbose error interrupt reason on apic=debug
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: Demacro CONFIG_PARAVIRT cpu accessors
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: Fix mrst sparse complaints
        x86: Fix spelling error in the memcpy() source code comment
        x86, mpparse: Remove unnecessary variable
      17b14180
    • L
      Merge branch 'timers-core-for-linus' of... · 78c4def6
      Linus Torvalds 提交于
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        hrtimer: Make lookup table const
        RTC: Disable CONFIG_RTC_CLASS from being built as a module
        timers: Fix alarmtimer build issues when CONFIG_RTC_CLASS=n
        timers: Remove delayed irqwork from alarmtimers implementation
        timers: Improve alarmtimer comments and minor fixes
        timers: Posix interface for alarm-timers
        timers: Introduce in-kernel alarm-timer interface
        timers: Add rb_init_node() to allow for stack allocated rb nodes
        time: Add timekeeping_inject_sleeptime
      78c4def6
    • L
      Merge branch 'timers-clockevents-for-linus' of... · 7e6628e4
      Linus Torvalds 提交于
      Merge branch 'timers-clockevents-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'timers-clockevents-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: hpet: Cleanup the clockevents init and register code
        x86: Convert PIT to clockevents_config_and_register()
        clockevents: Provide interface to reconfigure an active clock event device
        clockevents: Provide combined configure and register function
        clockevents: Restructure clock_event_device members
        clocksource: Get rid of the hardcoded 5 seconds sleep time limit
        clocksource: Restructure clocksource struct members
      7e6628e4
    • L
      Merge branch 'timers-clocksource-for-linus' of... · 0f1bdc18
      Linus Torvalds 提交于
      Merge branch 'timers-clocksource-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'timers-clocksource-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        clocksource: convert mips to generic i8253 clocksource
        clocksource: convert x86 to generic i8253 clocksource
        clocksource: convert footbridge to generic i8253 clocksource
        clocksource: add common i8253 PIT clocksource
        blackfin: convert to clocksource_register_hz
        mips: convert to clocksource_register_hz/khz
        sparc: convert to clocksource_register_hz/khz
        alpha: convert to clocksource_register_hz
        microblaze: convert to clocksource_register_hz/khz
        ia64: convert to clocksource_register_hz/khz
        x86: Convert remaining x86 clocksources to clocksource_register_hz/khz
        Make clocksource name const
      0f1bdc18
    • L
      Merge branches 'sched-core-for-linus' and 'sched-urgent-for-linus' of... · 80fe02b5
      Linus Torvalds 提交于
      Merge branches 'sched-core-for-linus' and 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (60 commits)
        sched: Fix and optimise calculation of the weight-inverse
        sched: Avoid going ahead if ->cpus_allowed is not changed
        sched, rt: Update rq clock when unthrottling of an otherwise idle CPU
        sched: Remove unused parameters from sched_fork() and wake_up_new_task()
        sched: Shorten the construction of the span cpu mask of sched domain
        sched: Wrap the 'cfs_rq->nr_spread_over' field with CONFIG_SCHED_DEBUG
        sched: Remove unused 'this_best_prio arg' from balance_tasks()
        sched: Remove noop in alloc_rt_sched_group()
        sched: Get rid of lock_depth
        sched: Remove obsolete comment from scheduler_tick()
        sched: Fix sched_domain iterations vs. RCU
        sched: Next buddy hint on sleep and preempt path
        sched: Make set_*_buddy() work on non-task entities
        sched: Remove need_migrate_task()
        sched: Move the second half of ttwu() to the remote cpu
        sched: Restructure ttwu() some more
        sched: Rename ttwu_post_activation() to ttwu_do_wakeup()
        sched: Remove rq argument from ttwu_stat()
        sched: Remove rq->lock from the first half of ttwu()
        sched: Drop rq->lock from sched_exec()
        ...
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        sched: Fix rt_rq runtime leakage bug
      80fe02b5
    • L
      Merge branch 'perf-core-for-linus' of... · df48d871
      Linus Torvalds 提交于
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (107 commits)
        perf stat: Add more cache-miss percentage printouts
        perf stat: Add -d -d and -d -d -d options to show more CPU events
        ftrace/kbuild: Add recordmcount files to force full build
        ftrace: Add self-tests for multiple function trace users
        ftrace: Modify ftrace_set_filter/notrace to take ops
        ftrace: Allow dynamically allocated function tracers
        ftrace: Implement separate user function filtering
        ftrace: Free hash with call_rcu_sched()
        ftrace: Have global_ops store the functions that are to be traced
        ftrace: Add ops parameter to ftrace_startup/shutdown functions
        ftrace: Add enabled_functions file
        ftrace: Use counters to enable functions to trace
        ftrace: Separate hash allocation and assignment
        ftrace: Create a global_ops to hold the filter and notrace hashes
        ftrace: Use hash instead for FTRACE_FL_FILTER
        ftrace: Replace FTRACE_FL_NOTRACE flag with a hash of ignored functions
        perf bench, x86: Add alternatives-asm.h wrapper
        x86, 64-bit: Fix copy_[to/from]_user() checks for the userspace address limit
        x86, mem: memset_64.S: Optimize memset by enhanced REP MOVSB/STOSB
        x86, mem: memmove_64.S: Optimize memmove by enhanced REP MOVSB/STOSB
        ...
      df48d871
    • L
      Merge branch 'irq-core-for-linus' of... · acd30250
      Linus Torvalds 提交于
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        irq: Export functions to allow modular irq drivers
        genirq: Uninline and sanity check generic_handle_irq()
        genirq: Remove pointless ifdefs
        genirq: Make generic irq chip depend on CONFIG_GENERIC_IRQ_CHIP
        genirq: Add chip suspend and resume callbacks
        genirq: Implement a generic interrupt chip
        genirq: Support per-IRQ thread disabling.
        genirq: irq_desc: Document preflow_handler and affinity_hint
        genirq: Update DocBook comments
        genirq: Forgotten updates/deletions after removal of compat code
      acd30250
    • L
      Merge branch 'core-locking-for-linus' of... · 6595b4a9
      Linus Torvalds 提交于
      Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        seqlock: Don't smp_rmb in seqlock reader spin loop
        watchdog, hung_task_timeout: Add Kconfig configurable default
        lockdep: Remove cmpxchg to update nr_chain_hlocks
        lockdep: Print a nicer description for simple irq lock inversions
        lockdep: Replace "Bad BFS generated tree" message with something less cryptic
        lockdep: Print a nicer description for irq inversion bugs
        lockdep: Print a nicer description for simple deadlocks
        lockdep: Print a nicer description for normal deadlocks
        lockdep: Print a nicer description for irq lock inversions
      6595b4a9
    • L
      Merge branch 'core-iommu-for-linus' of... · cbdad8dc
      Linus Torvalds 提交于
      Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, gart: Rename pci-gart_64.c to amd_gart_64.c
        x86/amd-iommu: Use threaded interupt handler
        arch/x86/kernel/pci-iommu_table.c: Convert sprintf_symbol to %pS
        x86/amd-iommu: Add support for invalidate_all command
        x86/amd-iommu: Add extended feature detection
        x86/amd-iommu: Add ATS enable/disable code
        x86/amd-iommu: Add flag to indicate IOTLB support
        x86/amd-iommu: Flush device IOTLB if ATS is enabled
        x86/amd-iommu: Select PCI_IOV with AMD IOMMU driver
        PCI: Move ATS declarations in seperate header file
        dma-debug: print information about leaked entry
        x86/amd-iommu: Flush all internal TLBs when IOMMUs are enabled
        x86/amd-iommu: Rename iommu_flush_device
        x86/amd-iommu: Improve handling of full command buffer
        x86/amd-iommu: Rename iommu_flush* to domain_flush*
        x86/amd-iommu: Remove command buffer resetting logic
        x86/amd-iommu: Cleanup completion-wait handling
        x86/amd-iommu: Cleanup inv_pages command handling
        x86/amd-iommu: Move inv-dte command building to own function
        x86/amd-iommu: Move compl-wait command building to own function
      cbdad8dc
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 · 51509a28
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6: (34 commits)
        PM: Introduce generic prepare and complete callbacks for subsystems
        PM: Allow drivers to allocate memory from .prepare() callbacks safely
        PM: Remove CONFIG_PM_VERBOSE
        Revert "PM / Hibernate: Reduce autotuned default image size"
        PM / Hibernate: Add sysfs knob to control size of memory for drivers
        PM / Wakeup: Remove useless synchronize_rcu() call
        kmod: always provide usermodehelper_disable()
        PM / ACPI: Remove acpi_sleep=s4_nonvs
        PM / Wakeup: Fix build warning related to the "wakeup" sysfs file
        PM: Print a warning if firmware is requested when tasks are frozen
        PM / Runtime: Rework runtime PM handling during driver removal
        Freezer: Use SMP barriers
        PM / Suspend: Do not ignore error codes returned by suspend_enter()
        PM: Fix build issue in clock_ops.c for CONFIG_PM_RUNTIME unset
        PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops"
        OMAP1 / PM: Use generic clock manipulation routines for runtime PM
        PM: Remove sysdev suspend, resume and shutdown operations
        PM / PowerPC: Use struct syscore_ops instead of sysdevs for PM
        PM / UNICORE32: Use struct syscore_ops instead of sysdevs for PM
        PM / AVR32: Use struct syscore_ops instead of sysdevs for PM
        ...
      51509a28
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 75f5076b
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB/qib: Use pci_dev->revision
        RDMA/iwcm: Get rid of enum iw_cm_event_status
        IB/ipath: Use pci_dev->revision, again
        IB/qib: Prevent driver hang with unprogrammed boards
        RDMA/cxgb4: EEH errors can hang the driver
        RDMA/cxgb4: Reset wait condition atomically
        RDMA/cxgb4: Fix missing parentheses
        RDMA/cxgb4: Initialization errors can cause crash
        RDMA/cxgb4: Don't change QP state outside EP lock
        RDMA/cma: Add an ID_REUSEADDR option
        RDMA/cma: Fix handling of IPv6 addressing in cma_use_port
      75f5076b
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm · 83d7e948
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm:
        kmemleak: Initialise kmemleak after debug_objects_mem_init()
        kmemleak: Select DEBUG_FS unconditionally in DEBUG_KMEMLEAK
        kmemleak: Do not return a pointer to an object that kmemleak did not get
      83d7e948
    • L
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus · fce4a1dd
      Linus Torvalds 提交于
      * 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus: (48 commits)
        MIPS: Move arch_get_unmapped_area and gang to new file.
        MIPS: Cleanup arch_get_unmapped_area
        MIPS: Octeon: Don't request interrupts for unused IPI mailbox bits.
        Octeon: Fix interrupt irq settings for performance counters.
        MIPS: Fix build warnings on defconfigs
        MIPS: Lemote 2F, Malta: Fix build warning
        MIPS: Set ELF AT_PLATFORM string for Loongson2 processors
        MIPS: Set ELF AT_PLATFORM string for BMIPS processors
        MIPS: Introduce set_elf_platform() helper function
        MIPS: JZ4740: setup: Autodetect physical memory.
        MIPS: BCM47xx: Fix MAC address parsing.
        MIPS: BCM47xx: Extend the filling of SPROM from NVRAM
        MIPS: BCM47xx: Register SSB fallback sprom callback
        MIPS: BCM47xx: Extend bcm47xx_fill_sprom with prefix.
        SSB: Change fallback sprom to callback mechanism.
        MIPS: Alchemy: Clean up GPIO registers and accessors
        MIPS: Alchemy: Cleanup DMA addresses
        MIPS: Alchemy: Rewrite ethernet platform setup
        MIPS: Alchemy: Rewrite UART setup and constants.
        MIPS: Alchemy: Convert dbdma.c to syscore_ops
        ...
      fce4a1dd
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · e1f2084e
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        input/atari: Fix mouse movement and button mapping
        input/atari: Fix atarimouse init
        input/atari: Use the correct mouse interrupt hook
        m68k/atari: Do not use "/" in interrupt names
        m68k: unistd - Comment out definitions for unimplemented syscalls
        m68k: Really wire up sys_pselect6 and sys_ppoll
        m68k: Merge mmu and non-mmu versions of sys_call_table
        MAINTAINERS: Roman Zippel has been MIA for several years.
        m68k: bitops - Never step beyond the end of the bitmap
        m68k: bitops - offset == ((long)p - (long)vaddr) * 8
      e1f2084e
    • L
      Merge branches 'stable/irq', 'stable/p2m.bugfixes', 'stable/e820.bugfixes' and... · e33ab8f2
      Linus Torvalds 提交于
      Merge branches 'stable/irq', 'stable/p2m.bugfixes', 'stable/e820.bugfixes' and 'stable/mmu.bugfixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      * 'stable/irq' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen: do not clear and mask evtchns in __xen_evtchn_do_upcall
      
      * 'stable/p2m.bugfixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/p2m: Create entries in the P2M_MFN trees's to track 1-1 mappings
      
      * 'stable/e820.bugfixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/setup: Fix for incorrect xen_extra_mem_start initialization under 32-bit
        xen/setup: Ignore E820_UNUSABLE when setting 1-1 mappings.
      
      * 'stable/mmu.bugfixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen mmu: fix a race window causing leave_mm BUG()
      e33ab8f2
    • L
      Merge branches 'stable/balloon.cleanup' and 'stable/general.cleanup' of... · 3bfccb74
      Linus Torvalds 提交于
      Merge branches 'stable/balloon.cleanup' and 'stable/general.cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      * 'stable/balloon.cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/balloon: Move dec_totalhigh_pages() from __balloon_append() to balloon_append()
        xen/balloon: Clarify credit calculation
        xen/balloon: Simplify HVM integration
        xen/balloon: Use PageHighMem() for high memory page detection
      
      * 'stable/general.cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        drivers/xen/sys-hypervisor: Cleanup code/data sections definitions
        arch/x86/xen/smp: Cleanup code/data sections definitions
        arch/x86/xen/time: Cleanup code/data sections definitions
        arch/x86/xen/xen-ops: Cleanup code/data sections definitions
        arch/x86/xen/mmu: Cleanup code/data sections definitions
        arch/x86/xen/setup: Cleanup code/data sections definitions
        arch/x86/xen/enlighten: Cleanup code/data sections definitions
        arch/x86/xen/irq: Cleanup code/data sections definitions
        xen: tidy up whitespace in drivers/xen/Makefile
      3bfccb74
    • L
      Merge branches 'stable/backend.base.v3' and 'stable/gntalloc.v7' of... · 53189916
      Linus Torvalds 提交于
      Merge branches 'stable/backend.base.v3' and 'stable/gntalloc.v7' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      * 'stable/backend.base.v3' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/pci: Fix compiler error when CONFIG_XEN_PRIVILEGED_GUEST is not set.
        xen/p2m: Add EXPORT_SYMBOL_GPL to the M2P override functions.
        xen/p2m/m2p/gnttab: Support GNTMAP_host_map in the M2P override.
        xen/irq: The Xen hypervisor cleans up the PIRQs if the other domain forgot.
        xen/irq: Export 'xen_pirq_from_irq' function.
        xen/irq: Add support to check if IRQ line is shared with other domains.
        xen/irq: Check if the PCI device is owned by a domain different than DOMID_SELF.
        xen/pci: Add xen_[find|register|unregister]_device_domain_owner functions.
      
      * 'stable/gntalloc.v7' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/gntdev,gntalloc: Remove unneeded VM flags
      53189916
    • L
      Merge branch 'stable/broadcom.ibft' of... · dc932751
      Linus Torvalds 提交于
      Merge branch 'stable/broadcom.ibft' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft-2.6
      
      * 'stable/broadcom.ibft' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft-2.6:
        iscsi_ibft: search for broadcom specific ibft sign (v2)
      dc932751
    • L
      Merge branch 'move-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · 6b55b908
      Linus Torvalds 提交于
      * 'move-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        [CPUFREQ] Move x86 drivers to drivers/cpufreq/
      6b55b908
    • L
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · f8223b17
      Linus Torvalds 提交于
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        [CPUFREQ] remove redundant sprintf from request_module call.
        [CPUFREQ] cpufreq_stats.c: Fixed brace coding style issue
        [CPUFREQ] Fix memory leak in cpufreq_stat
        [CPUFREQ] cpufreq.h: Fix some checkpatch.pl coding style issues.
        [CPUFREQ] use dynamic debug instead of custom infrastructure
        [CPUFREQ] CPU hotplug, re-create sysfs directory and symlinks
        [CPUFREQ] Fix _OSC UUID in pcc-cpufreq
      f8223b17
    • D
      [CPUFREQ] Move x86 drivers to drivers/cpufreq/ · bb0a56ec
      Dave Jones 提交于
      Signed-off-by: NDave Jones <davej@redhat.com>
      bb0a56ec
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus · 98a38a5d
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
        params.c: Use new strtobool function to process boolean inputs
        debugfs: move to new strtobool
        Add a strtobool function matching semantics of existing in kernel equivalents
        modpost: Update 64k section support for binutils 2.18.50
        module: Use binary search in lookup_symbol()
        module: Use the binary search for symbols resolution
        lib: Add generic binary search function to the kernel.
        module: Sort exported symbols
        module: each_symbol_section instead of each_symbol
        module: split unset_section_ro_nx function.
        module: undo module RONX protection correctly.
        module: zero mod->init_ro_size after init is freed.
        minor ANSI prototype sparse fix
        module: reorder kparam_array to remove alignment padding on 64 bit builds
        module: remove 64 bit alignment padding from struct module with CONFIG_TRACE*
        module: do not hide __modver_version_show declaration behind ifdef
        module: deal with alignment issues in built-in module versions
      98a38a5d
    • L
      Merge branch 'docs-move' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs · 7663164f
      Linus Torvalds 提交于
      * 'docs-move' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs:
        Correct occurrences of - Documentation/kvm/ to Documentation/virtual/kvm - Documentation/uml/ to Documentation/virtual/uml - Documentation/lguest/ to Documentation/virtual/lguest throughout the kernel source tree.
        Add a 00-INDEX file to Documentation/virtual Remove uml from the top level 00-INDEX file.
        Move kvm, uml, and lguest subdirectories under a common "virtual" directory, I.E:
      7663164f
    • P
      Revert "rcu: Decrease memory-barrier usage based on semi-formal proof" · 80d02085
      Paul E. McKenney 提交于
      This reverts commit e59fb312.
      
      This reversion was due to (extreme) boot-time slowdowns on SPARC seen by
      Yinghai Lu and on x86 by Ingo
      .
      This is a non-trivial reversion due to intervening commits.
      
      Conflicts:
      
      	Documentation/RCU/trace.txt
      	kernel/rcutree.c
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      80d02085
    • L
      list: remove prefetching from regular list iterators · e66eed65
      Linus Torvalds 提交于
      This is removes the use of software prefetching from the regular list
      iterators.  We don't want it.  If you do want to prefetch in some
      iterator of yours, go right ahead.  Just don't expect the iterator to do
      it, since normally the downsides are bigger than the upsides.
      
      It also replaces <linux/prefetch.h> with <linux/const.h>, because the
      use of LIST_POISON ends up needing it.  <linux/poison.h> is sadly not
      self-contained, and including prefetch.h just happened to hide that.
      
      Suggested by David Miller (networking has a lot of regular lists that
      are often empty or a single entry, and prefetching is not going to do
      anything but add useless instructions).
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Cc: linux-arch@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e66eed65
    • L
      hlist: remove software prefetching in hlist iterators · 75d65a42
      Linus Torvalds 提交于
      They not only increase the code footprint, they actually make things
      slower rather than faster.  On internationally acclaimed benchmarks
      ("make -j16" on an already fully built kernel source tree) the hlist
      prefetching slows down the build by up to 1%.
      
      (Almost all of it comes from hlist_for_each_entry_rcu() as used by
      avc_has_perm_noaudit(), which is very hot due to all the pathname
      lookups to see if there is anything to do).
      
      The cause seems to be two-fold:
      
       - on at least some Intel cores, prefetch(NULL) ends up with some
         microarchitectural stall due to the TLB miss that it incurs.  The
         hlist case triggers this very commonly, since the NULL pointer is the
         last entry in the list.
      
       - the prefetch appears to cause more D$ activity, probably because it
         prefetches hash list entries that are never actually used (because we
         ended the search early due to a hit).
      
      Regardless, the numbers clearly say that the implicit prefetching is
      simply a bad idea.  If some _particular_ user of the hlist iterators
      wants to prefetch the next list entry, they can do so themselves
      explicitly, rather than depend on all list iterators doing so
      implicitly.
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Cc: linux-arch@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      75d65a42