···418418 goto err_free;419419420420 perf = data->acpi_data;421421- policy->cpus = perf->shared_cpu_map;422421 policy->shared_type = perf->shared_type;422422+ /*423423+ * Will let policy->cpus know about dependency only when software 424424+ * coordination is required.425425+ */426426+ if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||427427+ policy->shared_type == CPUFREQ_SHARED_TYPE_ANY)428428+ policy->cpus = perf->shared_cpu_map;423429424430 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) {425431 acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
+7-1
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
···399399 dprintk(PFX "obtaining ACPI data failed\n");400400 return -EIO;401401 }402402- policy->cpus = p->shared_cpu_map;403402 policy->shared_type = p->shared_type;403403+ /*404404+ * Will let policy->cpus know about dependency only when software 405405+ * coordination is required.406406+ */407407+ if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||408408+ policy->shared_type == CPUFREQ_SHARED_TYPE_ANY)409409+ policy->cpus = p->shared_cpu_map;404410405411 /* verify the acpi_data */406412 if (p->state_count <= 1) {
+4-4
drivers/acpi/processor_perflib.c
···691691 /* Validate the Domain info */692692 count_target = pdomain->num_processors;693693 count = 1;694694- if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL ||695695- pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL) {694694+ if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL)696695 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL;697697- } else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY) {696696+ else if (pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL)697697+ pr->performance->shared_type = CPUFREQ_SHARED_TYPE_HW;698698+ else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY)698699 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY;699699- }700700701701 for_each_possible_cpu(j) {702702 if (i == j)
+4-2
include/linux/cpufreq.h
···100100#define CPUFREQ_INCOMPATIBLE (1)101101#define CPUFREQ_NOTIFY (2)102102103103-#define CPUFREQ_SHARED_TYPE_ALL (0) /* All dependent CPUs should set freq */104104-#define CPUFREQ_SHARED_TYPE_ANY (1) /* Freq can be set from any dependent CPU */103103+#define CPUFREQ_SHARED_TYPE_NONE (0) /* None */104104+#define CPUFREQ_SHARED_TYPE_HW (1) /* HW does needed coordination */105105+#define CPUFREQ_SHARED_TYPE_ALL (2) /* All dependent CPUs should set freq */106106+#define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/105107106108/******************** cpufreq transition notifiers *******************/107109