Hi! > Currently there is one CPU led trigger per cpu ('cpu0', 'cpu1', ...) > > This patch adds a new trigger, 'cpu', with brightness proportional to > the number of active CPUs. > > If multiple brightness levels aren't supported on the LED, > it effectively indicates if there is any CPU active. > > This is particularly useful on tiny linux boards with more CPU cores than LED pins. > +static struct led_trigger_cpu_all all_trig; > + > +static bool ledtrig_cpu_initialized; Umm. This variable looks quite like a lock, but without barriers etc. Are you sure that is ok? > @@ -47,26 +57,44 @@ static DEFINE_PER_CPU(struct led_trigger_cpu, cpu_trig); > void ledtrig_cpu(enum cpu_led_event ledevt) > { > struct led_trigger_cpu *trig = this_cpu_ptr(&cpu_trig); > + bool is_active = trig->cpu_is_active; > + > + /* Ignore if this is being called before initialization. */ > + if (!ledtrig_cpu_initialized) > + return; > > /* Locate the correct CPU LED */ > switch (ledevt) { > case CPU_LED_IDLE_END: > case CPU_LED_START: > /* Will turn the LED on, max brightness */ > - led_trigger_event(trig->_trig, LED_FULL); > + is_active = true; > break; > > case CPU_LED_IDLE_START: > case CPU_LED_STOP: > case CPU_LED_HALTED: > /* Will turn the LED off */ > - led_trigger_event(trig->_trig, LED_OFF); > + is_active = false; > break; > > default: > /* Will leave the LED as it is */ > break; > } > + > + if (is_active != trig->cpu_is_active) { > + // Update trigger state C style comments, please. > + trig->cpu_is_active = is_active; > + atomic_add(is_active ? 1 : -1, &all_trig.num_active); In particular, are you sure that with all the activity during startup, it can't get desynchronized? Hmm. is_initialized should be atomic_t, or set_bit should be used. But it will probably not cause problems in practice. I guess the trigger actually will self-synchronize with the actual CPU state, eventually. So I guess it is ok, but... > + led_trigger_event(all_trig._trig, > + LED_FULL * atomic_read(&all_trig.num_active) / > + num_present_cpus()); DIV_ROUND_UP? :-) THanks, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html