]> git.baikalelectronics.ru Git - kernel.git/commit
mm: shuffle GFP_* flags
authorAlexey Dobriyan <adobriyan@gmail.com>
Tue, 5 Mar 2019 23:44:18 +0000 (15:44 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Mar 2019 05:07:16 +0000 (21:07 -0800)
commit295337c1ba413e29160d909ac4024fc3b88e9b5c
tree95a190ac9ba693dce12265cad873a7309dd8af36
parent49545dd876d639a5c1b2573946f14490c197afcd
mm: shuffle GFP_* flags

GFP_KERNEL is one of the most used constant but on archs like arm with
fixed length instruction some constants are more equal than the others.
Constants with tightly packed bits can be injected directly into
instruction stream:

   0:   e3a00d33        mov     r0, #3264       ; 0xcc0

Others require multiple instructions or even loading out of instruction
stream:

   0:   e3a000c0        mov     r0, #192        ; 0xc0
   4:   e3400060        movt    r0, #96 ; 0x60

Shuffle GFP_* flags so that GFP_KERNEL/GFP_ATOMIC + __GFP_ZERO bits are
close to each other.

Savings on arm configs are ~0.1%.

Link: http://lkml.kernel.org/r/20190109201838.GA9140@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/gfp.h