2021-05-24 22:43:54

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH v2] LOCKDEP: reduce LOCKDEP dependency list

Some arches (um, sparc64, riscv, xtensa) cause a Kconfig warning for
LOCKDEP.
These arch-es select LOCKDEP_SUPPORT but they are not listed as one
of the arch-es that LOCKDEP depends on.

Since (16) arch-es define the Kconfig symbol LOCKDEP_SUPPORT if they
intend to have LOCKDEP support, replace the awkward list of
arch-es that LOCKDEP depends on with the LOCKDEP_SUPPORT symbol.

But wait. LOCKDEP_SUPPORT is included in LOCK_DEBUGGING_SUPPORT,
which is already a dependency here, so LOCKDEP_SUPPORT is redundant
and not needed.
That leaves the FRAME_POINTER dependency, but it is part of an
expression like this:
depends on (A && B) && (FRAME_POINTER || B')
where B' is a dependency of B so if B is true then B' is true
and the value of FRAME_POINTER does not matter.
Thus we can also delete the FRAME_POINTER dependency.

Fixes this kconfig warning: (for um, sparc64, riscv, xtensa)

WARNING: unmet direct dependencies detected for LOCKDEP
Depends on [n]: DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y] && (FRAME_POINTER [=n] || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by [y]:
- PROVE_LOCKING [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
- LOCK_STAT [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
- DEBUG_LOCK_ALLOC [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]

Link to v1: https://lore.kernel.org/lkml/[email protected]/

Fixes: 7d37cb2c912d ("lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS")
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Waiman Long <[email protected]>
Cc: Boqun Feng <[email protected]>
Cc: Chris Zankel <[email protected]>
Cc: Max Filippov <[email protected]>
Cc: [email protected]
Cc: Johannes Berg <[email protected]>
Cc: Jeff Dike <[email protected]>
Cc: Richard Weinberger <[email protected]>
Cc: Anton Ivanov <[email protected]>
Cc: [email protected]
Cc: Julian Braha <[email protected]>
Cc: [email protected]
---
@Julian: please take a look. I'm a little concerned about the
FRAME_POINTER dependency going away when our 2 patches are combined.

v2: drop depends on LOCKDEP_SUPPORT for LOCKDEP; the use of
LOCK_DEBUGGING_SUPPORT already covers that dependency;
drop FRAME_POINTER dependency (thanks to Waiman Long
for both of these suggestions)
v2: add CC: to linux-arch

lib/Kconfig.debug | 1 -
1 file changed, 1 deletion(-)

--- linux-next-20210524.orig/lib/Kconfig.debug
+++ linux-next-20210524/lib/Kconfig.debug
@@ -1383,7 +1383,6 @@ config LOCKDEP
bool
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
select STACKTRACE
- depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
select KALLSYMS
select KALLSYMS_ALL


2021-05-25 04:17:06

by Julian Braha

[permalink] [raw]
Subject: Re: [PATCH v2] LOCKDEP: reduce LOCKDEP dependency list

Hi Randy,

It seems I introduced a new unmet dependency bug
in my attempt to fix one :/

Anyway, I don't see why the dependency on FRAME_POINTER
was necessary in the first place, so LGTM.

- Julian Braha


2021-05-25 08:10:39

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH v2] LOCKDEP: reduce LOCKDEP dependency list

On Mon, May 24, 2021 at 03:41:50PM -0700, Randy Dunlap wrote:
> Some arches (um, sparc64, riscv, xtensa) cause a Kconfig warning for
> LOCKDEP.
> These arch-es select LOCKDEP_SUPPORT but they are not listed as one
> of the arch-es that LOCKDEP depends on.
>
> Since (16) arch-es define the Kconfig symbol LOCKDEP_SUPPORT if they
> intend to have LOCKDEP support, replace the awkward list of
> arch-es that LOCKDEP depends on with the LOCKDEP_SUPPORT symbol.
>
> But wait. LOCKDEP_SUPPORT is included in LOCK_DEBUGGING_SUPPORT,
> which is already a dependency here, so LOCKDEP_SUPPORT is redundant
> and not needed.
> That leaves the FRAME_POINTER dependency, but it is part of an
> expression like this:
> depends on (A && B) && (FRAME_POINTER || B')
> where B' is a dependency of B so if B is true then B' is true
> and the value of FRAME_POINTER does not matter.
> Thus we can also delete the FRAME_POINTER dependency.
>
> Fixes this kconfig warning: (for um, sparc64, riscv, xtensa)
>
> WARNING: unmet direct dependencies detected for LOCKDEP
> Depends on [n]: DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y] && (FRAME_POINTER [=n] || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
> Selected by [y]:
> - PROVE_LOCKING [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
> - LOCK_STAT [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
> - DEBUG_LOCK_ALLOC [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
>
> Link to v1: https://lore.kernel.org/lkml/[email protected]/
>
> Fixes: 7d37cb2c912d ("lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS")
> Signed-off-by: Randy Dunlap <[email protected]>

Thanks!

2021-05-25 08:23:18

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH v2] LOCKDEP: reduce LOCKDEP dependency list

On Mon, May 24, 2021 at 11:31:22PM -0400, Julian Braha wrote:
> Hi Randy,
>
> It seems I introduced a new unmet dependency bug
> in my attempt to fix one :/
>
> Anyway, I don't see why the dependency on FRAME_POINTER
> was necessary in the first place, so LGTM.

It might have been an attempt at ensuring sane backtraces; but I didn't
dig into the history of the thing. Either way around, it's fairly
out-dated if that was indeed the case.

2021-05-25 17:01:16

by Waiman Long

[permalink] [raw]
Subject: Re: [PATCH v2] LOCKDEP: reduce LOCKDEP dependency list

On 5/24/21 6:41 PM, Randy Dunlap wrote:
> Some arches (um, sparc64, riscv, xtensa) cause a Kconfig warning for
> LOCKDEP.
> These arch-es select LOCKDEP_SUPPORT but they are not listed as one
> of the arch-es that LOCKDEP depends on.
>
> Since (16) arch-es define the Kconfig symbol LOCKDEP_SUPPORT if they
> intend to have LOCKDEP support, replace the awkward list of
> arch-es that LOCKDEP depends on with the LOCKDEP_SUPPORT symbol.
>
> But wait. LOCKDEP_SUPPORT is included in LOCK_DEBUGGING_SUPPORT,
> which is already a dependency here, so LOCKDEP_SUPPORT is redundant
> and not needed.
> That leaves the FRAME_POINTER dependency, but it is part of an
> expression like this:
> depends on (A && B) && (FRAME_POINTER || B')
> where B' is a dependency of B so if B is true then B' is true
> and the value of FRAME_POINTER does not matter.
> Thus we can also delete the FRAME_POINTER dependency.
>
> Fixes this kconfig warning: (for um, sparc64, riscv, xtensa)
>
> WARNING: unmet direct dependencies detected for LOCKDEP
> Depends on [n]: DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y] && (FRAME_POINTER [=n] || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
> Selected by [y]:
> - PROVE_LOCKING [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
> - LOCK_STAT [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
> - DEBUG_LOCK_ALLOC [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
>
> Link to v1: https://lore.kernel.org/lkml/[email protected]/
>
> Fixes: 7d37cb2c912d ("lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS")
> Signed-off-by: Randy Dunlap <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: Waiman Long <[email protected]>
> Cc: Boqun Feng <[email protected]>
> Cc: Chris Zankel <[email protected]>
> Cc: Max Filippov <[email protected]>
> Cc: [email protected]
> Cc: Johannes Berg <[email protected]>
> Cc: Jeff Dike <[email protected]>
> Cc: Richard Weinberger <[email protected]>
> Cc: Anton Ivanov <[email protected]>
> Cc: [email protected]
> Cc: Julian Braha <[email protected]>
> Cc: [email protected]
> ---
> @Julian: please take a look. I'm a little concerned about the
> FRAME_POINTER dependency going away when our 2 patches are combined.
>
> v2: drop depends on LOCKDEP_SUPPORT for LOCKDEP; the use of
> LOCK_DEBUGGING_SUPPORT already covers that dependency;
> drop FRAME_POINTER dependency (thanks to Waiman Long
> for both of these suggestions)
> v2: add CC: to linux-arch
>
> lib/Kconfig.debug | 1 -
> 1 file changed, 1 deletion(-)
>
> --- linux-next-20210524.orig/lib/Kconfig.debug
> +++ linux-next-20210524/lib/Kconfig.debug
> @@ -1383,7 +1383,6 @@ config LOCKDEP
> bool
> depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
> select STACKTRACE
> - depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
> select KALLSYMS
> select KALLSYMS_ALL
>
>
Acked-by: Waiman Long <[email protected]>

Cheers,
Longman

Subject: [tip: locking/core] locking/lockdep: Reduce LOCKDEP dependency list

The following commit has been merged into the locking/core branch of tip:

Commit-ID: b8e00abe7d9fe21dd13609e2e3a707e38902b105
Gitweb: https://git.kernel.org/tip/b8e00abe7d9fe21dd13609e2e3a707e38902b105
Author: Randy Dunlap <[email protected]>
AuthorDate: Mon, 24 May 2021 15:41:50 -07:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Mon, 31 May 2021 10:14:54 +02:00

locking/lockdep: Reduce LOCKDEP dependency list

Some arches (um, sparc64, riscv, xtensa) cause a Kconfig warning for
LOCKDEP.
These arch-es select LOCKDEP_SUPPORT but they are not listed as one
of the arch-es that LOCKDEP depends on.

Since (16) arch-es define the Kconfig symbol LOCKDEP_SUPPORT if they
intend to have LOCKDEP support, replace the awkward list of
arch-es that LOCKDEP depends on with the LOCKDEP_SUPPORT symbol.

But wait. LOCKDEP_SUPPORT is included in LOCK_DEBUGGING_SUPPORT,
which is already a dependency here, so LOCKDEP_SUPPORT is redundant
and not needed.
That leaves the FRAME_POINTER dependency, but it is part of an
expression like this:
depends on (A && B) && (FRAME_POINTER || B')
where B' is a dependency of B so if B is true then B' is true
and the value of FRAME_POINTER does not matter.
Thus we can also delete the FRAME_POINTER dependency.

Fixes this kconfig warning: (for um, sparc64, riscv, xtensa)

WARNING: unmet direct dependencies detected for LOCKDEP
Depends on [n]: DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y] && (FRAME_POINTER [=n] || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by [y]:
- PROVE_LOCKING [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
- LOCK_STAT [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]
- DEBUG_LOCK_ALLOC [=y] && DEBUG_KERNEL [=y] && LOCK_DEBUGGING_SUPPORT [=y]

Fixes: 7d37cb2c912d ("lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS")
Signed-off-by: Randy Dunlap <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Waiman Long <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
lib/Kconfig.debug | 1 -
1 file changed, 1 deletion(-)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 678c139..1e1bd6f 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1372,7 +1372,6 @@ config LOCKDEP
bool
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
select STACKTRACE
- depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
select KALLSYMS
select KALLSYMS_ALL