[PATCH 0/2] arm64: fix lockdep in NMI context

Mark Rutland posted 2 patches 4 years, 1 month ago
arch/Kconfig           | 3 +++
arch/arm64/Kconfig     | 1 +
arch/x86/Kconfig       | 1 +
arch/x86/Kconfig.debug | 3 ---
4 files changed, 5 insertions(+), 3 deletions(-)
[PATCH 0/2] arm64: fix lockdep in NMI context
Posted by Mark Rutland 4 years, 1 month ago
For lockdep to function correctly in NMI context, architectures need to
correctly save/restore lockdep state at NMI entry/exit time, correctly
manage lockdep state within the NMI context, and need to select
TRACE_IRQFLAGS_NMI_SUPPORT.

Currently arm64 falls short of this merely by failing to select
TRACE_IRQFLAGS_NMI_SUPPORT, and this can result in spurious lockdep
splats with GICv3 Pseudo-NMIs are in use. Patch 2 has an example.

Patch 1 makes TRACE_IRQFLAGS_NMI_SUPPORT a generically selectable
kconfig symbol (as it is currently defined under arch/x86). Patch 2
selects this on arm64 (providing the behaviour we'd intended when
reworking our entry code).

For anyone testing, beware that there are some other latent issues with
GICv3 Pseudo-NMIs. I'm currently working to fix those whcih I am aware
of, but as this is orthogonal I'd like to get it out the way on its own.

Thanks,
Mark.

Mark Rutland (2):
  arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic
  arm64: select TRACE_IRQFLAGS_NMI_SUPPORT

 arch/Kconfig           | 3 +++
 arch/arm64/Kconfig     | 1 +
 arch/x86/Kconfig       | 1 +
 arch/x86/Kconfig.debug | 3 ---
 4 files changed, 5 insertions(+), 3 deletions(-)

-- 
2.30.2
Re: [PATCH 0/2] arm64: fix lockdep in NMI context
Posted by Will Deacon 3 years, 11 months ago
On Wed, 11 May 2022 14:17:31 +0100, Mark Rutland wrote:
> For lockdep to function correctly in NMI context, architectures need to
> correctly save/restore lockdep state at NMI entry/exit time, correctly
> manage lockdep state within the NMI context, and need to select
> TRACE_IRQFLAGS_NMI_SUPPORT.
> 
> Currently arm64 falls short of this merely by failing to select
> TRACE_IRQFLAGS_NMI_SUPPORT, and this can result in spurious lockdep
> splats with GICv3 Pseudo-NMIs are in use. Patch 2 has an example.
> 
> [...]

This looks good to me and the x86 changes are trivial (famous last
words...), so I've queued the series up on its own branch in the arm64
tree.

Applied to arm64 (for-next/irqflags-nmi), thanks!

[1/2] arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic
      https://git.kernel.org/arm64/c/4510bffb4d02
[2/2] arm64: select TRACE_IRQFLAGS_NMI_SUPPORT
      https://git.kernel.org/arm64/c/3381da254fab

Cheers,
-- 
Will

https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev