1. 18 10月, 2007 1 次提交
    • J
      x86: expand /proc/interrupts to include missing vectors, v2 · 38e760a1
      Joe Korty 提交于
      Add missing IRQs and IRQ descriptions to /proc/interrupts.
      
      /proc/interrupts is most useful when it displays every IRQ vector in use by
      the system, not just those somebody thought would be interesting.
      
      This patch inserts the following vector displays to the i386 and x86_64
      platforms, as appropriate:
      
      	rescheduling interrupts
      	TLB flush interrupts
      	function call interrupts
      	thermal event interrupts
      	threshold interrupts
      	spurious interrupts
      
      A threshold interrupt occurs when ECC memory correction is occuring at too
      high a frequency.  Thresholds are used by the ECC hardware as occasional
      ECC failures are part of normal operation, but long sequences of ECC
      failures usually indicate a memory chip that is about to fail.
      
      Thermal event interrupts occur when a temperature threshold has been
      exceeded for some CPU chip.  IIRC, a thermal interrupt is also generated
      when the temperature drops back to a normal level.
      
      A spurious interrupt is an interrupt that was raised then lowered by the
      device before it could be fully processed by the APIC.  Hence the apic sees
      the interrupt but does not know what device it came from.  For this case
      the APIC hardware will assume a vector of 0xff.
      
      Rescheduling, call, and TLB flush interrupts are sent from one CPU to
      another per the needs of the OS.  Typically, their statistics would be used
      to discover if an interrupt flood of the given type has been occuring.
      
      AK: merged v2 and v4 which had some more tweaks
      AK: replace Local interrupts with Local timer interrupts
      AK: Fixed description of interrupt types.
      
      [ tglx: arch/x86 adaptation ]
      [ mingo: small cleanup ]
      Signed-off-by: NJoe Korty <joe.korty@ccur.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Cc: Tim Hockin <thockin@hockin.org>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      38e760a1
  2. 11 10月, 2007 2 次提交
  3. 22 9月, 2007 1 次提交
  4. 22 7月, 2007 2 次提交
  5. 16 7月, 2007 1 次提交
  6. 09 5月, 2007 1 次提交
  7. 07 5月, 2007 1 次提交
    • L
      Revert "[PATCH] x86: __pa and __pa_symbol address space separation" · e3ebadd9
      Linus Torvalds 提交于
      This was broken.  It adds complexity, for no good reason.  Rather than
      separate __pa() and __pa_symbol(), we should deprecate __pa_symbol(),
      and preferably __pa() too - and just use "virt_to_phys()" instead, which
      is more readable and has nicer semantics.
      
      However, right now, just undo the separation, and make __pa_symbol() be
      the exact same as __pa().  That fixes the bugs this patch introduced,
      and we can do the fairly obvious cleanups later.
      
      Do the new __phys_addr() function (which is now the actual workhorse for
      the unified __pa()/__pa_symbol()) as a real external function, that way
      all the potential issues with compile/link-time optimizations of
      constant symbol addresses go away, and we can also, if we choose to, add
      more sanity-checking of the argument.
      
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Vivek Goyal <vgoyal@in.ibm.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e3ebadd9
  8. 03 5月, 2007 2 次提交
    • V
      [PATCH] x86: __pa and __pa_symbol address space separation · 0dbf7028
      Vivek Goyal 提交于
      Currently __pa_symbol is for use with symbols in the kernel address
      map and __pa is for use with pointers into the physical memory map.
      But the code is implemented so you can usually interchange the two.
      
      __pa which is much more common can be implemented much more cheaply
      if it is it doesn't have to worry about any other kernel address
      spaces.  This is especially true with a relocatable kernel as
      __pa_symbol needs to peform an extra variable read to resolve
      the address.
      
      There is a third macro that is added for the vsyscall data
      __pa_vsymbol for finding the physical addesses of vsyscall pages.
      
      Most of this patch is simply sorting through the references to
      __pa or __pa_symbol and using the proper one.  A little of
      it is continuing to use a physical address when we have it
      instead of recalculating it several times.
      
      swapper_pgd is now NULL.  leave_mm now uses init_mm.pgd
      and init_mm.pgd is initialized at boot (instead of compile time)
      to the physmem virtual mapping of init_level4_pgd.  The
      physical address changed.
      
      Except for the for EMPTY_ZERO page all of the remaining references
      to __pa_symbol appear to be during kernel initialization.  So this
      should reduce the cost of __pa in the common case, even on a relocated
      kernel.
      
      As this is technically a semantic change we need to be on the lookout
      for anything I missed.  But it works for me (tm).
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NVivek Goyal <vgoyal@in.ibm.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      0dbf7028
    • J
      [PATCH] x86: consolidate smp_send_stop() · 9964cf7d
      Jan Beulich 提交于
      Synchronize i386's smp_send_stop() with x86-64's in only try-locking
      the call lock to prevent deadlocks when called from panic().
      In both version, disable interrupts before clearing the CPU off the
      online map to eliminate races with IRQ handlers inspecting this map.
      Also in both versions, save/restore interrupts rather than disabling/
      enabling them.
      On x86-64, eliminate one function used here by folding it into its
      single caller, convert to static, and rename for consistency with i386
      (lkcd may like this).
      Signed-off-by: NJan Beulich <jbeulich@novell.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      9964cf7d
  9. 08 12月, 2006 1 次提交
  10. 07 12月, 2006 1 次提交
  11. 14 11月, 2006 1 次提交
    • A
      [PATCH] x86-64: Fix vgetcpu when CONFIG_HOTPLUG_CPU is disabled · 8c131af1
      Andi Kleen 提交于
      The vgetcpu per CPU initialization previously relied on CPU hotplug
      events for all CPUs to initialize the per CPU state. That only
      worked only on kernels with CONFIG_HOTPLUG_CPU enabled.  On the
      others some CPUs didn't get their state initialized properly
      and vgetcpu wouldn't work.
      
      Change the initialization sequence to instead run in a normal
      initcall (which runs after the normal CPU bootup) and initialize
      all running CPUs there. Later hotplug CPUs are still handled
      with an hotplug notifier.
      
      This actually simplifies the code somewhat.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      8c131af1
  12. 26 9月, 2006 2 次提交
    • A
      [PATCH] Remove safe_smp_processor_id() · 151f8cc1
      Andi Kleen 提交于
      And replace all users with ordinary smp_processor_id.  The function
      was originally added to get some basic oops information out even
      if the GS register was corrupted. However that didn't
      work for some anymore because printk is needed to print the oops
      and it uses smp_processor_id() already. Also GS register corruptions
      are not particularly common anymore.
      
      This also helps the Xen port which would otherwise need to
      do this in a special way because it can't access the local APIC.
      
      Cc: Chris Wright <chrisw@sous-sol.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      151f8cc1
    • A
      [PATCH] Don't access the APIC in safe_smp_processor_id when it is not mapped yet · b7f5e3c7
      Andi Kleen 提交于
      Lockdep can call the dwarf2 unwinder early, and the dwarf2 code
      uses safe_smp_processor_id which tries to access the local APIC page.
      But that doesn't work before the APIC code has set up its fixmap.
      
      Check for this case and always return boot cpu then.
      
      Cc: jbeulich@novell.com
      Cc: mingo@elte.hu
      Signed-off-by: NAndi Kleen <ak@suse.de>
      b7f5e3c7
  13. 06 8月, 2006 1 次提交
  14. 28 6月, 2006 1 次提交
  15. 27 6月, 2006 4 次提交
  16. 26 3月, 2006 1 次提交
  17. 12 1月, 2006 2 次提交
    • A
      [PATCH] x86_64: Remove useless KDB vector · 915f34e2
      Andi Kleen 提交于
      It was set as an NMI, but the NMI bit always forces an interrupt
      to end up at vector 2. So it was never used. Remove.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      915f34e2
    • A
      [PATCH] x86_64: Add idle notifiers · 95833c83
      Andi Kleen 提交于
      This adds a new notifier chain that is called with IDLE_START
      when a CPU goes idle and IDLE_END when it goes out of idle.
      The context can be idle thread or interrupt context.
      
      Since we cannot rely on MONITOR/MWAIT existing the idle
      end check currently has to be done in all interrupt
      handlers.
      
      They were originally inspired by the similar s390 implementation.
      
      They have a variety of applications:
      - They will be needed for CONFIG_NO_IDLE_HZ
      - They can be used for oprofile to fix up the missing time
      in idle when performance counters don't tick.
      - They can be used for better C state management in ACPI
      - They could be used for microstate accounting.
      
      This is just infrastructure so far, no users.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      95833c83
  18. 15 11月, 2005 2 次提交
  19. 13 9月, 2005 3 次提交
  20. 30 7月, 2005 1 次提交
    • E
      [PATCH] Fix sync_tsc hang · 3d483f47
      Eric W. Biederman 提交于
      sync_tsc was using smp_call_function to ask the boot processor to report
      it's tsc value.  smp_call_function performs an IPI_send_allbutself which is
      a broadcast ipi.  There is a window during processor startup during which
      the target cpu has started and before it has initialized it's interrupt
      vectors so it can properly process an interrupt.  Receveing an interrupt
      during that window will triple fault the cpu and do other nasty things.
      
      Why cli does not protect us from that is beyond me.
      
      The simple fix is to match ia64 and provide a smp_call_function_single.
      Which avoids the broadcast and is more efficient.
      
      This certainly fixes the problem of getting stuck on boot which was
      very easy to trigger on my SMP Hyperthreaded Xeon, and I think
      it fixes it for the right reasons.
      
      Minor changes by AK
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3d483f47
  21. 29 7月, 2005 1 次提交
  22. 26 6月, 2005 1 次提交
  23. 17 4月, 2005 2 次提交
    • A
      [PATCH] x86_64: Switch SMP bootup over to new CPU hotplug state machine · a8ab26fe
      Andi Kleen 提交于
      This will allow hotplug CPU in the future and in general cleans up a lot of
      crufty code.  It also should plug some races that the old hackish way
      introduces.  Remove one old race workaround in NMI watchdog setup that is not
      needed anymore.
      
      I removed the old total sum of bogomips reporting code.  The brag value of
      BogoMips has been greatly devalued in the last years on the open market.
      
      Real CPU hotplug will need some more work, but the infrastructure for it is
      there now.
      
      One drawback: the new TSC sync algorithm is less accurate than before.  The
      old way of zeroing TSCs is too intrusive to do later.  Instead the TSC of the
      BP is duplicated now, which is less accurate.
      
      akpm:
      
      - sync_tsc_bp_init seems to have the sense of `init' inverted.
      
      - SPIN_LOCK_UNLOCKED is deprecated - use DEFINE_SPINLOCK.
      
      Cc: <rusty@rustcorp.com.au>
      Cc: <mingo@elte.hu>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a8ab26fe
    • 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