|
[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
Jacob Shin 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.
>
> Signed-off-by: Jacob Shin <jacob.shin@xxxxxxx>
> ---
> xen/arch/x86/acpi/cpufreq/powernow.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c
> b/xen/arch/x86/acpi/cpufreq/powernow.c index 2c9fea2..3b5507a 100644
> --- a/xen/arch/x86/acpi/cpufreq/powernow.c
> +++ b/xen/arch/x86/acpi/cpufreq/powernow.c
> @@ -29,6 +29,7 @@
> #include <xen/cpumask.h>
> #include <xen/timer.h>
> #include <xen/xmalloc.h>
> +#include <xen/numa.h>
> #include <asm/bug.h>
> #include <asm/msr.h>
> #include <asm/io.h>
> @@ -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;
> -
> - on_selected_cpus(cpumask_of(cpuid), update_cpb, policy, 1);
> + unsigned int cpu;
> + cpumask_t cpus;
> +
> + cpumask_and(&cpus, &cpu_online_map,
> &node_to_cpumask[cpu_to_node[cpuid]]); + on_selected_cpus(&cpus,
> update_cpb, policy, 1); +
> + if (!cpumask_equal(policy->cpus, &cpus)) {
> + ASSERT(cpumask_subset(policy->cpus, &cpus));
ASSERT here seems overkilled, considering buggy bios (i.e. buggy node affinity
or buggy cpufreq dom) may crash system.
Simply abort w/ warning and err return may be better.
Thanks,
Jinsong
> + for_each_cpu(cpu, &cpus) {
> + struct cpufreq_policy *p;
> + p = per_cpu(cpufreq_cpu_policy, cpu);
> + p->turbo = policy->turbo;
> + }
> + }
>
> return 0;
> }
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |