Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Pull bugzilla-5737 into release branch

authored by

Thomas Renninger and committed by
Len Brown
d7fa2589 6468463a

+22 -8
+7 -1
arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
··· 418 418 goto err_free; 419 419 420 420 perf = data->acpi_data; 421 - policy->cpus = perf->shared_cpu_map; 422 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 430 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { 425 431 acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
+7 -1
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
··· 399 399 dprintk(PFX "obtaining ACPI data failed\n"); 400 400 return -EIO; 401 401 } 402 - policy->cpus = p->shared_cpu_map; 403 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 411 /* verify the acpi_data */ 406 412 if (p->state_count <= 1) {
+4 -4
drivers/acpi/processor_perflib.c
··· 691 691 /* Validate the Domain info */ 692 692 count_target = pdomain->num_processors; 693 693 count = 1; 694 - if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL || 695 - pdomain->coord_type == DOMAIN_COORD_TYPE_HW_ALL) { 694 + if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ALL) 696 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 699 pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ANY; 699 - } 700 700 701 701 for_each_possible_cpu(j) { 702 702 if (i == j)
+4 -2
include/linux/cpufreq.h
··· 100 100 #define CPUFREQ_INCOMPATIBLE (1) 101 101 #define CPUFREQ_NOTIFY (2) 102 102 103 - #define CPUFREQ_SHARED_TYPE_ALL (0) /* All dependent CPUs should set freq */ 104 - #define CPUFREQ_SHARED_TYPE_ANY (1) /* Freq can be set from any dependent CPU */ 103 + #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */ 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 108 /******************** cpufreq transition notifiers *******************/ 107 109