* [PATCH] sched/idle: Drop !! while calculating 'broadcast'
@ 2014-06-24 4:31 Viresh Kumar
2014-06-24 8:03 ` Peter Zijlstra
2014-07-05 10:43 ` [tip:sched/core] sched/idle: Drop !! while calculating 'broadcast ' tip-bot for Viresh Kumar
0 siblings, 2 replies; 6+ messages in thread
From: Viresh Kumar @ 2014-06-24 4:31 UTC (permalink / raw)
To: mingo, peterz; +Cc: linux-kernel, linaro-kernel, Viresh Kumar
We don't need 'broadcast' to be set to 'zero or one', but to 'zero or non-zero'
and so the extra operation to convert it to 'zero or one' can be skipped.
Also change type of 'broadcast' to unsigned int, i.e. type of
drv->states[*].flags.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
Rebased over: 3.16-rc2.
kernel/sched/idle.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index cf009fb..9f1608f 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -79,7 +79,7 @@ static void cpuidle_idle_call(void)
struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices);
struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
int next_state, entered_state;
- bool broadcast;
+ unsigned int broadcast;
/*
* Check if the idle task must be rescheduled. If it is the
@@ -135,7 +135,7 @@ use_default:
goto exit_idle;
}
- broadcast = !!(drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP);
+ broadcast = drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP;
/*
* Tell the time framework to switch to a broadcast timer
--
2.0.0.rc2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] sched/idle: Drop !! while calculating 'broadcast'
2014-06-24 4:31 [PATCH] sched/idle: Drop !! while calculating 'broadcast' Viresh Kumar
@ 2014-06-24 8:03 ` Peter Zijlstra
2014-06-24 10:48 ` Viresh Kumar
2014-06-24 12:18 ` Mike Galbraith
2014-07-05 10:43 ` [tip:sched/core] sched/idle: Drop !! while calculating 'broadcast ' tip-bot for Viresh Kumar
1 sibling, 2 replies; 6+ messages in thread
From: Peter Zijlstra @ 2014-06-24 8:03 UTC (permalink / raw)
To: Viresh Kumar; +Cc: mingo, linux-kernel, linaro-kernel
On Tue, Jun 24, 2014 at 10:01:01AM +0530, Viresh Kumar wrote:
> We don't need 'broadcast' to be set to 'zero or one', but to 'zero or non-zero'
> and so the extra operation to convert it to 'zero or one' can be skipped.
>
> Also change type of 'broadcast' to unsigned int, i.e. type of
> drv->states[*].flags.
All true; but does it change anything? That is, does your compiler
generate better code because of this?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] sched/idle: Drop !! while calculating 'broadcast'
2014-06-24 8:03 ` Peter Zijlstra
@ 2014-06-24 10:48 ` Viresh Kumar
2014-06-24 12:18 ` Mike Galbraith
1 sibling, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2014-06-24 10:48 UTC (permalink / raw)
To: Peter Zijlstra
Cc: Ingo Molnar, Linux Kernel Mailing List, Lists linaro-kernel
On 24 June 2014 13:33, Peter Zijlstra <peterz@infradead.org> wrote:
> All true; but does it change anything? That is, does your compiler
> generate better code because of this?
Compilers are smart enough now a days and may not perform !!
at all I believe.. And so this patch is more about code clarity ..
I tried comparing results for ARM and got this with/without
this patch ..
$ size ../bexynos/kernel/sched/idle.o
text data bss dec hex filename
690 30 0 720 2d0 ../bexynos/kernel/sched/idle.o
Don't know if some architectures are using somewhat dumb
compilers which might result in better code with this patch :)
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] sched/idle: Drop !! while calculating 'broadcast'
2014-06-24 8:03 ` Peter Zijlstra
2014-06-24 10:48 ` Viresh Kumar
@ 2014-06-24 12:18 ` Mike Galbraith
2014-06-24 12:35 ` Viresh Kumar
1 sibling, 1 reply; 6+ messages in thread
From: Mike Galbraith @ 2014-06-24 12:18 UTC (permalink / raw)
To: Peter Zijlstra; +Cc: Viresh Kumar, mingo, linux-kernel, linaro-kernel
On Tue, 2014-06-24 at 10:03 +0200, Peter Zijlstra wrote:
> On Tue, Jun 24, 2014 at 10:01:01AM +0530, Viresh Kumar wrote:
> > We don't need 'broadcast' to be set to 'zero or one', but to 'zero or non-zero'
> > and so the extra operation to convert it to 'zero or one' can be skipped.
> >
> > Also change type of 'broadcast' to unsigned int, i.e. type of
> > drv->states[*].flags.
>
> All true; but does it change anything? That is, does your compiler
> generate better code because of this?
x86_64 gcc-4.8.3 made 1 less instruction, a shift.
-Mike
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] sched/idle: Drop !! while calculating 'broadcast'
2014-06-24 12:18 ` Mike Galbraith
@ 2014-06-24 12:35 ` Viresh Kumar
0 siblings, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2014-06-24 12:35 UTC (permalink / raw)
To: Mike Galbraith
Cc: Peter Zijlstra, Ingo Molnar, Linux Kernel Mailing List,
Lists linaro-kernel
On 24 June 2014 17:48, Mike Galbraith <umgwanakikbuti@gmail.com> wrote:
> x86_64 gcc-4.8.3 made 1 less instruction, a shift.
I thought about doing this test for x86 as well, and over-estimated
compilers intelligence. I must have done it :)
And finally this patch is worth more than I originally estimated :)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [tip:sched/core] sched/idle: Drop !! while calculating 'broadcast '
2014-06-24 4:31 [PATCH] sched/idle: Drop !! while calculating 'broadcast' Viresh Kumar
2014-06-24 8:03 ` Peter Zijlstra
@ 2014-07-05 10:43 ` tip-bot for Viresh Kumar
1 sibling, 0 replies; 6+ messages in thread
From: tip-bot for Viresh Kumar @ 2014-07-05 10:43 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, viresh.kumar, tglx
Commit-ID: 89abb5ad10ae8ac3405e635ac80815f781c8b8e9
Gitweb: http://git.kernel.org/tip/89abb5ad10ae8ac3405e635ac80815f781c8b8e9
Author: Viresh Kumar <viresh.kumar@linaro.org>
AuthorDate: Tue, 24 Jun 2014 10:01:01 +0530
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Sat, 5 Jul 2014 11:17:31 +0200
sched/idle: Drop !! while calculating 'broadcast'
We don't need 'broadcast' to be set to 'zero or one', but to 'zero or non-zero'
and so the extra operation to convert it to 'zero or one' can be skipped.
Also change type of 'broadcast' to unsigned int, i.e. type of
drv->states[*].flags.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: linaro-kernel@lists.linaro.org
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/0dfbe2976aa108c53e08d3477ea90f6360c1f54c.1403584026.git.viresh.kumar@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
kernel/sched/idle.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index cf009fb..9f1608f 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -79,7 +79,7 @@ static void cpuidle_idle_call(void)
struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices);
struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
int next_state, entered_state;
- bool broadcast;
+ unsigned int broadcast;
/*
* Check if the idle task must be rescheduled. If it is the
@@ -135,7 +135,7 @@ use_default:
goto exit_idle;
}
- broadcast = !!(drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP);
+ broadcast = drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP;
/*
* Tell the time framework to switch to a broadcast timer
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-07-05 10:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-24 4:31 [PATCH] sched/idle: Drop !! while calculating 'broadcast' Viresh Kumar
2014-06-24 8:03 ` Peter Zijlstra
2014-06-24 10:48 ` Viresh Kumar
2014-06-24 12:18 ` Mike Galbraith
2014-06-24 12:35 ` Viresh Kumar
2014-07-05 10:43 ` [tip:sched/core] sched/idle: Drop !! while calculating 'broadcast ' tip-bot for Viresh Kumar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox