diff options
Diffstat (limited to 'drivers/acpi/processor_idle.c')
| -rw-r--r-- | drivers/acpi/processor_idle.c | 43 | 
1 files changed, 22 insertions, 21 deletions
| diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index d93e400940a3..45a019619e4a 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -29,11 +29,9 @@   */  #ifdef CONFIG_X86  #include <asm/apic.h> +#include <asm/cpu.h>  #endif -#define _COMPONENT              ACPI_PROCESSOR_COMPONENT -ACPI_MODULE_NAME("processor_idle"); -  #define ACPI_IDLE_STATE_START	(IS_ENABLED(CONFIG_ARCH_HAS_CPU_RELAX) ? 1 : 0)  static unsigned int max_cstate __read_mostly = ACPI_PROCESSOR_MAX_POWER; @@ -239,8 +237,8 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)  	 * 100 microseconds.  	 */  	if (acpi_gbl_FADT.c2_latency > ACPI_PROCESSOR_MAX_C2_LATENCY) { -		ACPI_DEBUG_PRINT((ACPI_DB_INFO, -			"C2 latency too large [%d]\n", acpi_gbl_FADT.c2_latency)); +		acpi_handle_debug(pr->handle, "C2 latency too large [%d]\n", +				  acpi_gbl_FADT.c2_latency);  		/* invalidate C2 */  		pr->power.states[ACPI_STATE_C2].address = 0;  	} @@ -250,16 +248,15 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)  	 * 1000 microseconds.  	 */  	if (acpi_gbl_FADT.c3_latency > ACPI_PROCESSOR_MAX_C3_LATENCY) { -		ACPI_DEBUG_PRINT((ACPI_DB_INFO, -			"C3 latency too large [%d]\n", acpi_gbl_FADT.c3_latency)); +		acpi_handle_debug(pr->handle, "C3 latency too large [%d]\n", +				  acpi_gbl_FADT.c3_latency);  		/* invalidate C3 */  		pr->power.states[ACPI_STATE_C3].address = 0;  	} -	ACPI_DEBUG_PRINT((ACPI_DB_INFO, -			  "lvl2[0x%08x] lvl3[0x%08x]\n", +	acpi_handle_debug(pr->handle, "lvl2[0x%08x] lvl3[0x%08x]\n",  			  pr->power.states[ACPI_STATE_C2].address, -			  pr->power.states[ACPI_STATE_C3].address)); +			  pr->power.states[ACPI_STATE_C3].address);  	snprintf(pr->power.states[ACPI_STATE_C2].desc,  			 ACPI_CX_DESC_LEN, "ACPI P_LVL2 IOPORT 0x%x", @@ -324,8 +321,8 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,  	 * devices thus we take the conservative approach.  	 */  	else if (errata.piix4.fdma) { -		ACPI_DEBUG_PRINT((ACPI_DB_INFO, -				  "C3 not supported on PIIX4 with Type-F DMA\n")); +		acpi_handle_debug(pr->handle, +				  "C3 not supported on PIIX4 with Type-F DMA\n");  		return;  	} @@ -344,13 +341,13 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,  		if (!pr->flags.bm_control) {  			if (pr->flags.has_cst != 1) {  				/* bus mastering control is necessary */ -				ACPI_DEBUG_PRINT((ACPI_DB_INFO, -					"C3 support requires BM control\n")); +				acpi_handle_debug(pr->handle, +						  "C3 support requires BM control\n");  				return;  			} else {  				/* Here we enter C3 without bus mastering */ -				ACPI_DEBUG_PRINT((ACPI_DB_INFO, -					"C3 support without BM control\n")); +				acpi_handle_debug(pr->handle, +						  "C3 support without BM control\n");  			}  		}  	} else { @@ -359,9 +356,9 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,  		 * supported on when bm_check is not required.  		 */  		if (!(acpi_gbl_FADT.flags & ACPI_FADT_WBINVD)) { -			ACPI_DEBUG_PRINT((ACPI_DB_INFO, +			acpi_handle_debug(pr->handle,  					  "Cache invalidation should work properly" -					  " for C3 to be enabled on SMP systems\n")); +					  " for C3 to be enabled on SMP systems\n");  			return;  		}  	} @@ -541,6 +538,10 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)  			wait_for_freeze();  		} else  			return -ENODEV; + +#if defined(CONFIG_X86) && defined(CONFIG_HOTPLUG_CPU) +		cond_wakeup_cpu0(); +#endif  	}  	/* Never reached */ @@ -784,8 +785,8 @@ static inline void acpi_processor_cstate_first_run_checks(void)  	dmi_check_system(processor_power_dmi_table);  	max_cstate = acpi_processor_cstate_check(max_cstate);  	if (max_cstate < ACPI_C_STATES_MAX) -		pr_notice("ACPI: processor limited to max C-state %d\n", -			  max_cstate); +		pr_notice("processor limited to max C-state %d\n", max_cstate); +  	first_run++;  	if (nocst) @@ -843,7 +844,7 @@ static int acpi_processor_evaluate_lpi(acpi_handle handle,  	status = acpi_evaluate_object(handle, "_LPI", NULL, &buffer);  	if (ACPI_FAILURE(status)) { -		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No _LPI, giving up\n")); +		acpi_handle_debug(handle, "No _LPI, giving up\n");  		return -ENODEV;  	} | 
