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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev