[tip: locking/core] locking/qspinlock: Fix 'wait_early' set but not used warning

tip-bot2 for Waiman Long posted 1 patch 1 year, 11 months ago
kernel/locking/qspinlock_paravirt.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[tip: locking/core] locking/qspinlock: Fix 'wait_early' set but not used warning
Posted by tip-bot2 for Waiman Long 1 year, 11 months ago
The following commit has been merged into the locking/core branch of tip:

Commit-ID:     ca4bc2e07b716509fd279d2b449bb42f4263a9c8
Gitweb:        https://git.kernel.org/tip/ca4bc2e07b716509fd279d2b449bb42f4263a9c8
Author:        Waiman Long <longman@redhat.com>
AuthorDate:    Thu, 22 Feb 2024 10:05:37 -05:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Wed, 28 Feb 2024 13:08:37 +01:00

locking/qspinlock: Fix 'wait_early' set but not used warning

When CONFIG_LOCK_EVENT_COUNTS is off, the wait_early variable will be
set but not used. This is expected. Recent compilers will not generate
wait_early code in this case.

Add the __maybe_unused attribute to wait_early for suppressing this
W=1 warning.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20240222150540.79981-2-longman@redhat.com

Closes: https://lore.kernel.org/oe-kbuild-all/202312260422.f4pK3f9m-lkp@intel.com/
---
 kernel/locking/qspinlock_paravirt.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
index 6a0184e..ae2b12f 100644
--- a/kernel/locking/qspinlock_paravirt.h
+++ b/kernel/locking/qspinlock_paravirt.h
@@ -294,8 +294,8 @@ static void pv_wait_node(struct mcs_spinlock *node, struct mcs_spinlock *prev)
 {
 	struct pv_node *pn = (struct pv_node *)node;
 	struct pv_node *pp = (struct pv_node *)prev;
+	bool __maybe_unused wait_early;
 	int loop;
-	bool wait_early;
 
 	for (;;) {
 		for (wait_early = false, loop = SPIN_THRESHOLD; loop; loop--) {
Re: [tip: locking/core] locking/qspinlock: Fix 'wait_early' set but not used warning
Posted by Ingo Molnar 1 year, 11 months ago
* tip-bot2 for Waiman Long <tip-bot2@linutronix.de> wrote:

> The following commit has been merged into the locking/core branch of tip:
> 
> Commit-ID:     ca4bc2e07b716509fd279d2b449bb42f4263a9c8
> Gitweb:        https://git.kernel.org/tip/ca4bc2e07b716509fd279d2b449bb42f4263a9c8
> Author:        Waiman Long <longman@redhat.com>
> AuthorDate:    Thu, 22 Feb 2024 10:05:37 -05:00
> Committer:     Ingo Molnar <mingo@kernel.org>
> CommitterDate: Wed, 28 Feb 2024 13:08:37 +01:00
> 
> locking/qspinlock: Fix 'wait_early' set but not used warning
> 
> When CONFIG_LOCK_EVENT_COUNTS is off, the wait_early variable will be
> set but not used. This is expected. Recent compilers will not generate
> wait_early code in this case.
> 
> Add the __maybe_unused attribute to wait_early for suppressing this
> W=1 warning.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Waiman Long <longman@redhat.com>
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
> Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Link: https://lore.kernel.org/r/20240222150540.79981-2-longman@redhat.com
> 
> Closes: https://lore.kernel.org/oe-kbuild-all/202312260422.f4pK3f9m-lkp@intel.com/
> ---
>  kernel/locking/qspinlock_paravirt.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
> index 6a0184e..ae2b12f 100644
> --- a/kernel/locking/qspinlock_paravirt.h
> +++ b/kernel/locking/qspinlock_paravirt.h
> @@ -294,8 +294,8 @@ static void pv_wait_node(struct mcs_spinlock *node, struct mcs_spinlock *prev)
>  {
>  	struct pv_node *pn = (struct pv_node *)node;
>  	struct pv_node *pp = (struct pv_node *)prev;
> +	bool __maybe_unused wait_early;
>  	int loop;
> -	bool wait_early;

On a second thought, shouldn't this be solved via lockevent_cond_inc()'s
!CONFIG_LOCK_EVENT_COUNTS stub explicitly marking the variable as used, via 
!something like:

   #define lockevent_cond_inc(ev, c)		do { (void)(c); } while (0)

or so, instead of uglifying the usage site?

Thanks,

	Ingo
Re: [tip: locking/core] locking/qspinlock: Fix 'wait_early' set but not used warning
Posted by Waiman Long 1 year, 11 months ago
On 3/11/24 06:57, Ingo Molnar wrote:
> * tip-bot2 for Waiman Long <tip-bot2@linutronix.de> wrote:
>
>> The following commit has been merged into the locking/core branch of tip:
>>
>> Commit-ID:     ca4bc2e07b716509fd279d2b449bb42f4263a9c8
>> Gitweb:        https://git.kernel.org/tip/ca4bc2e07b716509fd279d2b449bb42f4263a9c8
>> Author:        Waiman Long <longman@redhat.com>
>> AuthorDate:    Thu, 22 Feb 2024 10:05:37 -05:00
>> Committer:     Ingo Molnar <mingo@kernel.org>
>> CommitterDate: Wed, 28 Feb 2024 13:08:37 +01:00
>>
>> locking/qspinlock: Fix 'wait_early' set but not used warning
>>
>> When CONFIG_LOCK_EVENT_COUNTS is off, the wait_early variable will be
>> set but not used. This is expected. Recent compilers will not generate
>> wait_early code in this case.
>>
>> Add the __maybe_unused attribute to wait_early for suppressing this
>> W=1 warning.
>>
>> Reported-by: kernel test robot <lkp@intel.com>
>> Signed-off-by: Waiman Long <longman@redhat.com>
>> Signed-off-by: Ingo Molnar <mingo@kernel.org>
>> Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
>> Cc: Linus Torvalds <torvalds@linux-foundation.org>
>> Link: https://lore.kernel.org/r/20240222150540.79981-2-longman@redhat.com
>>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202312260422.f4pK3f9m-lkp@intel.com/
>> ---
>>   kernel/locking/qspinlock_paravirt.h | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
>> index 6a0184e..ae2b12f 100644
>> --- a/kernel/locking/qspinlock_paravirt.h
>> +++ b/kernel/locking/qspinlock_paravirt.h
>> @@ -294,8 +294,8 @@ static void pv_wait_node(struct mcs_spinlock *node, struct mcs_spinlock *prev)
>>   {
>>   	struct pv_node *pn = (struct pv_node *)node;
>>   	struct pv_node *pp = (struct pv_node *)prev;
>> +	bool __maybe_unused wait_early;
>>   	int loop;
>> -	bool wait_early;
> On a second thought, shouldn't this be solved via lockevent_cond_inc()'s
> !CONFIG_LOCK_EVENT_COUNTS stub explicitly marking the variable as used, via
> !something like:
>
>     #define lockevent_cond_inc(ev, c)		do { (void)(c); } while (0)
>
> or so, instead of uglifying the usage site?

Right, that should work too. Thanks for the suggestion. I will post 
another to do that.

Cheers,
Longman