On Sun, Sep 15, 2019 at 11:28:10AM +1000, Nicholas Piggin wrote: > Implement the bulk of interrupt return logic in C. The asm return code > must handle a few cases: restoring full GPRs, and emulating stack store. > > The asm return code is moved into 64e for now. The new logic has made > allowance for 64e, but I don't have a full environment that works well > to test it, and even booting in emulated qemu is not great for stress > testing. 64e shouldn't be too far off working with this, given a bit > more testing and auditing of the logic. > > This is slightly faster on a POWER9 (page fault speed increases about > 1.1%), probably due to reduced mtmsrd. > > Signed-off-by: Nicholas Piggin <npig...@gmail.com> ... > diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c > index 24621e7e5033..45c1524b6c9e 100644 > --- a/arch/powerpc/kernel/process.c > +++ b/arch/powerpc/kernel/process.c > @@ -524,6 +524,7 @@ void giveup_all(struct task_struct *tsk) > } > EXPORT_SYMBOL(giveup_all); > > +#ifdef CONFIG_PPC_BOOK3S_64 This fails build on !BOOK3S_64 because restore_fpu and restore_altivec are used exclusively from restore_math which is now BOOK3S_64 only. > /* > * The exception exit path calls restore_math() with interrupts hard disabled > * but the soft irq state not "reconciled". ftrace code that calls > @@ -564,6 +565,7 @@ void notrace restore_math(struct pt_regs *regs) > > regs->msr = msr; > } > +#endif > > static void save_all(struct task_struct *tsk) > {
Thanks Michal