diff options
Diffstat (limited to 'drivers/acpi/processor_idle.c')
| -rw-r--r-- | drivers/acpi/processor_idle.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 72069ba5f1ed..10a2d913635a 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -148,6 +148,9 @@ static void acpi_timer_check_state(int state, struct acpi_processor *pr,  	if (cpu_has(&cpu_data(pr->id), X86_FEATURE_ARAT))  		return; +	if (boot_cpu_has(X86_FEATURE_AMDC1E)) +		type = ACPI_STATE_C1; +  	/*  	 * Check, if one of the previous states already marked the lapic  	 * unstable @@ -611,6 +614,7 @@ static int acpi_processor_power_verify(struct acpi_processor *pr)  		switch (cx->type) {  		case ACPI_STATE_C1:  			cx->valid = 1; +			acpi_timer_check_state(i, pr, cx);  			break;  		case ACPI_STATE_C2: @@ -830,11 +834,12 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,  	/* Do not access any ACPI IO ports in suspend path */  	if (acpi_idle_suspend) { -		acpi_safe_halt();  		local_irq_enable(); +		cpu_relax();  		return 0;  	} +	acpi_state_timer_broadcast(pr, cx, 1);  	kt1 = ktime_get_real();  	acpi_idle_do_entry(cx);  	kt2 = ktime_get_real(); @@ -842,6 +847,7 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,  	local_irq_enable();  	cx->usage++; +	acpi_state_timer_broadcast(pr, cx, 0);  	return idle_time;  }  | 
