1. 17 4月, 2008 1 次提交
  2. 30 1月, 2008 12 次提交
  3. 25 1月, 2008 1 次提交
  4. 20 12月, 2007 1 次提交
  5. 27 11月, 2007 1 次提交
  6. 20 10月, 2007 1 次提交
  7. 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
  8. 11 10月, 2007 2 次提交
  9. 19 8月, 2007 1 次提交
  10. 12 8月, 2007 1 次提交
  11. 22 7月, 2007 3 次提交
  12. 09 5月, 2007 1 次提交
  13. 03 5月, 2007 1 次提交
    • F
      [PATCH] i386: safe_apic_wait_icr_idle - i386 · f2b218dd
      Fernando Luis VazquezCao 提交于
      apic_wait_icr_idle looks like this:
      
      static __inline__ void apic_wait_icr_idle(void)
      {
        while (apic_read(APIC_ICR) & APIC_ICR_BUSY)
          cpu_relax();
      }
      
      The busy loop in this function would not be problematic if the
      corresponding status bit in the ICR were always updated, but that does
      not seem to be the case under certain crash scenarios. Kdump uses an IPI
      to stop the other CPUs in the event of a crash, but when any of the
      other CPUs are locked-up inside the NMI handler the CPU that sends the
      IPI will end up looping forever in the ICR check, effectively
      hard-locking the whole system.
      
      Quoting from Intel's "MultiProcessor Specification" (Version 1.4), B-3:
      
      "A local APIC unit indicates successful dispatch of an IPI by
      resetting the Delivery Status bit in the Interrupt Command
      Register (ICR). The operating system polls the delivery status
      bit after sending an INIT or STARTUP IPI until the command has
      been dispatched.
      
      A period of 20 microseconds should be sufficient for IPI dispatch
      to complete under normal operating conditions. If the IPI is not
      successfully dispatched, the operating system can abort the
      command. Alternatively, the operating system can retry the IPI by
      writing the lower 32-bit double word of the ICR. This “time-out”
      mechanism can be implemented through an external interrupt, if
      interrupts are enabled on the processor, or through execution of
      an instruction or time-stamp counter spin loop."
      
      Intel's documentation suggests the implementation of a time-out
      mechanism, which, by the way, is already being open-coded in some parts
      of the kernel that tinker with ICR.
      
      Create a apic_wait_icr_idle replacement that implements the time-out
      mechanism and that can be used to solve the aforementioned problem.
      
      AK: moved both functions out of line
      AK: added improved loop from Keith Owens
      Signed-off-by: NFernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      f2b218dd
  14. 02 4月, 2007 1 次提交
    • A
      [PATCH] x86-64: Disable local APIC timer use on AMD systems with C1E · 3556ddfa
      Andi Kleen 提交于
      AMD dual core laptops with C1E do not run the APIC timer correctly
      when they go idle. Previously the code assumed this only happened
      on C2 or deeper.  But not all of these systems report support C2.
      
      Use a AMD supplied snippet to detect C1E being enabled and then disable
      local apic timer use.
      
      This supercedes an earlier workaround using DMI detection of specific systems.
      
      Thanks to Mark Langsdorf for the detection snippet.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      3556ddfa
  15. 24 3月, 2007 1 次提交
  16. 23 3月, 2007 2 次提交
  17. 19 3月, 2007 1 次提交
    • T
      [PATCH] i386: trust the PM-Timer calibration of the local APIC timer · ca1b940c
      Thomas Gleixner 提交于
      When PM-Timer is available for local APIC timer calibration we can skip the
      verification of the calibrated time value.  The resulting error is quite
      small on a bunch of evaluated platforms and is less harming than the
      observed false positives.
      
      We need to keep the verification on systems, which have no PM-Timer to
      avoid bogus local APIC timer calibrations in the range of factor 2-10,
      which can be observed when swicthing off the PM-timer support in the kernel
      configuration.
      
      The wrong calibration values are probably caused by SMM code trying to
      emulate a PS/2 keyboard from a (maybe connected or not) USB keyboard.  This
      prohibits the accurate delivery of PIT interrupts, which are used to
      calibrate the local APIC timer.  Unfortunately we have no way to disable
      this BIOS misfeature in the early boot process.
      
      Add also the dropped cpu_relax() back to the wait loops.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ca1b940c
  18. 05 3月, 2007 1 次提交
  19. 27 2月, 2007 1 次提交
    • L
      Revert "[PATCH] i386: add idle notifier" · ea3d5226
      Linus Torvalds 提交于
      This reverts commit 2ff2d3d7.
      
      Uwe Bugla reports that he cannot mount a floppy drive any more, and Jiri
      Slaby bisected it down to this commit.
      
      Benjamin LaHaise also points out that this is a big hot-path, and that
      interrupt delivery while idle is very common and should not go through
      all these expensive gyrations.
      
      Fix up conflicts in arch/i386/kernel/apic.c and arch/i386/kernel/irq.c
      due to other unrelated irq changes.
      
      Cc: Stephane Eranian <eranian@hpl.hp.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Andrew Morton <akpm@osdl.org>
      Cc: Uwe Bugla <uwe.bugla@gmx.de>
      Cc: Jiri Slaby <jirislaby@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ea3d5226
  20. 17 2月, 2007 3 次提交
    • T
      [PATCH] i386 rework local apic timer calibration · d36b49b9
      Thomas Gleixner 提交于
      The local apic timer calibration has two problem cases:
      
      1.  The calibration is based on readout of the PIT/HPET timer to detect the
         wrap of the periodic tick.  It happens that a box gets stuck in the
         calibration loop due to a PIT with a broken readout function.
      
      2.  CoreDuo boxen show a sporadic PIT runs too slow defect, which results
         in a wrong lapic calibration.  The PIT goes back to normal operation once
         the lapic timer is switched to periodic mode.
      
      Both are existing and unfixed problems in the current upstream kernel and
      prevent certain laptops and other systems from booting Linux.
      
      Rework the code to address both problems:
      
      - Make the calibration interrupt driven.  This removes the wait_timer_tick
        magic hackery from lapic.c and time_hpet.c.  The clockevents framework
        allows easy substitution of the global tick event handler for the
        calibration.  This is more accurate than monitoring jiffies.  At this point
        of the boot process, nothing disturbes the interrupt delivery, so the
        results are very accurate.
      
      - Verify the calibration against the PM timer, when available by using the
        early access function.  When the measured calibration period is outside of
        an one percent window, then the lapic timer calibration is adjusted to the
        pm timer result.
      
      - Verify the calibration by running the lapic timer with the calibration
        handler.  Disable lapic timer in case of deviation.
      
      This also removes the "synchronization" of the local apic timer to the global
      tick.  This synchronization never worked, as there is no way to synchronize
      PIT(HPET) and local APIC timer.  The synchronization by waiting for the tick
      just alignes the local APIC timer for the first events, but later the events
      drift away due to the different clocks.  Removing the "sync" is just
      randomizing the asynchronous behaviour at setup time.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Zachary Amsden <zach@vmware.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Rohit Seth <rohitseth@google.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d36b49b9
    • T
      [PATCH] clockevents: i386 drivers · e9e2cdb4
      Thomas Gleixner 提交于
      Add clockevent drivers for i386: lapic (local) and PIT/HPET (global).  Update
      the timer IRQ to call into the PIT/HPET driver's event handler and the
      lapic-timer IRQ to call into the lapic clockevent driver.  The assignement of
      timer functionality is delegated to the core framework code and replaces the
      compile and runtime evalution in do_timer_interrupt_hook()
      
      Use the clockevents broadcast support and implement the lapic_broadcast
      function for ACPI.
      
      No changes to existing functionality.
      
      [ kdump fix from Vivek Goyal <vgoyal@in.ibm.com> ]
      [ fixes based on review feedback from Arjan van de Ven <arjan@infradead.org> ]
      Cleanups-from: Adrian Bunk <bunk@stusta.de>
      Build-fixes-from: Andrew Morton <akpm@osdl.org>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e9e2cdb4
    • T
      [PATCH] i386, apic: clean up the APIC code · e05d723f
      Thomas Gleixner 提交于
      The apic code is quite unstructured and missing a lot of comments.
      
      - Restructure the code into helper functions, timer, setup/shutdown,
        interrupt and power management blocks.
      - Fixup comments.
      - Namespace fixups
      - Inline helpers for version and is_integrated
      - Combine the ack_bad_irq functions
      
      No functional changes.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Zachary Amsden <zach@vmware.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Rohit Seth <rohitseth@google.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e05d723f
  21. 13 2月, 2007 2 次提交
    • S
      [PATCH] i386: add idle notifier · 2ff2d3d7
      Stephane Eranian 提交于
      Add a notifier mechanism to the low level idle loop.  You can register a
      callback function which gets invoked on entry and exit from the low level idle
      loop.  The low level idle loop is defined as the polling loop, low-power call,
      or the mwait instruction.  Interrupts processed by the idle thread are not
      considered part of the low level loop.
      
      The notifier can be used to measure precisely how much is spent in useless
      execution (or low power mode).  The perfmon subsystem uses it to turn on/off
      monitoring.
      Signed-off-by: Nstephane eranian <eranian@hpl.hp.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      2ff2d3d7
    • Z
      [PATCH] i386: vMI timer patches · bbab4f3b
      Zachary Amsden 提交于
      VMI timer code.  It works by taking over the local APIC clock when APIC is
      configured, which requires a couple hooks into the APIC code.  The backend
      timer code could be commonized into the timer infrastructure, but there are
      some pieces missing (stolen time, in particular), and the exact semantics of
      when to do accounting for NO_IDLE need to be shared between different
      hypervisors as well.  So for now, VMI timer is a separate module.
      
      [Adrian Bunk: cleanups]
      
      Subject: VMI timer patches
      Signed-off-by: NZachary Amsden <zach@vmware.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Jeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Chris Wright <chrisw@sous-sol.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      bbab4f3b
  22. 07 12月, 2006 1 次提交