summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2023-01-26 18:08:30 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-03-10 11:33:47 +0300
commit463ef209628e682b65b86e1b86945f0018cb358a (patch)
tree19b83ee2af5827952e4066311e3f7d2186cd0b6c /lib
parent909eb5116ee5bfa45e7a265084a9712bbcca08b6 (diff)
downloadlinux-463ef209628e682b65b86e1b86945f0018cb358a.tar.xz
cpuidle: drivers: firmware: psci: Dont instrument suspend code
[ Upstream commit 393e2ea30aec634b37004d401863428e120d5e1b ] The PSCI suspend code is currently instrumentable, which is not safe as instrumentation (e.g. ftrace) may try to make use of RCU during idle periods when RCU is not watching. To fix this we need to ensure that psci_suspend_finisher() and anything it calls are not instrumented. We can do this fairly simply by marking psci_suspend_finisher() and the psci*_cpu_suspend() functions as noinstr, and the underlying helper functions as __always_inline. When CONFIG_DEBUG_VIRTUAL=y, __pa_symbol() can expand to an out-of-line instrumented function, so we must use __pa_symbol_nodebug() within psci_suspend_finisher(). The raw SMCCC invocation functions are written in assembly, and are not subject to compiler instrumentation. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20230126151323.349423061@infradead.org Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions