On Wed, Mar 11, 2020 at 6:26 PM Catalin Marinas <catalin.marinas@xxxxxxx> wrote: > On Wed, Mar 11, 2020 at 05:59:53PM +0100, Arnd Bergmann wrote: > > On Wed, Mar 11, 2020 at 3:29 PM Catalin Marinas <catalin.marinas@xxxxxxx> wrote: > > Do you have an estimate of how long writing to TTBR0_64 takes on Cortex-A7 > > and A15, respectively? > > I don't have numbers but it's usually not cheap since you need an ISB to > synchronise the context after TTBR0 update (basically flushing the > pipeline). Ok. > > Another way might be to use a use a temporary buffer that is already > > mapped, and add a memcpy() through L1-cache to reduce the number > > of ttbr0 changes. The buffer would probably have to be on the stack, > > which limits the size, but for large copies get_user_pages()+memcpy() > > may end up being faster anyway. > > IIRC, the x86 attempt from Ingo some years ago was using > get_user_pages() for uaccess. Depending on the size of the buffer, this > may be faster than copying twice. I guess the tradeoffs for that were rather different, as x86 back then had no ASIDs, so changing the page tables required a full TLB flush. Arnd