On Mon, 13 Apr 2009 16:50:45 -0700 (PDT) Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > So I applied this (commit 01599fca6758d2cd133e78f87426fc851c9ea725: > "cpufreq: use smp_call_function_[single|many]() in acpi-cpufreq.c"), but > just realized - because of a compiler warning - that this looks > suspicious: > > On Mon, 13 Apr 2009, Andrew Morton wrote: > > @@ -283,7 +280,7 @@ static unsigned int get_measured_perf(st > > unsigned int perf_percent; > > unsigned int retval; > > > > - if (!work_on_cpu(cpu, read_measured_perf_ctrs, &readin)) > > + if (smp_call_function_single(cpu, read_measured_perf_ctrs, &cur, 1)) > > return 0; > > > > cur.aperf.whole = readin.aperf.whole - > > How and why did that "read_measured_perf_ctrs, &readin" become > "read_measured_perf_ctrs, &cur" when the work_on_cpu() was converted to > "smp_call_function_single()"? > > Looks like a bug. But such an odd one that I wonder whether there was some > thought behind it? Andrew? > <scratches head> OK, the acpi tree went and had conflicting changes merged into it after I'd written the patch: @@ -281,52 +279,57 @@ static long read_measured_perf_ctrs(void static unsigned int get_measured_perf(struct cpufreq_policy *policy, unsigned int cpu) { - struct perf_cur cur; + struct perf_pair readin, cur; unsigned int perf_percent; unsigned int retval; - if (!work_on_cpu(cpu, read_measured_perf_ctrs, &cur)) + if (!work_on_cpu(cpu, read_measured_perf_ctrs, &readin)) return 0; + cur.aperf.whole = readin.aperf.whole - + per_cpu(drv_data, cpu)->saved_aperf; + cur.mperf.whole = readin.mperf.whole - + per_cpu(drv_data, cpu)->saved_mperf; + per_cpu(drv_data, cpu)->saved_aperf = readin.aperf.whole; + per_cpu(drv_data, cpu)->saved_mperf = readin.mperf.whole; + and it appears that I incorrectly reverted part of 18b2646fe3babeb40b34a0c1751e0bf5adfdc64c while fixing the resulting rejects. Switching it to `readin' looks correct. -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html