diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-07-18 22:00:54 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-18 22:00:54 +0200 | 
| commit | bb2c018b09b681d43f5e08124b83e362647ea82b (patch) | |
| tree | d794902c78f9fdd04ed88a4b8d451ed6f9292ec0 /drivers/acpi/processor_throttling.c | |
| parent | 82638844d9a8581bbf33201cc209a14876eca167 (diff) | |
| parent | 5b664cb235e97afbf34db9c4d77f08ebd725335e (diff) | |
| download | olio-linux-3.10-bb2c018b09b681d43f5e08124b83e362647ea82b.tar.xz olio-linux-3.10-bb2c018b09b681d43f5e08124b83e362647ea82b.zip  | |
Merge branch 'linus' into cpus4096
Conflicts:
	drivers/acpi/processor_throttling.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/acpi/processor_throttling.c')
| -rw-r--r-- | drivers/acpi/processor_throttling.c | 38 | 
1 files changed, 27 insertions, 11 deletions
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c index 28509fbba6f..a56fc6c4394 100644 --- a/drivers/acpi/processor_throttling.c +++ b/drivers/acpi/processor_throttling.c @@ -71,7 +71,7 @@ static int acpi_processor_update_tsd_coord(void)  	 * coordination between all CPUs.  	 */  	for_each_possible_cpu(i) { -		pr = processors[i]; +		pr = per_cpu(processors, i);  		if (!pr)  			continue; @@ -93,7 +93,7 @@ static int acpi_processor_update_tsd_coord(void)  	cpus_clear(covered_cpus);  	for_each_possible_cpu(i) { -		pr = processors[i]; +		pr = per_cpu(processors, i);  		if (!pr)  			continue; @@ -119,7 +119,7 @@ static int acpi_processor_update_tsd_coord(void)  			if (i == j)  				continue; -			match_pr = processors[j]; +			match_pr = per_cpu(processors, j);  			if (!match_pr)  				continue; @@ -152,7 +152,7 @@ static int acpi_processor_update_tsd_coord(void)  			if (i == j)  				continue; -			match_pr = processors[j]; +			match_pr = per_cpu(processors, j);  			if (!match_pr)  				continue; @@ -172,7 +172,7 @@ static int acpi_processor_update_tsd_coord(void)  err_ret:  	for_each_possible_cpu(i) { -		pr = processors[i]; +		pr = per_cpu(processors, i);  		if (!pr)  			continue; @@ -214,7 +214,7 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)  	struct acpi_processor_throttling *p_throttling;  	cpu = p_tstate->cpu; -	pr = processors[cpu]; +	pr = per_cpu(processors, cpu);  	if (!pr) {  		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Invalid pr pointer\n"));  		return 0; @@ -1035,7 +1035,7 @@ int acpi_processor_set_throttling(struct acpi_processor *pr, int state)  		 * cpus.  		 */  		for_each_cpu_mask_nr(i, online_throttling_cpus) { -			match_pr = processors[i]; +			match_pr = per_cpu(processors, i);  			/*  			 * If the pointer is invalid, we will report the  			 * error message and continue. @@ -1232,7 +1232,10 @@ static ssize_t acpi_processor_write_throttling(struct file *file,  	int result = 0;  	struct seq_file *m = file->private_data;  	struct acpi_processor *pr = m->private; -	char state_string[12] = { '\0' }; +	char state_string[5] = ""; +	char *charp = NULL; +	size_t state_val = 0; +	char tmpbuf[5] = "";  	if (!pr || (count > sizeof(state_string) - 1))  		return -EINVAL; @@ -1241,10 +1244,23 @@ static ssize_t acpi_processor_write_throttling(struct file *file,  		return -EFAULT;  	state_string[count] = '\0'; +	if ((count > 0) && (state_string[count-1] == '\n')) +		state_string[count-1] = '\0'; -	result = acpi_processor_set_throttling(pr, -					       simple_strtoul(state_string, -							      NULL, 0)); +	charp = state_string; +	if ((state_string[0] == 't') || (state_string[0] == 'T')) +		charp++; + +	state_val = simple_strtoul(charp, NULL, 0); +	if (state_val >= pr->throttling.state_count) +		return -EINVAL; + +	snprintf(tmpbuf, 5, "%zu", state_val); + +	if (strcmp(tmpbuf, charp) != 0) +		return -EINVAL; + +	result = acpi_processor_set_throttling(pr, state_val);  	if (result)  		return result;  |