Blob Blame History Raw
From: Sasha Levin <sashal@kernel.org>
Date: Wed, 5 Apr 2023 07:30:26 -0400
Subject: [PATCH] Revert "cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE
 *again*"
References: bsc#1012628
Patch-mainline: 6.2.10
Git-commit: 6d9c7f51b1d9179bf7c3542267c656a934e8af23

This reverts commit dca64f4bea7669f2056662e1f2776054d62f0153 which was
upstream commit 6d9c7f51b1d9179bf7c3542267c656a934e8af23.

Lockdep warnings on boot that are not seen with Linus's tree.

Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/idle/intel_idle.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index f060ac73..cfeb24d4 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -168,7 +168,13 @@ static __cpuidle int intel_idle_irq(struct cpuidle_device *dev,
 
 	raw_local_irq_enable();
 	ret = __intel_idle(dev, drv, index);
-	raw_local_irq_disable();
+
+	/*
+	 * The lockdep hardirqs state may be changed to 'on' with timer
+	 * tick interrupt followed by __do_softirq(). Use local_irq_disable()
+	 * to keep the hardirqs state correct.
+	 */
+	local_irq_disable();
 
 	return ret;
 }
-- 
2.35.3