1. 26 6月, 2005 4 次提交
    • L
      [PATCH] cpu state clean after hot remove · e1367daf
      Li Shaohua 提交于
      Clean CPU states in order to reuse smp boot code for CPU hotplug.
      
      Signed-off-by: Li Shaohua<shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e1367daf
    • L
      [PATCH] sep initializing rework · 6fe940d6
      Li Shaohua 提交于
      Make SEP init per-cpu, so it is hotplug safe.
      
      Signed-off-by: Li Shaohua<shaohua.li@intel.com>
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6fe940d6
    • A
      [PATCH] i386: Dont use IPI broadcast when using cpu hotplug. · 67664c8f
      Ashok Raj 提交于
      This patch introduces a startup parameter no_broadcast.  When we enable
      CONFIG_HOTPLUG_CPU, we dont want to use broadcast shortcut as it has ill
      effects on a offline cpu.  If we issue broadcast, the IPI is also delivered
      to offline cpus, or partially up cpu causing stale IPI's to be handled,
      which is a problem and can cause undesirable effects.
      
      Introduces a new startup cmdline option no_ipi_broadcast, that can be
      switched at cmdline if necessary.
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Acked-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      67664c8f
    • Z
      [PATCH] i386 CPU hotplug · f3705136
      Zwane Mwaikambo 提交于
      (The i386 CPU hotplug patch provides infrastructure for some work which Pavel
      is doing as well as for ACPI S3 (suspend-to-RAM) work which Li Shaohua
      <shaohua.li@intel.com> is doing)
      
      The following provides i386 architecture support for safely unregistering and
      registering processors during runtime, updated for the current -mm tree.  In
      order to avoid dumping cpu hotplug code into kernel/irq/* i dropped the
      cpu_online check in do_IRQ() by modifying fixup_irqs().  The difference being
      that on cpu offline, fixup_irqs() is called before we clear the cpu from
      cpu_online_map and a long delay in order to ensure that we never have any
      queued external interrupts on the APICs.  There are additional changes to s390
      and ppc64 to account for this change.
      
      1) Add CONFIG_HOTPLUG_CPU
      2) disable local APIC timer on dead cpus.
      3) Disable preempt around irq balancing to prevent CPUs going down.
      4) Print irq stats for all possible cpus.
      5) Debugging check for interrupts on offline cpus.
      6) Hacky fixup_irqs() to redirect irqs when cpus go off/online.
      7) play_dead() for offline cpus to spin inside.
      8) Handle offline cpus set in flush_tlb_others().
      9) Grab lock earlier in smp_call_function() to prevent CPUs going down.
      10) Implement __cpu_disable() and __cpu_die().
      11) Enable local interrupts in cpu_enable() after fixup_irqs()
      12) Don't fiddle with NMI on dead cpu, but leave intact on other cpus.
      13) Program IRQ affinity whilst cpu is still in cpu_online_map on offline.
      Signed-off-by: NZwane Mwaikambo <zwane@linuxpower.ca>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f3705136
  2. 25 6月, 2005 1 次提交
    • L
      Add "memory" clobbers to the x86 inline asm of strncmp and friends · 793ae774
      Linus Torvalds 提交于
      They don't actually clobber memory, but gcc doesn't even know they
      _read_ memory, so can apparently re-order memory accesses around them.
      
      Which obviously does the wrong thing if the memory access happens to
      change the memory that the compare function is accessing..
      
      Verified to fix a strange boot problem by Jens Axboe.
      793ae774
  3. 24 6月, 2005 14 次提交
  4. 22 6月, 2005 3 次提交
    • 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
    • M
      [PATCH] VM: early zone reclaim · 753ee728
      Martin Hicks 提交于
      This is the core of the (much simplified) early reclaim.  The goal of this
      patch is to reclaim some easily-freed pages from a zone before falling back
      onto another zone.
      
      One of the major uses of this is NUMA machines.  With the default allocator
      behavior the allocator would look for memory in another zone, which might be
      off-node, before trying to reclaim from the current zone.
      
      This adds a zone tuneable to enable early zone reclaim.  It is selected on a
      per-zone basis and is turned on/off via syscall.
      
      Adding some extra throttling on the reclaim was also required (patch
      4/4).  Without the machine would grind to a crawl when doing a "make -j"
      kernel build.  Even with this patch the System Time is higher on
      average, but it seems tolerable.  Here are some numbers for kernbench
      runs on a 2-node, 4cpu, 8Gig RAM Altix in the "make -j" run:
      
      			wall  user   sys   %cpu  ctx sw.  sleeps
      			----  ----   ---   ----   ------  ------
      No patch		1009  1384   847   258   298170   504402
      w/patch, no reclaim     880   1376   667   288   254064   396745
      w/patch & reclaim       1079  1385   926   252   291625   548873
      
      These numbers are the average of 2 runs of 3 "make -j" runs done right
      after system boot.  Run-to-run variability for "make -j" is huge, so
      these numbers aren't terribly useful except to seee that with reclaim
      the benchmark still finishes in a reasonable amount of time.
      
      I also looked at the NUMA hit/miss stats for the "make -j" runs and the
      reclaim doesn't make any difference when the machine is thrashing away.
      
      Doing a "make -j8" on a single node that is filled with page cache pages
      takes 700 seconds with reclaim turned on and 735 seconds without reclaim
      (due to remote memory accesses).
      
      The simple zone_reclaim syscall program is at
      http://www.bork.org/~mort/sgi/zone_reclaim.cSigned-off-by: NMartin Hicks <mort@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      753ee728
    • 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
  5. 08 6月, 2005 2 次提交
  6. 01 6月, 2005 1 次提交
  7. 27 5月, 2005 1 次提交
    • R
      [PATCH] i386: fix prevent_tail_call · d68b8622
      Roland McGrath 提交于
      We fixed this bug before, but it didn't take.  It may have been the case
      that the problem was first noticed to occur in a CONFIG_REGPARM compile.
      But it's not regparm functions that need not to make tail calls, it's
      asmlinkage functions called with a user pt_regs frame on the stack
      supplying their arguments.  prevent_tail_call probably doesn't do anything
      at all in regparm functions (your argument registers are going to be
      clobbered, period).  It was a braino to conditionalize that definition in
      the first place.
      Signed-off-by: NRoland McGrath <roland@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d68b8622
  8. 06 5月, 2005 2 次提交
  9. 04 5月, 2005 1 次提交
    • A
      [PATCH] asm/signal.h unification · b1ecb4c3
      Al Viro 提交于
      New file - asm-generic/signal.h.  Contains declarations of
      __sighandler_t, __sigrestore_t, SIG_DFL, SIG_IGN, SIG_ERR and default
      definitions of SIG_BLOCK, SIG_UNBLOCK and SIG_SETMASK.
      
      asm-*/signal.h switched to including it.  The only exception is
      asm-parisc/signal.h that wants its own declaration of __sighandler_t;
      that one is left as-is.
      
      asm-ppc64/signal.h required one more thing - unlike everybody else it
      used __sigrestorer_t instead of usual __sigrestore_t.  PPC64 switched to
      common spelling.
      Signed-off-by: NAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b1ecb4c3
  10. 01 5月, 2005 9 次提交
    • J
      [PATCH] misc verify_area cleanups · e49332bd
      Jesper Juhl 提交于
      There were still a few comments left refering to verify_area, and two
      functions, verify_area_skas & verify_area_tt that just wrap corresponding
      access_ok_skas & access_ok_tt functions, just like verify_area does for
      access_ok - deprecate those.
      
      There was also a few places that still used verify_area in commented-out
      code, fix those up to use access_ok.
      
      After applying this one there should not be anything left but finally
      removing verify_area completely, which will happen after a kernel release
      or two.
      Signed-off-by: NJesper Juhl <juhl-lkml@dif.dk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e49332bd
    • S
      [PATCH] move SA_xxx defines to linux/signal.h · 7f261b5f
      Stas Sergeev 提交于
      The attached patch moves the IRQ-related SA_xxx flags (namely, SA_PROBE,
      SA_SAMPLE_RANDOM and SA_SHIRQ) from all the arch-specific headers to
      linux/signal.h.  This looks like a left-over after the irq-handling code
      was consolidated.  The code was moved to kernel/irq/*, but the flags are
      still left per-arch.
      
      Right now, adding a new IRQ flag to the arch-specific header, like this
      patch does:
      http://cvs.sourceforge.net/viewcvs.py/*checkout*/alsa/alsa-driver/utils/patches/pcsp-kernel-2.6.10-03.diff?rev=1.1
      no longer works, it breaks the compilation for all other arches, unless you
      add that flag to all the other arch-specific headers too.  So I think such
      a clean-up makes sense.
      Signed-off-by: NStas Sergeev <stsp@aknet.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      7f261b5f
    • M
      [PATCH] remove all kernel BUGs · c8538a7a
      Matt Mackall 提交于
      This patch eliminates all kernel BUGs, trims about 35k off the typical
      kernel, and makes the system slightly faster.
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c8538a7a
    • V
      [PATCH] Increase number of e820 entries hard limit from 32 to 128 · f9ba7053
      Venkatesh Pallipadi 提交于
      The specifications that talk about E820 map doesn't have an upper limit on
      the number of e820 entries.  But, today's kernel has a hard limit of 32.
      With increase in memory size, we are seeing the number of E820 entries
      reaching close to 32.  Patch below bumps the number upto 128.
      
      The patch changes the location of EDDBUF in zero-page (as it comes after E820).
      As, EDDBUF is not used by boot loaders, this patch should not have any effect
      on bootloader-setup code interface.
      
      Patch covers both i386 and x86-64.
      
      Tested on:
      * grub booting bzImage
      * lilo booting bzImage with EDID info enabled
      * pxeboot of bzImage
      
      Side-effect:
      bss increases by ~ 2K and init.data increases by ~7.5K
      on all systems, due to increase in size of static arrays.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f9ba7053
    • J
      [PATCH] i386: fix hpet for systems that don't support legacy replacement · 35492df5
      john stultz 提交于
      Currently the i386 HPET code assumes the entire HPET implementation from
      the spec is present.  This breaks on boxes that do not implement the
      optional legacy timer replacement functionality portion of the spec.
      
      This patch, which is very similar to my x86-64 patch for the same issue,
      fixes the problem allowing i386 systems that cannot use the HPET for the
      timer interrupt and RTC to still use the HPET as a time source.  I've
      tested this patch on a system systems without HPET, with HPET but without
      legacy timer replacement, as well as HPET with legacy timer replacement.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      35492df5
    • H
      [PATCH] CPUID bug and inconsistency fix · 5b7abc6f
      H. Peter Anvin 提交于
      The recent support for K8 multicore was misported from x86-64 to i386, due
      to an unnecessary inconsistency between the CPUID code.  Sure, there is are
      no x86-64 VIA chips yet, but it should happen eventually.
      
      This patch fixes the i386 bug as well as makes x86-64 match i386 in the
      handing of the CPUID array.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      5b7abc6f
    • J
      [PATCH] check nmi watchdog is broken · 67701ae9
      Jack F Vogel 提交于
      A bug against an xSeries system showed up recently noting that the
      check_nmi_watchdog() test was failing.
      
      I have been investigating it and discovered in both i386 and x86_64 the
      recent change to the routine to use the cpu_callin_map has uncovered a
      problem.  Prior to that change, on an SMP box, the test was trivally
      passing because all cpu's were found to not yet be online, but now with the
      callin_map they are discovered, it goes on to test the counter and they
      have not yet begun to increment, so it announces a CPU is stuck and bails
      out.
      
      On all the systems I have access to test, the announcement of failure is
      also bougs...  by the time you can login and check /proc/interrupts, the
      NMI count is happily incrementing on all CPUs.  Its just that the test is
      being done too early.
      
      I have tried moving the call to the test around a bit, and it was always
      too early.  I finally hit on this proposed solution, it delays the routine
      via a late_initcall(), seems like the right solution to me.
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Cc: Andi Kleen <ak@muc.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      67701ae9
    • H
      [PATCH] i386/x86_64 segment register access update · fd51f666
      H. J. Lu 提交于
      The new i386/x86_64 assemblers no longer accept instructions for moving
      between a segment register and a 32bit memory location, i.e.,
      
              movl (%eax),%ds
              movl %ds,(%eax)
      
      To generate instructions for moving between a segment register and a
      16bit memory location without the 16bit operand size prefix, 0x66,
      
              mov (%eax),%ds
              mov %ds,(%eax)
      
      should be used. It will work with both new and old assemblers. The
      assembler starting from 2.16.90.0.1 will also support
      
              movw (%eax),%ds
              movw %ds,(%eax)
      
      without the 0x66 prefix. I am enclosing patches for 2.4 and 2.6 kernels
      here. The resulting kernel binaries should be unchanged as before, with
      old and new assemblers, if gcc never generates memory access for
      
                     unsigned gsindex;
                     asm volatile("movl %%gs,%0" : "=g" (gsindex));
      
      If gcc does generate memory access for the code above, the upper bits
      in gsindex are undefined and the new assembler doesn't allow it.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      fd51f666
    • D
      [PATCH] fix i386 memcpy · d5b63d78
      Denis Vlasenko 提交于
      This patch shortens non-constant memcpy() by two bytes and fixes spurious
      out-of-line constant memcpy().
      
      # size vmlinux.org vmlinux
         text    data     bss     dec     hex filename
      3954591 1553426  236544 5744561  57a7b1 vmlinux.org
      3952615 1553426  236544 5742585  579ff9 vmlinux
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d5b63d78
  11. 20 4月, 2005 1 次提交
  12. 17 4月, 2005 1 次提交