Commit d7fa2589 authored by Thomas Renninger's avatar Thomas Renninger Committed by Len Brown

Pull bugzilla-5737 into release branch

parents 6468463a 46f18e3a
...@@ -418,8 +418,14 @@ acpi_cpufreq_cpu_init ( ...@@ -418,8 +418,14 @@ acpi_cpufreq_cpu_init (
goto err_free; goto err_free;
perf = data->acpi_data; perf = data->acpi_data;
policy->cpus = perf->shared_cpu_map;
policy->shared_type = perf->shared_type; policy->shared_type = perf->shared_type;
/*
* Will let policy->cpus know about dependency only when software
* coordination is required.
*/
if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
policy->shared_type == CPUFREQ_SHARED_TYPE_ANY)
policy->cpus = perf->shared_cpu_map;
if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) {
acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS; acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
......
...@@ -399,8 +399,14 @@ static int centrino_cpu_init_acpi(struct cpufreq_policy *policy) ...@@ -399,8 +399,14 @@ static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
dprintk(PFX "obtaining ACPI data failed\n"); dprintk(PFX "obtaining ACPI data failed\n");
return -EIO; return -EIO;
} }
policy->cpus = p->shared_cpu_map;
policy->shared_type = p->shared_type; policy->shared_type = p->shared_type;
/*
* Will let policy->cpus know about dependency only when software
* coordination is required.
*/
if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
policy->shared_type == CPUFREQ_SHARED_TYPE_ANY)
policy->cpus = p->shared_cpu_map;
/* verify the acpi_data */ /* verify the acpi_data */
if (p->state_count <= 1) { if (p->state_count <= 1) {
......
...@@ -691,12 +691,12 @@ int acpi_processor_preregister_performance( ...@@ -691,12 +691,12 @@ int acpi_processor_preregister_performance(
/* Validate the Domain info */ /* Validate the Domain info */
count_target = pdomain->num_processors; count_target = pdomain->num_processors;
count = 1; count = 1;
if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL || if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL)
pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL) {
pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL; pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL;
} else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY) { else if (pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL)
pr->performance->shared_type = CPUFREQ_SHARED_TYPE_HW;
else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY)
pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY; pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY;
}
for_each_possible_cpu(j) { for_each_possible_cpu(j) {
if (i == j) if (i == j)
......
...@@ -100,8 +100,10 @@ struct cpufreq_policy { ...@@ -100,8 +100,10 @@ struct cpufreq_policy {
#define CPUFREQ_INCOMPATIBLE (1) #define CPUFREQ_INCOMPATIBLE (1)
#define CPUFREQ_NOTIFY (2) #define CPUFREQ_NOTIFY (2)
#define CPUFREQ_SHARED_TYPE_ALL (0) /* All dependent CPUs should set freq */ #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */
#define CPUFREQ_SHARED_TYPE_ANY (1) /* Freq can be set from any dependent CPU */ #define CPUFREQ_SHARED_TYPE_HW (1) /* HW does needed coordination */
#define CPUFREQ_SHARED_TYPE_ALL (2) /* All dependent CPUs should set freq */
#define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/
/******************** cpufreq transition notifiers *******************/ /******************** cpufreq transition notifiers *******************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment