2020-08-18 17:05:33

by Alex Dewar

[permalink] [raw]
Subject: [PATCH] sched/cputime: Mark function as __maybe_unused

Depending on config options, account_other_time() may not be called
anywhere. Add __maybe_unused flag to fix clang warning.

Signed-off-by: Alex Dewar <[email protected]>
---
kernel/sched/cputime.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
index 5a55d2300452..43ede0d6661c 100644
--- a/kernel/sched/cputime.c
+++ b/kernel/sched/cputime.c
@@ -252,7 +252,7 @@ static __always_inline u64 steal_account_process_time(u64 maxtime)
/*
* Account how much elapsed time was spent in steal, irq, or softirq time.
*/
-static inline u64 account_other_time(u64 max)
+static inline u64 __maybe_unused account_other_time(u64 max)
{
u64 accounted;

--
2.28.0


2020-08-18 18:15:06

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] sched/cputime: Mark function as __maybe_unused

On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <[email protected]> wrote:
>
> Depending on config options, account_other_time() may not be called
> anywhere. Add __maybe_unused flag to fix clang warning.

Just curious, would moving this definition to be within an existing
preprocessor guard for a particular config also fix the issue? If so,
prefer that. If not, __maybe_unused is the way to go.

>
> Signed-off-by: Alex Dewar <[email protected]>
> ---
> kernel/sched/cputime.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
> index 5a55d2300452..43ede0d6661c 100644
> --- a/kernel/sched/cputime.c
> +++ b/kernel/sched/cputime.c
> @@ -252,7 +252,7 @@ static __always_inline u64 steal_account_process_time(u64 maxtime)
> /*
> * Account how much elapsed time was spent in steal, irq, or softirq time.
> */
> -static inline u64 account_other_time(u64 max)
> +static inline u64 __maybe_unused account_other_time(u64 max)
> {
> u64 accounted;
>
> --
> 2.28.0
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200818170337.805624-1-alex.dewar90%40gmail.com.



--
Thanks,
~Nick Desaulniers

2020-08-18 20:01:23

by Alex Dewar

[permalink] [raw]
Subject: Re: [PATCH] sched/cputime: Mark function as __maybe_unused

On Tue, Aug 18, 2020 at 11:13:10AM -0700, Nick Desaulniers wrote:
> On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <[email protected]> wrote:
> >
> > Depending on config options, account_other_time() may not be called
> > anywhere. Add __maybe_unused flag to fix clang warning.
>
> Just curious, would moving this definition to be within an existing
> preprocessor guard for a particular config also fix the issue? If so,
> prefer that. If not, __maybe_unused is the way to go.

I don't think that'd work here: it's used within an "#ifdef
CONFIG_IRQ_TIME_ACCOUNTING" block and a separate "#ifdef
CONFIG_VIRT_CPU_ACCOUNTING_GEN" one. We could do:
#if defined(CONFIG_IRQ_TIME_ACCOUNTING) ||
defined(CONFIG_VIRT_CPU_ACCOUNTING)
...
... but that might be a bit ugly.

>
> >
> > Signed-off-by: Alex Dewar <[email protected]>
> > ---
> > kernel/sched/cputime.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
> > index 5a55d2300452..43ede0d6661c 100644
> > --- a/kernel/sched/cputime.c
> > +++ b/kernel/sched/cputime.c
> > @@ -252,7 +252,7 @@ static __always_inline u64 steal_account_process_time(u64 maxtime)
> > /*
> > * Account how much elapsed time was spent in steal, irq, or softirq time.
> > */
> > -static inline u64 account_other_time(u64 max)
> > +static inline u64 __maybe_unused account_other_time(u64 max)
> > {
> > u64 accounted;
> >
> > --
> > 2.28.0
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200818170337.805624-1-alex.dewar90%40gmail.com.
>
>
>
> --
> Thanks,
> ~Nick Desaulniers

2020-08-18 20:05:58

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] sched/cputime: Mark function as __maybe_unused

On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <[email protected]> wrote:
>
> On Tue, Aug 18, 2020 at 11:13:10AM -0700, Nick Desaulniers wrote:
> > On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <[email protected]> wrote:
> > >
> > > Depending on config options, account_other_time() may not be called
> > > anywhere. Add __maybe_unused flag to fix clang warning.
> >
> > Just curious, would moving this definition to be within an existing
> > preprocessor guard for a particular config also fix the issue? If so,
> > prefer that. If not, __maybe_unused is the way to go.
>
> I don't think that'd work here: it's used within an "#ifdef
> CONFIG_IRQ_TIME_ACCOUNTING" block and a separate "#ifdef
> CONFIG_VIRT_CPU_ACCOUNTING_GEN" one. We could do:
> #if defined(CONFIG_IRQ_TIME_ACCOUNTING) ||
> defined(CONFIG_VIRT_CPU_ACCOUNTING)
> ...
> ... but that might be a bit ugly.

Yeah, ok, in that case it's fine. One issue with __maybe_unused is
that this function will stick around forever if all call sites get
removed. But when the preprocessor checks start getting hairy,
__maybe_unused is maybe simpler.
Acked-by: Nick Desaulniers <[email protected]>

>
> >
> > >
> > > Signed-off-by: Alex Dewar <[email protected]>
> > > ---
> > > kernel/sched/cputime.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
> > > index 5a55d2300452..43ede0d6661c 100644
> > > --- a/kernel/sched/cputime.c
> > > +++ b/kernel/sched/cputime.c
> > > @@ -252,7 +252,7 @@ static __always_inline u64 steal_account_process_time(u64 maxtime)
> > > /*
> > > * Account how much elapsed time was spent in steal, irq, or softirq time.
> > > */
> > > -static inline u64 account_other_time(u64 max)
> > > +static inline u64 __maybe_unused account_other_time(u64 max)
> > > {
> > > u64 accounted;
> > >
> > > --
> > > 2.28.0
> > >
> > > --
> > > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> > > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> > > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200818170337.805624-1-alex.dewar90%40gmail.com.
> >
> >
> >
> > --
> > Thanks,
> > ~Nick Desaulniers



--
Thanks,
~Nick Desaulniers

2020-08-18 20:27:35

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] sched/cputime: Mark function as __maybe_unused

On Tue, 18 Aug 2020 13:02:26 -0700
Nick Desaulniers <[email protected]> wrote:

> On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <[email protected]> wrote:
> >
> > On Tue, Aug 18, 2020 at 11:13:10AM -0700, Nick Desaulniers wrote:
> > > On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <[email protected]> wrote:
> > > >
> > > > Depending on config options, account_other_time() may not be called
> > > > anywhere. Add __maybe_unused flag to fix clang warning.
> > >
> > > Just curious, would moving this definition to be within an existing
> > > preprocessor guard for a particular config also fix the issue? If so,
> > > prefer that. If not, __maybe_unused is the way to go.
> >
> > I don't think that'd work here: it's used within an "#ifdef
> > CONFIG_IRQ_TIME_ACCOUNTING" block and a separate "#ifdef
> > CONFIG_VIRT_CPU_ACCOUNTING_GEN" one. We could do:
> > #if defined(CONFIG_IRQ_TIME_ACCOUNTING) ||
> > defined(CONFIG_VIRT_CPU_ACCOUNTING)
> > ...
> > ... but that might be a bit ugly.
>
> Yeah, ok, in that case it's fine. One issue with __maybe_unused is
> that this function will stick around forever if all call sites get
> removed. But when the preprocessor checks start getting hairy,
> __maybe_unused is maybe simpler.

For the reasons you state above, I'm almost thinking ugly may be better. :-/

But there's other places that have the "maybe_unused" in the scheduler
code for basically the same reasons, thus I guess it's OK.

Acked-by: Steven Rostedt (VMware) <[email protected]>

-- Steve


> Acked-by: Nick Desaulniers <[email protected]>
>
> >
> > >
> > > >
> > > > Signed-off-by: Alex Dewar <[email protected]>
> > > > ---
> > > > kernel/sched/cputime.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
> > > > index 5a55d2300452..43ede0d6661c 100644
> > > > --- a/kernel/sched/cputime.c
> > > > +++ b/kernel/sched/cputime.c
> > > > @@ -252,7 +252,7 @@ static __always_inline u64 steal_account_process_time(u64 maxtime)
> > > > /*
> > > > * Account how much elapsed time was spent in steal, irq, or softirq time.
> > > > */
> > > > -static inline u64 account_other_time(u64 max)
> > > > +static inline u64 __maybe_unused account_other_time(u64 max)
> > > > {
> > > > u64 accounted;
> > > >
> > > > --
> > > > 2.28.0
> > > >
> > > > --
> > > > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> > > > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> > > > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200818170337.805624-1-alex.dewar90%40gmail.com.
> > >
> > >
> > >
> > > --
> > > Thanks,
> > > ~Nick Desaulniers
>
>
>

2020-08-19 07:34:15

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched/cputime: Mark function as __maybe_unused

On Tue, Aug 18, 2020 at 01:02:26PM -0700, Nick Desaulniers wrote:
> On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <[email protected]> wrote:
> >
> > On Tue, Aug 18, 2020 at 11:13:10AM -0700, Nick Desaulniers wrote:
> > > On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <[email protected]> wrote:
> > > >
> > > > Depending on config options, account_other_time() may not be called
> > > > anywhere. Add __maybe_unused flag to fix clang warning.
> > >
> > > Just curious, would moving this definition to be within an existing
> > > preprocessor guard for a particular config also fix the issue? If so,
> > > prefer that. If not, __maybe_unused is the way to go.
> >
> > I don't think that'd work here: it's used within an "#ifdef
> > CONFIG_IRQ_TIME_ACCOUNTING" block and a separate "#ifdef
> > CONFIG_VIRT_CPU_ACCOUNTING_GEN" one. We could do:
> > #if defined(CONFIG_IRQ_TIME_ACCOUNTING) ||
> > defined(CONFIG_VIRT_CPU_ACCOUNTING)
> > ...
> > ... but that might be a bit ugly.
>
> Yeah, ok, in that case it's fine. One issue with __maybe_unused is
> that this function will stick around forever if all call sites get
> removed. But when the preprocessor checks start getting hairy,
> __maybe_unused is maybe simpler.

Urgh, also, I have vague memories that we made it 'static inline' to
avoid all this. Should we instead mark it __always_inline ?

Also; I detest the placement of __maybe_unused, it is not a return
value, but a git-grep showed me it is wide-spread :/