On Dec 10, 2007 4:58 PM, Ingo Molnar <mingo@xxxxxxx> wrote: > > * Gautham R Shenoy <ego@xxxxxxxxxx> wrote: > > > > say we've got 100 CPUs, so we've got 100 watchdog tasks running - > > > one for each CPU. Checking for hung tasks is a global operation not > > > a per-CPU operation (we iterate over the global tasklist), hence > > > only one CPU should really be calling this function. That > > > online-cpus logic achieves this by picking a single CPU. Perhaps it > > > would be better to keep a hung_task_checker_cpu variable that is > > > driven from a CPU-hotplug-down notifier? That way if a CPU is > > > brought down we can update hung_task_checker_cpu to another, > > > still-online CPU. (this would also be faster, because event-driven) > > > > Do you mean something like this? > > yeah, thanks - queued it up. Stupid me! I forgot to remove the local variable check_cpu in static int watchdog(void * __bind_cpu). Could you please correct it before applying? > > one question: > > > +static int check_cpu = -1; > > > case CPU_ONLINE: > > case CPU_ONLINE_FROZEN: > > + check_cpu = any_online_cpu(cpu_online_map); > > wake_up_process(per_cpu(watchdog_task, hotcpu)); > > break; > > do we bring the boot CPU online too - i.e. will check_cpu be properly > initialized on UP too? Yes, it does. > > Ingo > Thanks and Regards gautham. -- Gautham R Shenoy Linux Technology Center IBM India. "Freedom comes with a price tag of responsibility, which is still a bargain, because Freedom is priceless!" _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm