1. 30 1月, 2008 1 次提交
    • A
      x86: optimize lock prefix switching to run less frequently · ca74a6f8
      Andi Kleen 提交于
      On VMs implemented using JITs that cache translated code changing the lock
      prefixes is a quite costly operation that forces the JIT to throw away and
      retranslate a lot of code.
      
      Previously a SMP kernel would rewrite the locks once for each CPU which
      is quite unnecessary. This patch changes the code to never switch at boot in
       the normal case (SMP kernel booting with >1 CPU) or only once for SMP kernel
      on UP.
      
      This makes a significant difference in boot up performance on AMD SimNow!
      Also I expect it to be a little faster on native systems too because a smp
      switch does a lot of text_poke()s which each synchronize the pipeline.
      
      v1->v2: Rename max_cpus
      v1->v2: Fix off by one in UP check (Thomas Gleixner)
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      ca74a6f8
  2. 10 11月, 2007 1 次提交
    • I
      KVM: fix !SMP build error · a5fbb6d1
      Ingo Molnar 提交于
      fix a !SMP build error:
      
      drivers/kvm/kvm_main.c: In function 'kvm_flush_remote_tlbs':
      drivers/kvm/kvm_main.c:220: error: implicit declaration of function 'smp_call_function_mask'
      
      (and also avoid unused function warning related to up_smp_call_function()
      not making use of the 'func' parameter.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a5fbb6d1
  3. 18 7月, 2007 1 次提交
  4. 16 7月, 2007 1 次提交
  5. 17 5月, 2007 1 次提交
  6. 10 5月, 2007 1 次提交
  7. 08 12月, 2006 1 次提交
  8. 26 9月, 2006 1 次提交
  9. 01 7月, 2006 1 次提交
    • A
      [PATCH] add smp_setup_processor_id() · 033ab7f8
      Andrew Morton 提交于
      Presently, smp_processor_id() isn't necessarily set up until setup_arch().
      But it's used in boot_cpu_init() and printk() and perhaps in other places,
      prior to setup_arch() being called.
      
      So provide a new smp_setup_processor_id() which is called before anything
      else, wire it up for Voyager (which boots on a CPU other than #0, and broke).
      
      Cc: James Bottomley <James.Bottomley@steeleye.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      033ab7f8
  10. 26 4月, 2006 1 次提交
  11. 27 3月, 2006 1 次提交
  12. 22 3月, 2006 1 次提交
    • A
      [PATCH] on_each_cpu(): disable local interrupts · 78eef01b
      Andrew Morton 提交于
      When on_each_cpu() runs the callback on other CPUs, it runs with local
      interrupts disabled.  So we should run the function with local interrupts
      disabled on this CPU, too.
      
      And do the same for UP, so the callback is run in the same environment on both
      UP and SMP.  (strictly it should do preempt_disable() too, but I think
      local_irq_disable is sufficiently equivalent).
      
      Also uninlines on_each_cpu().  softirq.c was the most appropriate file I could
      find, but it doesn't seem to justify creating a new file.
      
      Oh, and fix up that comment over (under?) x86's smp_call_function().  It
      drives me nuts.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      78eef01b
  13. 08 2月, 2006 1 次提交
  14. 24 11月, 2005 1 次提交
  15. 23 11月, 2005 1 次提交
  16. 29 7月, 2005 1 次提交
    • L
      Revert broken "statement with no effect" warning fix · 2ac6608c
      Linus Torvalds 提交于
      It may shut up gcc, but it also incorrectly changes the semantics of the
      smp_call_function() helpers.
      
      You can fix the warning other ways if you are interested (create another
      inline function that takes no arguments and returns zero), but
      preferably gcc just shouldn't complain about unused return values from
      statement expressions in the first place.
      2ac6608c
  17. 28 7月, 2005 1 次提交
  18. 22 6月, 2005 1 次提交
    • 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
  19. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4