[PATCH] sched/cputime: Mark function as __maybe_unused

1 view
Skip to first unread message

Alex Dewar

unread,
Aug 18, 2020, 1:03:59 PM8/18/20
to Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, linux-...@vger.kernel.org, clang-bu...@googlegroups.com, Alex Dewar
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 <alex.d...@gmail.com>
---
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

Nick Desaulniers

unread,
Aug 18, 2020, 2:13:22 PM8/18/20
to Alex Dewar, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, LKML, clang-built-linux
On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <alex.d...@gmail.com> 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 <alex.d...@gmail.com>
> ---
> 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 clang-built-li...@googlegroups.com.
> 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

Alex Dewar

unread,
Aug 18, 2020, 3:57:50 PM8/18/20
to Nick Desaulniers, Alex Dewar, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, LKML, clang-built-linux
On Tue, Aug 18, 2020 at 11:13:10AM -0700, Nick Desaulniers wrote:
> On Tue, Aug 18, 2020 at 10:04 AM Alex Dewar <alex.d...@gmail.com> 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.

Nick Desaulniers

unread,
Aug 18, 2020, 4:02:38 PM8/18/20
to Alex Dewar, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, LKML, clang-built-linux
On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <alex.d...@gmail.com> 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 <alex.d...@gmail.com> 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 <ndesau...@google.com>

>
> >
> > >
> > > Signed-off-by: Alex Dewar <alex.d...@gmail.com>
> > > ---
> > > 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 clang-built-li...@googlegroups.com.
> > > 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

Steven Rostedt

unread,
Aug 18, 2020, 4:20:33 PM8/18/20
to Nick Desaulniers, Alex Dewar, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Ben Segall, Mel Gorman, LKML, clang-built-linux
On Tue, 18 Aug 2020 13:02:26 -0700
Nick Desaulniers <ndesau...@google.com> wrote:

> On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <alex.d...@gmail.com> 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 <alex.d...@gmail.com> 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) <ros...@goodmis.org>

-- Steve

pet...@infradead.org

unread,
Aug 19, 2020, 3:33:15 AM8/19/20
to Nick Desaulniers, Alex Dewar, Ingo Molnar, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, LKML, clang-built-linux
On Tue, Aug 18, 2020 at 01:02:26PM -0700, Nick Desaulniers wrote:
> On Tue, Aug 18, 2020 at 12:57 PM Alex Dewar <alex.d...@gmail.com> 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 <alex.d...@gmail.com> 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 :/
Reply all
Reply to author
Forward
0 new messages