cpuidle, arm64: Fix the ARM64 cpuidle logic
authorPeter Zijlstra <peterz@infradead.org>
Tue, 17 Jan 2023 10:26:29 +0000 (11:26 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 18 Jan 2023 11:27:17 +0000 (12:27 +0100)
commit19235e47279894b033a3ec5cf2732de634862b3a
tree65263383f260d592b6ab3ebb913324704d4f98b0
parent3b8645e9ec7eb42e7df7a367d6787a3af53f37a9
cpuidle, arm64: Fix the ARM64 cpuidle logic

The recent cpuidle changes started triggering RCU splats on
Juno development boards:

  | =============================
  | WARNING: suspicious RCU usage
  | -----------------------------
  | include/trace/events/ipi.h:19 suspicious rcu_dereference_check() usage!

Fix cpuidle on ARM64:

 - ... by introducing a new 'is_rcu' flag to the cpuidle helpers & make
   ARM64 use it, as ARM64 wants to keep RCU active longer and wants to
   do the ct_cpuidle_enter()/exit() dance itself.

 - Also update the PSCI driver accordingly.

 - This also removes the last known RCU_NONIDLE() user as a bonus.

Reported-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/Y8Z31UbzG3LJgAXE@hirez.programming.kicks-ass.net
--
arch/arm64/kernel/cpuidle.c
arch/arm64/kernel/suspend.c
drivers/cpuidle/cpuidle-psci.c
drivers/firmware/psci/psci.c
include/linux/cpuidle.h