1. 16 Feb, 2007 2 commits
  2. 07 Dec, 2006 1 commit
    • Zachary Amsden's avatar
      [PATCH] softirq: remove BUG_ONs which can incorrectly trigger · 3908fd2e
      Zachary Amsden authored
      
      It is possible to have tasklets get scheduled before softirqd has had a chance
      to spawn on all CPUs.  This is totally harmless; after success during action
      CPU_UP_PREPARE, action CPU_ONLINE will be called, which immediately wakes
      softirqd on the appropriate CPU to process the already pending tasklets.  So
      there is no danger of having a missed wakeup for any tasklets that were
      already pending.
      
      In particular, i386 is affected by this during startup, and is visible when
      using a very large initrd; during the time it takes for the initrd to be
      decompressed, a timer IRQ can come in and schedule RCU callbacks.  It is also
      possible that resending of a hardware IRQ via a softirq triggers the same bug.
      
      Because of different timing conditions, this shows up in all emulators and
      virtual machines tested, including Xen, VMware, Virtual PC, and Qemu.  It is
      also possible to trigger on native hardware with a large enough initrd,
      although I don't have a reliable case demonstrating that.
      Signed-off-by: default avatarZachary Amsden <zach@vmware.com>
      Cc: <caglar@pardus.org.tr>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3908fd2e
  3. 29 Sep, 2006 1 commit
  4. 31 Jul, 2006 2 commits
    • Tim Chen's avatar
      [PATCH] Reducing local_bh_enable/disable overhead in irqtrace · 3c829c36
      Tim Chen authored
      The recent changes from irqtrace feature has added overheads to
      local_bh_disable and local_bh_enable that reduces UDP performance across
      x86_64 and IA64, even though IA64 does not support the irqtrace feature.
      Patch in question is
      
      [PATCH]lockdep: irqtrace subsystem, core
      http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=c
      ommit;h=de30a2b3
      
      
      
      Prior to this patch, local_bh_disable was a short macro.  Now it is a
      function which calls __local_bh_disable with added irq flags save and
      restore.  The irq flags save and restore were also added to
      local_bh_enable, probably for injecting the trace irqs code.
      
      This overhead is on the generic code path across all architectures.  On a
      IA_64 test machine (Itanium-2 1.6 GHz) running a benchmark like netperf's
      UDP streaming test, the added overhead results in a drop of 3% in
      throughput, as udp_sendmsg calls the local_bh_enable/disable several times.
      
      Other workloads that have heavy usages of local_bh_enable/disable could
      also be affected.  The patch ideally should not have affected IA-64
      performance as it does not have IRQ tracing support.  A significant portion
      of the overhead is in the added irq flags save and restore, which I think
      is not needed if IRQ tracing is unused.  A suggested patch is attached
      below that recovers the lost performance.  However, the "ifdef"s in the
      patch are a bit ugly.
      Signed-off-by: default avatarTim Chen <tim.c.chen@intel.com>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3c829c36
    • Chandra Seetharaman's avatar
      [PATCH] cpu hotplug: replace __devinit* with __cpuinit* for cpu notifications · 8c78f307
      Chandra Seetharaman authored
      
      Few of the callback functions and notifier blocks that are associated with cpu
      notifications incorrectly have __devinit and __devinitdata.  They should be
      __cpuinit and __cpuinitdata instead.
      
      It makes no functional difference but wastes text area when CONFIG_HOTPLUG is
      enabled and CONFIG_HOTPLUG_CPU is not.
      
      This patch fixes all those instances.
      Signed-off-by: default avatarChandra Seetharaman <sekharan@us.ibm.com>
      Cc: Ashok Raj <ashok.raj@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8c78f307
  5. 15 Jul, 2006 1 commit
  6. 10 Jul, 2006 1 commit
  7. 03 Jul, 2006 2 commits
  8. 27 Jun, 2006 2 commits
  9. 25 Jun, 2006 1 commit
  10. 26 Apr, 2006 2 commits
  11. 22 Mar, 2006 1 commit
    • Andrew Morton's avatar
      [PATCH] on_each_cpu(): disable local interrupts · 78eef01b
      Andrew Morton authored
      
      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: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      78eef01b
  12. 07 Nov, 2005 1 commit
    • Heiko Carstens's avatar
      [PATCH] cpu hoptlug: avoid usage of smp_processor_id() in preemptible code · a4c4af7c
      Heiko Carstens authored
      
      Replace smp_processor_id() with any_online_cpu(cpu_online_map) in order to
      avoid lots of "BUG: using smp_processor_id() in preemptible [00000001]
      code:..." messages in case taking a cpu online fails.
      
      All the traces start at the last notifier_call_chain(...) in kernel/cpu.c.
      Since we hold the cpu_control semaphore it shouldn't be any problem to access
      cpu_online_map.
      
      The reason why cpu_up failed is simply that the cpu that was supposed to be
      taken online wasn't even there.  That is because on s390 we never know when a
      new cpu comes and therefore cpu_possible_map consists of only ones and doesn't
      reflect reality.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a4c4af7c
  13. 12 Sep, 2005 1 commit
  14. 30 Jul, 2005 1 commit
  15. 29 Jul, 2005 1 commit
  16. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      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