Messages in this thread | | | Date | Tue, 9 Oct 2018 20:54:30 +1000 | From | Nicholas Piggin <> | Subject | Re: [PATCH v6 0/9] powerpc: Switch to CONFIG_THREAD_INFO_IN_TASK |
| |
On Mon, 08 Oct 2018 20:59:56 +1100 Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> On Mon, 2018-10-08 at 09:16 +0000, Christophe Leroy wrote: > > The purpose of this serie is to activate CONFIG_THREAD_INFO_IN_TASK which > > moves the thread_info into task_struct. > > We need to make sure we don't have code that assumes that we don't take > faults on TI access. > > On ppc64, the stack SLB entries are bolted, which means the TI is too. > > We might have code that assumes that we don't get SLB faults when > accessing TI. If not, we're fine but that needs a close look.
Oh, we do. I think the entry side might be okay, but on exit we have at least one (in syscall and interrupt exit both):
/* * Disable interrupts so current_thread_info()->flags can't change, * and so that we don't get interrupted after loading SRR0/1. */ #ifdef CONFIG_PPC_BOOK3E wrteei 0 #else /* * For performance reasons we clear RI the same time that we * clear EE. We only need to clear RI just before we restore r13 * below, but batching it with EE saves us one expensive mtmsrd call. * We have to be careful to restore RI if we branch anywhere from * here (eg syscall_exit_work). */ li r11,0 mtmsrd r11,1 #endif /* CONFIG_PPC_BOOK3E */
ld r9,TI_FLAGS(r12)
So taking an SLB there will cause an unrecoverable.
I think we can probably get rid of that optimization for now. I've found for non-trivial syscalls it's often a loss if FP was used. I have a couple of different options I'm working on to get rid of the mtmsrd entirely we can go with instead (but I don't think those have to come before Christophe's patch).
Thanks, Nick
| |