Skip to content
  1. May 13, 2010
    • Don Zickus's avatar
      lockup_detector: Combine nmi_watchdog and softlockup detector · 58687acb
      Don Zickus authored
      
      
      The new nmi_watchdog (which uses the perf event subsystem) is very
      similar in structure to the softlockup detector.  Using Ingo's
      suggestion, I combined the two functionalities into one file:
      kernel/watchdog.c.
      
      Now both the nmi_watchdog (or hardlockup detector) and softlockup
      detector sit on top of the perf event subsystem, which is run every
      60 seconds or so to see if there are any lockups.
      
      To detect hardlockups, cpus not responding to interrupts, I
      implemented an hrtimer that runs 5 times for every perf event
      overflow event.  If that stops counting on a cpu, then the cpu is
      most likely in trouble.
      
      To detect softlockups, tasks not yielding to the scheduler, I used the
      previous kthread idea that now gets kicked every time the hrtimer fires.
      If the kthread isn't being scheduled neither is anyone else and the
      warning is printed to the console.
      
      I tested this on x86_64 and both the softlockup and hardlockup paths
      work.
      
      V2:
      - cleaned up the Kconfig and softlockup combination
      - surrounded hardlockup cases with #ifdef CONFIG_PERF_EVENTS_NMI
      - seperated out the softlockup case from perf event subsystem
      - re-arranged the enabling/disabling nmi watchdog from proc space
      - added cpumasks for hardlockup failure cases
      - removed fallback to soft events if no PMU exists for hard events
      
      V3:
      - comment cleanups
      - drop support for older softlockup code
      - per_cpu cleanups
      - completely remove software clock base hardlockup detector
      - use per_cpu masking on hard/soft lockup detection
      - #ifdef cleanups
      - rename config option NMI_WATCHDOG to LOCKUP_DETECTOR
      - documentation additions
      
      V4:
      - documentation fixes
      - convert per_cpu to __get_cpu_var
      - powerpc compile fixes
      
      V5:
      - split apart warn flags for hard and soft lockups
      
      TODO:
      - figure out how to make an arch-agnostic clock2cycles call
        (if possible) to feed into perf events as a sample period
      
      [fweisbec: merged conflict patch]
      
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Cyrill Gorcunov <gorcunov@gmail.com>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      LKML-Reference: <1273266711-18706-2-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      58687acb
    • Frederic Weisbecker's avatar
      Merge commit 'v2.6.34-rc7' into perf/nmi · a9aa1d02
      Frederic Weisbecker authored
      Merge reason: catch up with latest softlockup detector changes.
      a9aa1d02
  2. May 10, 2010
  3. May 08, 2010
  4. May 07, 2010
  5. May 06, 2010
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze · e8e8fade
      Linus Torvalds authored
      * 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Defconfig update
        microblaze: Optimize CACHE_LOOP_LIMITS and CACHE_RANGE_LOOP macros
        microblaze: Fix consistent-sync code
        microblaze: Define correct L1_CACHE_SHIFT value
        microblaze: cpuinfo shows cache line length
        microblaze: Fix kmalloc alignment on non-coherent DMA platforms
        microblaze: Fix typo fault in cache code
        microblaze: Fix consistent code
        microblaze: pci-dma: use include/linux/dma-mapping.h
        microblaze: page.h: Remove get_user_page and free_user_page
        microblaze: Remove "cache" optimized copy_page function
        microblaze: invoke oom-killer from page fault
        microblaze: fix divide by zero exception message
        microblaze: Add isa_dma_bridge_buggy to dma.h
        microblaze: Remove ancient code
        microblaze: Quiet section mismatch warnings for MMU version
        microblaze: Quiet section mismatch warnings
        microblaze: Fix IRQ entry/exit ftracing
        microblaze: resource/PCI: align functions now return start of resource
        microblaze: PCI: add pci_bus_for_each_resource(), remove direct bus->resource[] refs
      e8e8fade