[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.