* [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused
@ 2024-12-09 17:08 Andy Shevchenko
2024-12-15 19:55 ` Boqun Feng
2024-12-24 18:53 ` [tip: locking/core] " tip-bot2 for Andy Shevchenko
0 siblings, 2 replies; 8+ messages in thread
From: Andy Shevchenko @ 2024-12-09 17:08 UTC (permalink / raw)
To: linux-kernel, llvm
Cc: Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Boqun Feng,
Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
Andy Shevchenko
When chain_hlock_class_idx() is unused, it prevents kernel builds with clang,
`make W=1` and CONFIG_WERROR=y:
kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function]
Fix this by marking it with __maybe_unused.
See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static
inline functions for W=1 build").
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
kernel/locking/lockdep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index bb65abfcfa71..29acd238dad7 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -432,7 +432,7 @@ static inline u16 hlock_id(struct held_lock *hlock)
return (hlock->class_idx | (hlock->read << MAX_LOCKDEP_KEYS_BITS));
}
-static inline unsigned int chain_hlock_class_idx(u16 hlock_id)
+static inline __maybe_unused unsigned int chain_hlock_class_idx(u16 hlock_id)
{
return hlock_id & (MAX_LOCKDEP_KEYS - 1);
}
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-09 17:08 [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused Andy Shevchenko @ 2024-12-15 19:55 ` Boqun Feng 2024-12-15 21:21 ` Andy Shevchenko 2024-12-24 18:53 ` [tip: locking/core] " tip-bot2 for Andy Shevchenko 1 sibling, 1 reply; 8+ messages in thread From: Boqun Feng @ 2024-12-15 19:55 UTC (permalink / raw) To: Andy Shevchenko Cc: linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt Hi Andy, On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > `make W=1` and CONFIG_WERROR=y: > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > Fix this by marking it with __maybe_unused. > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > inline functions for W=1 build"). > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> This looks fine to me, so I'm going to queue it, but could you do me favor if you could share the exact configs that would make chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? I might add these information in commit log. Thanks! Regards, Boqun > --- > kernel/locking/lockdep.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c > index bb65abfcfa71..29acd238dad7 100644 > --- a/kernel/locking/lockdep.c > +++ b/kernel/locking/lockdep.c > @@ -432,7 +432,7 @@ static inline u16 hlock_id(struct held_lock *hlock) > return (hlock->class_idx | (hlock->read << MAX_LOCKDEP_KEYS_BITS)); > } > > -static inline unsigned int chain_hlock_class_idx(u16 hlock_id) > +static inline __maybe_unused unsigned int chain_hlock_class_idx(u16 hlock_id) > { > return hlock_id & (MAX_LOCKDEP_KEYS - 1); > } > -- > 2.43.0.rc1.1336.g36b5255a03ac > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-15 19:55 ` Boqun Feng @ 2024-12-15 21:21 ` Andy Shevchenko 2024-12-19 21:57 ` Boqun Feng 0 siblings, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2024-12-15 21:21 UTC (permalink / raw) To: Boqun Feng Cc: linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt On Sun, Dec 15, 2024 at 11:55:08AM -0800, Boqun Feng wrote: > On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > > `make W=1` and CONFIG_WERROR=y: > > > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > > > Fix this by marking it with __maybe_unused. > > > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > > inline functions for W=1 build"). > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > This looks fine to me, so I'm going to queue it, but could you do me > favor if you could share the exact configs that would make > chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? I might harvest this when I come from vacations (some around mid-January). > I might add these information in commit log. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-15 21:21 ` Andy Shevchenko @ 2024-12-19 21:57 ` Boqun Feng 2024-12-23 18:55 ` Andy Shevchenko 2025-01-20 8:11 ` Ingo Molnar 0 siblings, 2 replies; 8+ messages in thread From: Boqun Feng @ 2024-12-19 21:57 UTC (permalink / raw) To: Andy Shevchenko Cc: linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt On Sun, Dec 15, 2024 at 11:21:36PM +0200, Andy Shevchenko wrote: > On Sun, Dec 15, 2024 at 11:55:08AM -0800, Boqun Feng wrote: > > On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > > > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > > > `make W=1` and CONFIG_WERROR=y: > > > > > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > > > > > Fix this by marking it with __maybe_unused. > > > > > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > > > inline functions for W=1 build"). > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > > This looks fine to me, so I'm going to queue it, but could you do me > > favor if you could share the exact configs that would make > > chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? > > I might harvest this when I come from vacations (some around mid-January). > After some investigation myself, it turns out that chain_hlock_class_idx() is defined outside "#ifdef CONFIG_PROVING_LOCK", but only used under CONFIG_PROVING_LOCK=y, hence the unused warning. TBH, I feel we should really clean-up/consolidate those "#ifdef" to make internal definition/usage more clear. But nothing blocks this patch, it fixes a real issue, I will add the CONFIG_PROVING_LOCK part in the commit log. Thanks! Regards, Boqun > > I might add these information in commit log. > > > -- > With Best Regards, > Andy Shevchenko > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-19 21:57 ` Boqun Feng @ 2024-12-23 18:55 ` Andy Shevchenko 2025-01-20 8:11 ` Ingo Molnar 1 sibling, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2024-12-23 18:55 UTC (permalink / raw) To: Boqun Feng Cc: linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt On Thu, Dec 19, 2024 at 01:57:30PM -0800, Boqun Feng wrote: > On Sun, Dec 15, 2024 at 11:21:36PM +0200, Andy Shevchenko wrote: > > On Sun, Dec 15, 2024 at 11:55:08AM -0800, Boqun Feng wrote: > > > On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > > > > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > > > > `make W=1` and CONFIG_WERROR=y: > > > > > > > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > > > > > > > Fix this by marking it with __maybe_unused. > > > > > > > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > > > > inline functions for W=1 build"). > > > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > > > > This looks fine to me, so I'm going to queue it, but could you do me > > > favor if you could share the exact configs that would make > > > chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? > > > > I might harvest this when I come from vacations (some around mid-January). > > After some investigation myself, it turns out that > chain_hlock_class_idx() is defined outside "#ifdef CONFIG_PROVING_LOCK", > but only used under CONFIG_PROVING_LOCK=y, hence the unused warning. > > TBH, I feel we should really clean-up/consolidate those "#ifdef" to make > internal definition/usage more clear. But nothing blocks this patch, it > fixes a real issue, I will add the CONFIG_PROVING_LOCK part in the > commit log. Thanks! I take this as no AR from me needed anymore, tell me if it's not the case. Thanks! > > > I might add these information in commit log. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-19 21:57 ` Boqun Feng 2024-12-23 18:55 ` Andy Shevchenko @ 2025-01-20 8:11 ` Ingo Molnar 2025-01-20 17:00 ` Boqun Feng 1 sibling, 1 reply; 8+ messages in thread From: Ingo Molnar @ 2025-01-20 8:11 UTC (permalink / raw) To: Boqun Feng Cc: Andy Shevchenko, linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt * Boqun Feng <boqun.feng@gmail.com> wrote: > On Sun, Dec 15, 2024 at 11:21:36PM +0200, Andy Shevchenko wrote: > > On Sun, Dec 15, 2024 at 11:55:08AM -0800, Boqun Feng wrote: > > > On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > > > > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > > > > `make W=1` and CONFIG_WERROR=y: > > > > > > > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > > > > > > > Fix this by marking it with __maybe_unused. > > > > > > > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > > > > inline functions for W=1 build"). > > > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > > > > This looks fine to me, so I'm going to queue it, but could you do me > > > favor if you could share the exact configs that would make > > > chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? > > > > I might harvest this when I come from vacations (some around mid-January). > > > > After some investigation myself, it turns out that > chain_hlock_class_idx() is defined outside "#ifdef CONFIG_PROVING_LOCK", > but only used under CONFIG_PROVING_LOCK=y, hence the unused warning. > > TBH, I feel we should really clean-up/consolidate those "#ifdef" to make > internal definition/usage more clear. But nothing blocks this patch, it > fixes a real issue, I will add the CONFIG_PROVING_LOCK part in the > commit log. Thanks! So now that we have: 343060092585 lockdep: Move lockdep_assert_locked() under #ifdef CONFIG_PROVE_LOCKING Do we really need: 8148fa2e022b lockdep: Mark chain_hlock_class_idx() with __maybe_unused As it would hide the problem fixed by 343060092585? __maybe_unused annotations are almost always canaries of something messy being hidden. Thanks, Ingo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2025-01-20 8:11 ` Ingo Molnar @ 2025-01-20 17:00 ` Boqun Feng 0 siblings, 0 replies; 8+ messages in thread From: Boqun Feng @ 2025-01-20 17:00 UTC (permalink / raw) To: Ingo Molnar Cc: Andy Shevchenko, linux-kernel, llvm, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt On Mon, Jan 20, 2025 at 09:11:09AM +0100, Ingo Molnar wrote: > > * Boqun Feng <boqun.feng@gmail.com> wrote: > > > On Sun, Dec 15, 2024 at 11:21:36PM +0200, Andy Shevchenko wrote: > > > On Sun, Dec 15, 2024 at 11:55:08AM -0800, Boqun Feng wrote: > > > > On Mon, Dec 09, 2024 at 07:08:10PM +0200, Andy Shevchenko wrote: > > > > > When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, > > > > > `make W=1` and CONFIG_WERROR=y: > > > > > > > > > > kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] > > > > > > > > > > Fix this by marking it with __maybe_unused. > > > > > > > > > > See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static > > > > > inline functions for W=1 build"). > > > > > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > > > > > > This looks fine to me, so I'm going to queue it, but could you do me > > > > favor if you could share the exact configs that would make > > > > chain_hlock_class_idx() an unused fuction in kernel/locking/lockdep.c ? > > > > > > I might harvest this when I come from vacations (some around mid-January). > > > > > > > After some investigation myself, it turns out that > > chain_hlock_class_idx() is defined outside "#ifdef CONFIG_PROVING_LOCK", > > but only used under CONFIG_PROVING_LOCK=y, hence the unused warning. > > > > TBH, I feel we should really clean-up/consolidate those "#ifdef" to make > > internal definition/usage more clear. But nothing blocks this patch, it > > fixes a real issue, I will add the CONFIG_PROVING_LOCK part in the > > commit log. Thanks! > > So now that we have: > > 343060092585 lockdep: Move lockdep_assert_locked() under #ifdef CONFIG_PROVE_LOCKING > > Do we really need: > > 8148fa2e022b lockdep: Mark chain_hlock_class_idx() with __maybe_unused > > As it would hide the problem fixed by 343060092585? > These two commits fix different functions, so they are both needed. Though, we could probably regroup the functions into one big #ifdef block so that we won't need the __maybe_unused annotations. I will take a look. Regards, Boqun > __maybe_unused annotations are almost always canaries of something > messy being hidden. > > Thanks, > > Ingo ^ permalink raw reply [flat|nested] 8+ messages in thread
* [tip: locking/core] lockdep: Mark chain_hlock_class_idx() with __maybe_unused 2024-12-09 17:08 [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused Andy Shevchenko 2024-12-15 19:55 ` Boqun Feng @ 2024-12-24 18:53 ` tip-bot2 for Andy Shevchenko 1 sibling, 0 replies; 8+ messages in thread From: tip-bot2 for Andy Shevchenko @ 2024-12-24 18:53 UTC (permalink / raw) To: linux-tip-commits; +Cc: Andy Shevchenko, Boqun Feng, x86, linux-kernel The following commit has been merged into the locking/core branch of tip: Commit-ID: 8148fa2e022bae29f21bb9a2c4cc796334fd372b Gitweb: https://git.kernel.org/tip/8148fa2e022bae29f21bb9a2c4cc796334fd372b Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com> AuthorDate: Mon, 09 Dec 2024 19:08:10 +02:00 Committer: Boqun Feng <boqun.feng@gmail.com> CommitterDate: Thu, 19 Dec 2024 13:57:53 -08:00 lockdep: Mark chain_hlock_class_idx() with __maybe_unused When chain_hlock_class_idx() is unused, it prevents kernel builds with clang, `make W=1` and CONFIG_WERROR=y, CONFIG_LOCKDEP=y and CONFIG_PROVE_LOCKING=n: kernel/locking/lockdep.c:435:28: error: unused function 'chain_hlock_class_idx' [-Werror,-Wunused-function] Fix this by marking it with __maybe_unused. See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static inline functions for W=1 build"). [Boqun: add more config information of the error] Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Boqun Feng <boqun.feng@gmail.com> Link: https://lore.kernel.org/r/20241209170810.1485183-1-andriy.shevchenko@linux.intel.com --- kernel/locking/lockdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 2d8ec03..fe04a21 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -430,7 +430,7 @@ static inline u16 hlock_id(struct held_lock *hlock) return (hlock->class_idx | (hlock->read << MAX_LOCKDEP_KEYS_BITS)); } -static inline unsigned int chain_hlock_class_idx(u16 hlock_id) +static inline __maybe_unused unsigned int chain_hlock_class_idx(u16 hlock_id) { return hlock_id & (MAX_LOCKDEP_KEYS - 1); } ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-01-20 17:00 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-12-09 17:08 [PATCH v1 1/1] lockdep: Mark chain_hlock_class_idx() with __maybe_unused Andy Shevchenko 2024-12-15 19:55 ` Boqun Feng 2024-12-15 21:21 ` Andy Shevchenko 2024-12-19 21:57 ` Boqun Feng 2024-12-23 18:55 ` Andy Shevchenko 2025-01-20 8:11 ` Ingo Molnar 2025-01-20 17:00 ` Boqun Feng 2024-12-24 18:53 ` [tip: locking/core] " tip-bot2 for Andy Shevchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox