Thread (45 messages) 45 messages, 6 authors, 2020-02-19

Re: [RFC PATCH v2 05/10] lib: vdso: inline do_hres()

From: Andy Lutomirski <luto@kernel.org>
Date: 2019-12-24 02:29:55
Also in: linux-arm-kernel, linux-mips, lkml

On Mon, Dec 23, 2019 at 6:31 AM Christophe Leroy
[off-list ref] wrote:
do_hres() is called from several places, so GCC doesn't inline
it at first.

do_hres() takes a struct __kernel_timespec * parameter for
passing the result. In the 32 bits case, this parameter corresponds
to a local var in the caller. In order to provide a pointer
to this structure, the caller has to put it in its stack and
do_hres() has to write the result in the stack. This is suboptimal,
especially on RISC processor like powerpc.

By making GCC inline the function, the struct __kernel_timespec
remains a local var using registers, avoiding the need to write and
read stack.

The improvement is significant on powerpc.
I'm okay with it, mainly because I don't expect many workloads to have
more than one copy of the code hot at the same time.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help