diff options
Diffstat (limited to 'drivers/acpi/processor_perflib.c')
| -rw-r--r-- | drivers/acpi/processor_perflib.c | 28 | 
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 0d7b772bef5..846e227592d 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c @@ -588,12 +588,15 @@ int acpi_processor_preregister_performance(  	int count, count_target;  	int retval = 0;  	unsigned int i, j; -	cpumask_t covered_cpus; +	cpumask_var_t covered_cpus;  	struct acpi_processor *pr;  	struct acpi_psd_package *pdomain;  	struct acpi_processor *match_pr;  	struct acpi_psd_package *match_pdomain; +	if (!alloc_cpumask_var(&covered_cpus, GFP_KERNEL)) +		return -ENOMEM; +  	mutex_lock(&performance_mutex);  	retval = 0; @@ -617,7 +620,7 @@ int acpi_processor_preregister_performance(  		}  		pr->performance = percpu_ptr(performance, i); -		cpu_set(i, pr->performance->shared_cpu_map); +		cpumask_set_cpu(i, pr->performance->shared_cpu_map);  		if (acpi_processor_get_psd(pr)) {  			retval = -EINVAL;  			continue; @@ -650,18 +653,18 @@ int acpi_processor_preregister_performance(  		}  	} -	cpus_clear(covered_cpus); +	cpumask_clear(covered_cpus);  	for_each_possible_cpu(i) {  		pr = per_cpu(processors, i);  		if (!pr)  			continue; -		if (cpu_isset(i, covered_cpus)) +		if (cpumask_test_cpu(i, covered_cpus))  			continue;  		pdomain = &(pr->performance->domain_info); -		cpu_set(i, pr->performance->shared_cpu_map); -		cpu_set(i, covered_cpus); +		cpumask_set_cpu(i, pr->performance->shared_cpu_map); +		cpumask_set_cpu(i, covered_cpus);  		if (pdomain->num_processors <= 1)  			continue; @@ -699,8 +702,8 @@ int acpi_processor_preregister_performance(  				goto err_ret;  			} -			cpu_set(j, covered_cpus); -			cpu_set(j, pr->performance->shared_cpu_map); +			cpumask_set_cpu(j, covered_cpus); +			cpumask_set_cpu(j, pr->performance->shared_cpu_map);  			count++;  		} @@ -718,8 +721,8 @@ int acpi_processor_preregister_performance(  			match_pr->performance->shared_type =   					pr->performance->shared_type; -			match_pr->performance->shared_cpu_map = -				pr->performance->shared_cpu_map; +			cpumask_copy(match_pr->performance->shared_cpu_map, +				     pr->performance->shared_cpu_map);  		}  	} @@ -731,14 +734,15 @@ err_ret:  		/* Assume no coordination on any error parsing domain info */  		if (retval) { -			cpus_clear(pr->performance->shared_cpu_map); -			cpu_set(i, pr->performance->shared_cpu_map); +			cpumask_clear(pr->performance->shared_cpu_map); +			cpumask_set_cpu(i, pr->performance->shared_cpu_map);  			pr->performance->shared_type = CPUFREQ_SHARED_TYPE_ALL;  		}  		pr->performance = NULL; /* Will be set for real in register */  	}  	mutex_unlock(&performance_mutex); +	free_cpumask_var(covered_cpus);  	return retval;  }  EXPORT_SYMBOL(acpi_processor_preregister_performance);  |