[PATCH V2 04/68] powerpc/mm: Use big endian page table for book3s 64
Benjamin Herrenschmidt
benh at kernel.crashing.org
Mon May 30 07:27:11 AEST 2016
On Sun, 2016-05-29 at 21:03 +1000, Anton Blanchard wrote:
> Hi,
>
> >
> > This enables us to share the same page table code for
> > both radix and hash. Radix use a hardware defined big endian
> > page table
> This is measurably worse (a little over 2% on POWER8) on a futex
> microbenchmark:
That is surprising, do we have any idea what specifically increases the
overhead so significantly ? Does gcc know about ldbrx/stdbrx ? I notice
in our io.h for example we still do manual ld/std + swap because old
processors didn't know these, we should fix that for CONFIG_POWER8 (or
is it POWER7 that brought these ?).
Cheers,
Ben.
> #define _GNU_SOURCE
> #include <unistd.h>
> #include <sys/syscall.h>
> #include <linux/futex.h>
>
> #define ITERATIONS 10000000
>
> #define futex(A, B, C, D, E, F) syscall(__NR_futex, A,
> B, C, D, E, F)
>
> int main(void)
> {
> unsigned long i = ITERATIONS;
>
> while (i--) {
> unsigned int addr = 0;
>
> futex(&addr, FUTEX_WAKE, 1, NULL, NULL, 0);
> }
>
> return 0;
> }
>
> Is there any way to avoid the radix tax here?
>
> Anton
More information about the Linuxppc-dev
mailing list