Messages in this thread | | | Subject | Re: [RFC PATCH v2 12/13] powerpc/kernel: Do not inconditionally save non volatile registers on system call | From | Christophe Leroy <> | Date | Mon, 6 Apr 2020 20:18:29 +0200 |
| |
Le 06/04/2020 à 03:25, Nicholas Piggin a écrit : > Christophe Leroy's on April 6, 2020 3:44 am: >> Before : 347 cycles on null_syscall >> After : 327 cycles on null_syscall > > The problem I had doing this is that signal delivery wnats full regs, > and you don't know if you have a signal pending ahead of time if you > have interrupts enabled. > > I began to try bailing out back to asm to save nvgprs and call again. > I think that can be made to work, but it is more complication in asm, > and I soon found that 64s CPUs don't care about NVGPRs too much so it's > nice to get rid of the !fullregs state.
I tried a new way in v3, please have a look. I split syscall_exit_prepare() in 3 parts and the result is unexpected: it is better than before the series (307 cycles now versus 311 cycles with full ASM syscall entry/exit).
> > Possibly another approach would be to leave interrupts disabled for the > case where you have no work to do. You could create a small > syscall_exit_prepare_nowork fastpath for that case for 32-bit, perhaps? > > Thanks, > Nick >
Christophe
| |