Re: remove the last set_fs() in common code, and remove it for x86 and powerpc

From: Christophe Leroy
Date: Tue Aug 18 2020 - 14:23:28 EST




Le 18/08/2020 à 20:05, Christoph Hellwig a écrit :
On Tue, Aug 18, 2020 at 07:46:22PM +0200, Christophe Leroy wrote:
I gave it a go on my powerpc mpc832x. I tested it on top of my newest
series that reworks the 32 bits signal handlers (see
https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=196278) with
the microbenchmark test used is that series.

With KUAP activated, on top of signal32 rework, performance is boosted as
system time for the microbenchmark goes from 1.73s down to 1.56s, that is
10% quicker

Surprisingly, with the kernel as is today without my signal's series, your
series degrades performance slightly (from 2.55s to 2.64s ie 3.5% slower).


I also observe, in both cases, a degradation on

dd if=/dev/zero of=/dev/null count=1M

Without your series, it runs in 5.29 seconds.
With your series, it runs in 5.82 seconds, that is 10% more time.

That's pretty strage, I wonder if some kernel text cache line
effects come into play here?

The kernel access side is only used in slow path code, so it should
not make a difference, and the uaccess code is simplified and should be
(marginally) faster.

Btw, was this with the __{get,put}_user_allowed cockup that you noticed
fixed?


Yes it is with the __get_user_size() replaced by __get_user_size_allowed().

Christophe