diff options
-rw-r--r-- | arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 8 | ||||
-rw-r--r-- | arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 8 | ||||
-rw-r--r-- | drivers/acpi/processor_perflib.c | 8 | ||||
-rw-r--r-- | include/linux/cpufreq.h | 6 |
4 files changed, 22 insertions, 8 deletions
diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c index 5fd65325b81a..cf0ddc9ee0cd 100644 --- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -418,8 +418,14 @@ acpi_cpufreq_cpu_init ( | |||
418 | goto err_free; | 418 | goto err_free; |
419 | 419 | ||
420 | perf = data->acpi_data; | 420 | perf = data->acpi_data; |
421 | policy->cpus = perf->shared_cpu_map; | ||
422 | policy->shared_type = perf->shared_type; | 421 | policy->shared_type = perf->shared_type; |
422 | /* | ||
423 | * Will let policy->cpus know about dependency only when software | ||
424 | * coordination is required. | ||
425 | */ | ||
426 | if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL || | ||
427 | policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) | ||
428 | policy->cpus = perf->shared_cpu_map; | ||
423 | 429 | ||
424 | if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { | 430 | if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { |
425 | acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS; | 431 | acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS; |
diff --git a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c index f7e4356f6820..8d765509ef59 100644 --- a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c +++ b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | |||
@@ -399,8 +399,14 @@ static int centrino_cpu_init_acpi(struct cpufreq_policy *policy) | |||
399 | dprintk(PFX "obtaining ACPI data failed\n"); | 399 | dprintk(PFX "obtaining ACPI data failed\n"); |
400 | return -EIO; | 400 | return -EIO; |
401 | } | 401 | } |
402 | policy->cpus = p->shared_cpu_map; | ||
403 | policy->shared_type = p->shared_type; | 402 | policy->shared_type = p->shared_type; |
403 | /* | ||
404 | * Will let policy->cpus know about dependency only when software | ||
405 | * coordination is required. | ||
406 | */ | ||
407 | if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL || | ||
408 | policy->shared_type == CPUFREQ_SHARED_TYPE_ANY) | ||
409 | policy->cpus = p->shared_cpu_map; | ||
404 | 410 | ||
405 | /* verify the acpi_data */ | 411 | /* verify the acpi_data */ |
406 | if (p->state_count <= 1) { | 412 | if (p->state_count <= 1) { |
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 8bd7500c6121..5c24ac45717c 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
@@ -691,12 +691,12 @@ int acpi_processor_preregister_performance( | |||
691 | /* Validate the Domain info */ | 691 | /* Validate the Domain info */ |
692 | count_target = pdomain->num_processors; | 692 | count_target = pdomain->num_processors; |
693 | count = 1; | 693 | count = 1; |
694 | if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL || | 694 | if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL) |
695 | pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL) { | ||
696 | pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL; | 695 | pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL; |
697 | } else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY) { | 696 | else if (pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL) |
697 | pr->performance->shared_type = CPUFREQ_SHARED_TYPE_HW; | ||
698 | else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY) | ||
698 | pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY; | 699 | pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY; |
699 | } | ||
700 | 700 | ||
701 | for_each_possible_cpu(j) { | 701 | for_each_possible_cpu(j) { |
702 | if (i == j) | 702 | if (i == j) |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 466fbe9e4899..35e137636b0b 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -100,8 +100,10 @@ struct cpufreq_policy { | |||
100 | #define CPUFREQ_INCOMPATIBLE (1) | 100 | #define CPUFREQ_INCOMPATIBLE (1) |
101 | #define CPUFREQ_NOTIFY (2) | 101 | #define CPUFREQ_NOTIFY (2) |
102 | 102 | ||
103 | #define CPUFREQ_SHARED_TYPE_ALL (0) /* All dependent CPUs should set freq */ | 103 | #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */ |
104 | #define CPUFREQ_SHARED_TYPE_ANY (1) /* Freq can be set from any dependent CPU */ | 104 | #define CPUFREQ_SHARED_TYPE_HW (1) /* HW does needed coordination */ |
105 | #define CPUFREQ_SHARED_TYPE_ALL (2) /* All dependent CPUs should set freq */ | ||
106 | #define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/ | ||
105 | 107 | ||
106 | /******************** cpufreq transition notifiers *******************/ | 108 | /******************** cpufreq transition notifiers *******************/ |
107 | 109 | ||