1. 13 1月, 2006 5 次提交
    • D
      [PATCH] powerpc: Add/remove/update properties in firmware device tree · 088186de
      Dave C Boutcher 提交于
      Add support for updating and removing device tree
      properties.  Since we hand out pointers to properties with gay
      abandon, we can't just free the property storage.  Instead we
      move deleted, or the old copy of an updated property, to a
      "dead properties" list.
      
      Also note, its not feasable to kref device tree properties.
      we call get_property() all over the kernel in a wild variety
      of contexts.
      
      One consequence of this change is that we now take a
      read_lock(&devtree_lock) when doing get_property().
      Signed-off-by: NDave Boutcher <sleddog@us.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      088186de
    • D
      [PATCH] powerpc: Add some more pSeries hypervisor call constants · 43ccf202
      Dave C Boutcher 提交于
      Adds a few more hypervisor call constants.
      Signed-off-by: NDave Boutcher <sleddog@us.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      43ccf202
    • A
      [PATCH] death of get_thread_info/put_thread_info · f5a61d0c
      Al Viro 提交于
      {get,put}_thread_info() were introduced in 2.5.4 and never
      had been called by anything in the tree.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f5a61d0c
    • A
      [PATCH] scheduler cache-hot-autodetect · 198e2f18
      akpm@osdl.org 提交于
      )
      
      From: Ingo Molnar <mingo@elte.hu>
      
      This is the latest version of the scheduler cache-hot-auto-tune patch.
      
      The first problem was that detection time scaled with O(N^2), which is
      unacceptable on larger SMP and NUMA systems. To solve this:
      
      - I've added a 'domain distance' function, which is used to cache
        measurement results. Each distance is only measured once. This means
        that e.g. on NUMA distances of 0, 1 and 2 might be measured, on HT
        distances 0 and 1, and on SMP distance 0 is measured. The code walks
        the domain tree to determine the distance, so it automatically follows
        whatever hierarchy an architecture sets up. This cuts down on the boot
        time significantly and removes the O(N^2) limit. The only assumption
        is that migration costs can be expressed as a function of domain
        distance - this covers the overwhelming majority of existing systems,
        and is a good guess even for more assymetric systems.
      
        [ People hacking systems that have assymetries that break this
          assumption (e.g. different CPU speeds) should experiment a bit with
          the cpu_distance() function. Adding a ->migration_distance factor to
          the domain structure would be one possible solution - but lets first
          see the problem systems, if they exist at all. Lets not overdesign. ]
      
      Another problem was that only a single cache-size was used for measuring
      the cost of migration, and most architectures didnt set that variable
      up. Furthermore, a single cache-size does not fit NUMA hierarchies with
      L3 caches and does not fit HT setups, where different CPUs will often
      have different 'effective cache sizes'. To solve this problem:
      
      - Instead of relying on a single cache-size provided by the platform and
        sticking to it, the code now auto-detects the 'effective migration
        cost' between two measured CPUs, via iterating through a wide range of
        cachesizes. The code searches for the maximum migration cost, which
        occurs when the working set of the test-workload falls just below the
        'effective cache size'. I.e. real-life optimized search is done for
        the maximum migration cost, between two real CPUs.
      
        This, amongst other things, has the positive effect hat if e.g. two
        CPUs share a L2/L3 cache, a different (and accurate) migration cost
        will be found than between two CPUs on the same system that dont share
        any caches.
      
      (The reliable measurement of migration costs is tricky - see the source
      for details.)
      
      Furthermore i've added various boot-time options to override/tune
      migration behavior.
      
      Firstly, there's a blanket override for autodetection:
      
      	migration_cost=1000,2000,3000
      
      will override the depth 0/1/2 values with 1msec/2msec/3msec values.
      
      Secondly, there's a global factor that can be used to increase (or
      decrease) the autodetected values:
      
      	migration_factor=120
      
      will increase the autodetected values by 20%. This option is useful to
      tune things in a workload-dependent way - e.g. if a workload is
      cache-insensitive then CPU utilization can be maximized by specifying
      migration_factor=0.
      
      I've tested the autodetection code quite extensively on x86, on 3
      P3/Xeon/2MB, and the autodetected values look pretty good:
      
      Dual Celeron (128K L2 cache):
      
       ---------------------
       migration cost matrix (max_cache_size: 131072, cpu: 467 MHz):
       ---------------------
                 [00]    [01]
       [00]:     -     1.7(1)
       [01]:   1.7(1)    -
       ---------------------
       cacheflush times [2]: 0.0 (0) 1.7 (1784008)
       ---------------------
      
      Here the slow memory subsystem dominates system performance, and even
      though caches are small, the migration cost is 1.7 msecs.
      
      Dual HT P4 (512K L2 cache):
      
       ---------------------
       migration cost matrix (max_cache_size: 524288, cpu: 2379 MHz):
       ---------------------
                 [00]    [01]    [02]    [03]
       [00]:     -     0.4(1)  0.0(0)  0.4(1)
       [01]:   0.4(1)    -     0.4(1)  0.0(0)
       [02]:   0.0(0)  0.4(1)    -     0.4(1)
       [03]:   0.4(1)  0.0(0)  0.4(1)    -
       ---------------------
       cacheflush times [2]: 0.0 (33900) 0.4 (448514)
       ---------------------
      
      Here it can be seen that there is no migration cost between two HT
      siblings (CPU#0/2 and CPU#1/3 are separate physical CPUs). A fast memory
      system makes inter-physical-CPU migration pretty cheap: 0.4 msecs.
      
      8-way P3/Xeon [2MB L2 cache]:
      
       ---------------------
       migration cost matrix (max_cache_size: 2097152, cpu: 700 MHz):
       ---------------------
                 [00]    [01]    [02]    [03]    [04]    [05]    [06]    [07]
       [00]:     -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)
       [01]:  19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)
       [02]:  19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)
       [03]:  19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1)
       [04]:  19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1)
       [05]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1)
       [06]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1)
       [07]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -
       ---------------------
       cacheflush times [2]: 0.0 (0) 19.2 (19281756)
       ---------------------
      
      This one has huge caches and a relatively slow memory subsystem - so the
      migration cost is 19 msecs.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Signed-off-by: NKen Chen <kenneth.w.chen@intel.com>
      Cc: <wilder@us.ibm.com>
      Signed-off-by: NJohn Hawkes <hawkes@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      198e2f18
    • I
      [PATCH] sched: add cacheflush() asm · 4dc7a0bb
      Ingo Molnar 提交于
      Add per-arch sched_cacheflush() which is a write-back cacheflush used by
      the migration-cost calibration code at bootup time.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4dc7a0bb
  2. 12 1月, 2006 8 次提交
  3. 11 1月, 2006 11 次提交
  4. 10 1月, 2006 10 次提交
  5. 09 1月, 2006 6 次提交
    • A
      [PATCH] ppc64: Fix oprofile when compiled as a module · 32a33994
      Anton Blanchard 提交于
      My recent changes to oprofile broke it when built as a module. Fix it by
      using an enum instead of a function pointer. This way we still retain
      the oprofile configuration in the cputable.
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      32a33994
    • B
      [PATCH] 3/5 powerpc: Add platform functions interpreter · 5b9ca526
      Benjamin Herrenschmidt 提交于
      This is the platform function interpreter itself along with the backends
      for UniN/U3/U4, mac-io, GPIOs and i2c. It adds the ability to execute
      those do-platform-* scripts in the device-tree (at least for most
      devices for which a backend is provided). This should replace the clock
      spreading hacks properly. It might also have an impact on all sort of
      machines since some of the scripts marked "at init" will now be executed
      on boot (or some other on sleep/wakeup), those will possibly do things
      that the kernel didn't do at all, like setting some values into some i2c
      devices (changing thermal sensor calibration or conversion rate) etc...
      Thus regression testing is MUCH welcome. Also loook for errors in dmesg.
      That's also why I've left rather verbose debugging enabled in this
      version of the patch.
      
      (I do expect some Windtunnel G4s to show some errors as they have an i2c
      clock chip on the PMU bus that uses some primitives that the i2c backend
      doesn't implement yet. I really need users that have one of those
      machine to come back to me so we can get that done right, though the
      errors themselves should be harmless, I suspect the machine might not
      run at full speed).
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      5b9ca526
    • B
      [PATCH] 2/5 powerpc: Rework PowerMac i2c part 2 · a28d3af2
      Benjamin Herrenschmidt 提交于
      This is the continuation of the previous patch. This one removes the old
      PowerMac i2c drivers (i2c-keywest and i2c-pmac-smu) and replaces them
      both with a single stub driver that uses the new PowerMac low i2c layer.
      
      Now that i2c-keywest is gone, the low-i2c code is extended to support
      interrupt driver transfers. All i2c busses now appear as platform
      devices. Compatibility with existing drivers should be maintained as the
      i2c bus names have been kept identical, except for the SMU bus but in
      that later case, all users has been fixed.
      
      With that patch added, matching a device node to an i2c_adapter becomes
      trivial.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a28d3af2
    • B
      [PATCH] 1/5 powerpc: Rework PowerMac i2c part 1 · 730745a5
      Benjamin Herrenschmidt 提交于
      This is the first part of a rework of the PowerMac i2c code. It
      completely reworks the "low_i2c" layer. It is now more flexible,
      supports KeyWest, SMU and PMU i2c busses, and provides functions to
      match device nodes to i2c busses and adapters.
      
      This patch also extends & fix some bugs in the SMU driver related to i2c
      support and removes the clock spreading hacks from the pmac feature code
      rather than adapting them to the new API since they'll be replaced by
      the platform function code completely in patch 3/5
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      730745a5
    • A
      [PATCH] spufs: set irq affinity for running threads · 2fb9d206
      Arnd Bergmann 提交于
      For far, all SPU triggered interrupts always end up on
      the first SMT thread, which is a bad solution.
      
      This patch implements setting the affinity to the
      CPU that was running last when entering execution on
      an SPU. This should result in a significant reduction
      in IPI calls and better cache locality for SPE thread
      specific data.
      Signed-off-by: NArnd Bergmann <arndb@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      2fb9d206
    • A
      [PATCH] spufs: fix allocation on 64k pages · aeb01377
      Arnd Bergmann 提交于
      The size of the local store is architecture defined
      and independent from the page size, so it should
      not be defined in terms of pages in the first place.
      
      This mistake broke a few places when building for
      64kb pages.
      Signed-off-by: NArnd Bergmann <arndb@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      aeb01377