Patch looks ok in the sense that it clearly fixes a compile problem, but can you explain why offlining a core should online the HT siblings? It makes no sense, since that CPU_DOWN_PREPARE will be sent to each core, so now they online and offline each other mindlessly. Also, why does that loop do a "break"? What's wrong with having multiple HT siblings? What's special about one? IOW, looking at it, that whole put_core_offline() logic just looks damn confused to me. Could you explain it, please? Both to me, and perhaps with a patch explaining the logic with a comment. Because right now it just looks insane. Linus On Mon, May 23, 2011 at 12:06 PM, Guenter Roeck <guenter.roeck@xxxxxxxxxxxx> wrote: > cpu_sibling_mask() is not defined unless CONFIG_SMP is defined, so it must not > be used directly in the code without ifdef protection. > To solve the problem and avoid ifdefs in the code, define for_each_sibling() > and use it instead. > > Signed-off-by: Guenter Roeck <guenter.roeck@xxxxxxxxxxxx> > Cc: Fenghua Yu <fenghua.yu@xxxxxxxxx> > Cc: Durgadoss R <durgadoss.r@xxxxxxxxx> > --- > drivers/hwmon/coretemp.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c > index 5c7cd60..a00245e 100644 > --- a/drivers/hwmon/coretemp.c > +++ b/drivers/hwmon/coretemp.c > @@ -51,10 +51,12 @@ > #define TO_PHYS_ID(cpu) cpu_data(cpu).phys_proc_id > #define TO_CORE_ID(cpu) cpu_data(cpu).cpu_core_id > #define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO) > +#define for_each_sibling(i, cpu) for_each_cpu(i, cpu_sibling_mask(cpu)) > #else > #define TO_PHYS_ID(cpu) (cpu) > #define TO_CORE_ID(cpu) (cpu) > #define TO_ATTR_NO(cpu) (cpu) > +#define for_each_sibling(i, cpu) for (i = 0; false; ) > #endif > > /* > @@ -762,7 +764,7 @@ static void __cpuinit put_core_offline(unsigned int cpu) > coretemp_remove_core(pdata, &pdev->dev, indx); > > /* Online the HT version of this core, if any */ > - for_each_cpu(i, cpu_sibling_mask(cpu)) { > + for_each_sibling(i, cpu) { > if (i != cpu) { > get_core_online(i); > break; > -- > 1.7.3.1 > > _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors