]> git.karo-electronics.de Git - karo-tx-linux.git/commit
sched/fair: Optimize __update_load_avg()
authorPeter Zijlstra <peterz@infradead.org>
Mon, 7 Sep 2015 13:09:15 +0000 (15:09 +0200)
committerIngo Molnar <mingo@kernel.org>
Sun, 13 Sep 2015 07:53:00 +0000 (09:53 +0200)
commit6115c793ca1a6e39c7c15159cbb47baa04009cb8
treefd17aa0886338f8ea3f2990b66f8e561b10c430d
parent54a21385facbdcd89a78e8c3e5025f04c5f2b59c
sched/fair: Optimize __update_load_avg()

Prior to this patch; the line:

scaled_delta_w = (delta_w * 1024) >> 10;

which is the result of the default arch_scale_freq_capacity()
function, turns into:

    1b03: 49 89 d1              mov    %rdx,%r9
    1b06: 49 c1 e1 0a           shl    $0xa,%r9
    1b0a: 49 c1 e9 0a           shr    $0xa,%r9

Which is silly; when made unsigned int, GCC recognises this as
pointless ops and fails to emit them (confirmed on 4.9.3 and 5.1.1).

Furthermore, afaict unsigned is actually the correct type for these
fields anyway, as we've explicitly ruled out negative delta's earlier
in this function.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/fair.c