* Add an idle callback to turn on/off a LED indicating that the CPU is "active" (ON) or "idle" (OFF). * Introduces a callback for "post-smp_cpus_done" processing to setup callback. Note that this is a RAS feature that allows external monitoring of various cpu state indicators, not just providing "pretty blinking lights", as the LED state is readable by the system controller. Based on linux-2.6.tip/master. Signed-off-by: Mike Travis Cc: Tony Luck --- arch/ia64/uv/kernel/setup.c | 19 +++++++++++++++++-- include/asm-ia64/uv/uv_hub.h | 3 +++ 2 files changed, 20 insertions(+), 2 deletions(-) --- linux-2.6.tip.orig/arch/ia64/uv/kernel/setup.c +++ linux-2.6.tip/arch/ia64/uv/kernel/setup.c @@ -52,6 +52,19 @@ static __init void get_lowmem_redirect(u BUG(); } +/* + * Illuminate "activity" LED when CPU is going "active", + * extinguish when going "idle". + */ +static void uv_idle(int state) +{ + if (state) + uv_set_led_bits(0, LED_CPU_ACTIVITY); + + else + uv_set_led_bits(LED_CPU_ACTIVITY, LED_CPU_ACTIVITY); +} + void __init uv_setup(char **cmdline_p) { union uvh_si_addr_map_config_u m_n_config; @@ -104,9 +117,11 @@ void __init uv_setup(char **cmdline_p) uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper; uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; uv_cpu_hub_info(cpu)->coherency_domain_number = 0;/* ZZZ */ - uv_cpu_hub_info(cpu)->led_offset = LED_LOCAL_MMR_BASE + lcpu; + uv_cpu_hub_info(cpu)->led_offset = LED_LOCAL_MMR_BASE + cpu; uv_cpu_hub_info(cpu)->led_state = 0; printk(KERN_DEBUG "UV cpu %d, nid %d\n", cpu, nid); } -} + /* enable idle callback */ + ia64_mark_idle = &uv_idle; +} --- linux-2.6.tip.orig/include/asm-ia64/uv/uv_hub.h +++ linux-2.6.tip/include/asm-ia64/uv/uv_hub.h @@ -150,6 +150,9 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __ #define LED_CPU_BLINK 0xffff /* blink led */ #define LED_CPU_HB_INTERVAL (HZ/2) /* blink once per second */ +/* idle callback */ +extern void (*ia64_mark_idle) (int); + /* * Macros for converting between kernel virtual addresses, socket local physical * addresses, and UV global physical addresses. -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/