[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2 2/2] cpufreq, powernow: enable/disable core performance boost for all CPUs in the Node
>>> On 20.06.13 at 19:04, Jacob Shin <jacob.shin@xxxxxxx> wrote: > Since disabling turbo mode on one CPU also affect all other sibling > CPUs in the same Node, we need to call update_cpb on all CPUs in the > same node. Same node? Hardly - if anything, than same package. > @@ -82,10 +83,20 @@ static void update_cpb(void *data) > static int powernow_cpufreq_update (int cpuid, > struct cpufreq_policy *policy) > { > - if (!cpumask_test_cpu(cpuid, &cpu_online_map)) > - return -EINVAL; You're entirely losing that check. > - > - on_selected_cpus(cpumask_of(cpuid), update_cpb, policy, 1); > + unsigned int cpu; > + cpumask_t cpus; Please avoid on stack cpumask_t variables is at all possible. It shouldn't be too difficult to use cpumask_var_t here. > + > + cpumask_and(&cpus, &cpu_online_map, > &node_to_cpumask[cpu_to_node[cpuid]]); While per the above I expect this to go away anyway, if nevertheless this needs to stay, then please use the macros, not the raw arrays. > + on_selected_cpus(&cpus, update_cpb, policy, 1); > + > + if (!cpumask_equal(policy->cpus, &cpus)) { This is wrong - the left side ought to be cpumask_of(cpuid), or else you may again fail to update some of the policy structures. > + ASSERT(cpumask_subset(policy->cpus, &cpus)); > + for_each_cpu(cpu, &cpus) { > + struct cpufreq_policy *p; > + p = per_cpu(cpufreq_cpu_policy, cpu); > + p->turbo = policy->turbo; > + } Couldn't this be done in update_cpb() instead? And with update_cpb() being a no-op when policy->turbo == CPUFREQ_TURBO_UNSUPPORTED, and since you're re-writing this function anyway - the better change then would be to not even call on_selected_cpus() in that case (and of course the loop here wouldn't need to be gone through in that case either, as long as we're permitted to assume that CPUs in a package as well as CPUs covered by the same policy have the same turbo mode availability). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |