[PATCH] ACPI: processor idle: Only flush cache on entering C3

From: Kirill A. Shutemov
Date: Thu Dec 09 2021 - 08:24:44 EST


According to the ACPI spec v6.4, section 8.2, cache flushing required
on entering C3 power state.

Avoid flushing cache on entering other power states.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
---
drivers/acpi/processor_idle.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 76ef1bcc8848..d2a4d4446eff 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -567,7 +567,9 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
{
struct acpi_processor_cx *cx = per_cpu(acpi_cstate[index], dev->cpu);

- ACPI_FLUSH_CPU_CACHE();
+ if (cx->entry_method == ACPI_CSTATE_SYSTEMIO &&
+ cx->type == ACPI_STATE_C3)
+ ACPI_FLUSH_CPU_CACHE();

while (1) {

--
Kirill A. Shutemov