Messages in this thread | | | Date | Fri, 16 Jan 2009 16:11:51 +0800 | From | Lai Jiangshan <> | Subject | Re: [PATCH -tip] trace_workqueue: use percpu data for workqueue stat |
| |
Frédéric Weisbecker wrote: > Hi Lai, > > 2009/1/15 Lai Jiangshan <laijs@cn.fujitsu.com>: >> Impact: make trace_workqueue works well on NUMA >> >> It's not correct when (num_possible_cpus() < nr_cpumask_bits): >> all_workqueue_stat = kmalloc(sizeof(struct workqueue_global_stats) >> * num_possible_cpus(), GFP_KERNEL); > > > What is the difference between num_possible_cpus() and nr_cpumask_bits actually? > It looks like nr_cpumask_bits binds to NR_CPUS on early time and after > it is set to > num_possible_cpus() , right? > In this case num_possible_cpus() seems more relevant...no? > > (I'm pretty sure I'm wrong.... :-) >
I wanted to reference to nr_cpu_ids, not nr_cpumask_bits(I made mistake yesterday)
init/main.c static void __init setup_nr_cpu_ids(void) { nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1; } setup_nr_cpu_ids() is called directly in main.c, it's earlier than early_initcall.
So nr_cpu_ids is better than num_possible_cpus(), for maybe cpu_possible_mask=101B nr_cpu_ids=3, num_possible_cpus()=2, We will access to invalid memory when we use num_possible_cpus().
but percpu data as my patch shows is better than nr_cpu_ids.
Thanks, Lai.
-- 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/
| |