powerpc: Avoid taking a data miss on every userspace instruction miss
Michael Ellerman
patch-notifications at ellerman.id.au
Thu Apr 6 23:06:03 AEST 2017
On Mon, 2017-04-03 at 06:41:02 UTC, Anton Blanchard wrote:
> From: Anton Blanchard <anton at samba.org>
>
> Early on in do_page_fault() we call store_updates_sp(), regardless of
> the type of exception. For an instruction miss this doesn't make
> sense, because we only use this information to detect if a data miss
> is the result of a stack expansion instruction or not.
>
> Worse still, it results in a data miss within every userspace
> instruction miss handler, because we try and load the very instruction
> we are about to install a pte for!
>
> A simple exec microbenchmark runs 6% faster on POWER8 with this fix:
>
> #include <stdlib.h>
> #include <stdio.h>
> #include <unistd.h>
>
> int main(int argc, char *argv[])
> {
> unsigned long left = atol(argv[1]);
> char leftstr[16];
>
> if (left-- == 0)
> return 0;
>
> sprintf(leftstr, "%ld", left);
> execlp(argv[0], argv[0], leftstr, NULL);
> perror("exec failed\n");
>
> return 0;
> }
>
> Pass the number of iterations on the command line (eg 10000) and time
> how long it takes to execute.
>
> Signed-off-by: Anton Blanchard <anton at samba.org>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/a7a9dcd882a67b68568868b988289f
cheers
More information about the Linuxppc-dev
mailing list