1. 22 6月, 2005 4 次提交
    • B
      [PATCH] ppc32: Kill embedded system.map, use kallsyms · 6879dc13
      Benjamin Herrenschmidt 提交于
      This patch kills the whole embedded System.map mecanism and the
      bootloader-passed System.map that was used to provide symbol resolution in
      xmon.  Instead, xmon now uses kallsyms like ppc64 does.
      
      No hurry getting that in Linus tree, let it be tested in -mm for a while
      first and make sure it doesn't break various embedded configs.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6879dc13
    • W
      [PATCH] Avoiding mmap fragmentation · 1363c3cd
      Wolfgang Wander 提交于
      Ingo recently introduced a great speedup for allocating new mmaps using the
      free_area_cache pointer which boosts the specweb SSL benchmark by 4-5% and
      causes huge performance increases in thread creation.
      
      The downside of this patch is that it does lead to fragmentation in the
      mmap-ed areas (visible via /proc/self/maps), such that some applications
      that work fine under 2.4 kernels quickly run out of memory on any 2.6
      kernel.
      
      The problem is twofold:
      
        1) the free_area_cache is used to continue a search for memory where
           the last search ended.  Before the change new areas were always
           searched from the base address on.
      
           So now new small areas are cluttering holes of all sizes
           throughout the whole mmap-able region whereas before small holes
           tended to close holes near the base leaving holes far from the base
           large and available for larger requests.
      
        2) the free_area_cache also is set to the location of the last
           munmap-ed area so in scenarios where we allocate e.g.  five regions of
           1K each, then free regions 4 2 3 in this order the next request for 1K
           will be placed in the position of the old region 3, whereas before we
           appended it to the still active region 1, placing it at the location
           of the old region 2.  Before we had 1 free region of 2K, now we only
           get two free regions of 1K -> fragmentation.
      
      The patch addresses thes issues by introducing yet another cache descriptor
      cached_hole_size that contains the largest known hole size below the
      current free_area_cache.  If a new request comes in the size is compared
      against the cached_hole_size and if the request can be filled with a hole
      below free_area_cache the search is started from the base instead.
      
      The results look promising: Whereas 2.6.12-rc4 fragments quickly and my
      (earlier posted) leakme.c test program terminates after 50000+ iterations
      with 96 distinct and fragmented maps in /proc/self/maps it performs nicely
      (as expected) with thread creation, Ingo's test_str02 with 20000 threads
      requires 0.7s system time.
      
      Taking out Ingo's patch (un-patch available per request) by basically
      deleting all mentions of free_area_cache from the kernel and starting the
      search for new memory always at the respective bases we observe: leakme
      terminates successfully with 11 distinctive hardly fragmented areas in
      /proc/self/maps but thread creating is gringdingly slow: 30+s(!) system
      time for Ingo's test_str02 with 20000 threads.
      
      Now - drumroll ;-) the appended patch works fine with leakme: it ends with
      only 7 distinct areas in /proc/self/maps and also thread creation seems
      sufficiently fast with 0.71s for 20000 threads.
      Signed-off-by: NWolfgang Wander <wwc@rentec.com>
      Credit-to: "Richard Purdie" <rpurdie@rpsys.net>
      Signed-off-by: NKen Chen <kenneth.w.chen@intel.com>
      Acked-by: Ingo Molnar <mingo@elte.hu> (partly)
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1363c3cd
    • D
      [PATCH] Hugepage consolidation · 63551ae0
      David Gibson 提交于
      A lot of the code in arch/*/mm/hugetlbpage.c is quite similar.  This patch
      attempts to consolidate a lot of the code across the arch's, putting the
      combined version in mm/hugetlb.c.  There are a couple of uglyish hacks in
      order to covert all the hugepage archs, but the result is a very large
      reduction in the total amount of code.  It also means things like hugepage
      lazy allocation could be implemented in one place, instead of six.
      
      Tested, at least a little, on ppc64, i386 and x86_64.
      
      Notes:
      	- this patch changes the meaning of set_huge_pte() to be more
      	  analagous to set_pte()
      	- does SH4 need s special huge_ptep_get_and_clear()??
      Acked-by: NWilliam Lee Irwin <wli@holomorphy.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      63551ae0
    • I
      [PATCH] smp_processor_id() cleanup · 39c715b7
      Ingo Molnar 提交于
      This patch implements a number of smp_processor_id() cleanup ideas that
      Arjan van de Ven and I came up with.
      
      The previous __smp_processor_id/_smp_processor_id/smp_processor_id API
      spaghetti was hard to follow both on the implementational and on the
      usage side.
      
      Some of the complexity arose from picking wrong names, some of the
      complexity comes from the fact that not all architectures defined
      __smp_processor_id.
      
      In the new code, there are two externally visible symbols:
      
       - smp_processor_id(): debug variant.
      
       - raw_smp_processor_id(): nondebug variant. Replaces all existing
         uses of _smp_processor_id() and __smp_processor_id(). Defined
         by every SMP architecture in include/asm-*/smp.h.
      
      There is one new internal symbol, dependent on DEBUG_PREEMPT:
      
       - debug_smp_processor_id(): internal debug variant, mapped to
                                   smp_processor_id().
      
      Also, i moved debug_smp_processor_id() from lib/kernel_lock.c into a new
      lib/smp_processor_id.c file.  All related comments got updated and/or
      clarified.
      
      I have build/boot tested the following 8 .config combinations on x86:
      
       {SMP,UP} x {PREEMPT,!PREEMPT} x {DEBUG_PREEMPT,!DEBUG_PREEMPT}
      
      I have also build/boot tested x64 on UP/PREEMPT/DEBUG_PREEMPT.  (Other
      architectures are untested, but should work just fine.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NArjan van de Ven <arjan@infradead.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      39c715b7
  2. 21 6月, 2005 1 次提交
  3. 20 6月, 2005 3 次提交
  4. 15 6月, 2005 2 次提交
  5. 09 6月, 2005 5 次提交
  6. 04 6月, 2005 1 次提交
  7. 03 6月, 2005 2 次提交
  8. 02 6月, 2005 1 次提交
  9. 01 6月, 2005 3 次提交
  10. 31 5月, 2005 1 次提交
  11. 26 5月, 2005 2 次提交
    • S
      [PATCH] ppc64 iSeries: fix boot time setting · d0e8e291
      Stephen Rothwell 提交于
      For quite a while, there has existed a hypervisor bug on legacy iSeries
      which means that we do not get the boot time set in the kernel.  This
      patch works around that bug.  This was most noticable when the root
      partition needed to be checked at every boot as the kernel thought it
      was some time in 1905 until user mode reset the time correctly.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d0e8e291
    • S
      [PATCH] ppc64: fix initialisation of gettimeofday calculations · 8f80e5c9
      Stephen Rothwell 提交于
      On PPC64, we keep track of when we need to update jiffies (and the
      variables used to calculate the time of day) based on the time base.
      
      If the time base frequence is sufficiently high compared to the
      processor clock frequency, then it is possible for the time of day
      variables to be corrupted at the time of the first decrementer interrupt
      we take.  This became obvious on a legacy iSeries where the time base
      frequency is the same as the processor clock.
      
      This one line patch fixes the initialisation so that the time of day
      variables and the indicator we use to tell when updates are due are
      better synchronised.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8f80e5c9
  12. 24 5月, 2005 1 次提交
  13. 23 5月, 2005 1 次提交
    • B
      [PATCH] ppc64: Fix booting on latest G5 models · 1263cc67
      Benjamin Herrenschmidt 提交于
      The latest speedbumped Apple G5 models have a "bug" in the Open Firmware
      device tree that lacks the proper interrupt routing information for the
      northbridge i2c controller.  Apple's driver silently falls back into a
      sub-optimal "polled" mode (heh, maybe they didn't even notice the bug
      because of that :), our driver didn't properly check and crashes :(
      
      This patch fixes our driver to not crash, and adds code to the
      prom_init() OF trampoline code that detects the "bug" and adds the
      missing information back for this chipset revision.  This fixes booting
      and thermal control on these models.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1263cc67
  14. 07 5月, 2005 1 次提交
  15. 06 5月, 2005 10 次提交
  16. 04 5月, 2005 1 次提交
    • A
      [PATCH] ISA DMA Kconfig fixes - part 1 · 5cae841b
      Al Viro 提交于
      A bunch of drivers use ISA DMA helpers or their equivalents for
      platforms that have ISA with different DMA controller (a lot of ARM
      boxen).  Currently there is no way to put such dependency in Kconfig -
      CONFIG_ISA is not it (e.g.  it is not set on platforms that have no ISA
      slots, but have on-board devices that pretend to be ISA ones).
      
      New symbol added - ISA_DMA_API.  Set when we have functional
      enable_dma()/set_dma_mode()/etc.  set of helpers.  Next patches in the
      series will add missing dependencies for drivers that need them.
      
      I'm very carefully staying the hell out of the recurring flamefest on
      what exactly CONFIG_ISA would mean in ideal world - added symbol has a
      well-defined meaning and for now I really want to treat it as completely
      independent from the mess around CONFIG_ISA.
      Signed-off-by: NAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      5cae841b
  17. 03 5月, 2005 1 次提交
    • B
      [PATCH] ppc64: fix gcc 4.0 vs CONFIG_ALTIVEC · 52292c9b
      Benjamin Herrenschmidt 提交于
      gcc-4.0 generates altivec code implicitly when -mcpu indicates an
      altivec capable CPU which is not suitable for the kernel.  However, we
      used to set -mcpu=970 when CONFIG_ALTIVEC was set because a gcc-3.x bug
      prevented from using -maltivec along with -mcpu=power4, thus prevented
      building the RAID6 altivec code.
      
      This patch fixes all of this by testing for the gcc version.  If 4.0 or
      later, just normally use -mcpu=power4 and let the RAID6 code add
      -maltivec to the few files it needs to be compiled with altivec support.
      For 3.x, we still use -mcpu=970 to work around the above problem, which
      is fine as 3.x will never implicitly generate altivec code.
      
      The Makefile hackery may not be the most lovely, I welcome anybody more
      skilled than me to improve it.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      52292c9b