Subject: [PATCH] arm64: restore get_current() optimisation

From: [email-masked] (Mark Rutland)
Date: Thu, 2 Mar 2017 12:40:08 +0000

On Thu, Mar 02, 2017 at 12:54:24PM +0100, Andreas F?rber wrote:
> Hi Mark,
> 
> Am 03.01.2017 um 19:27 schrieb Mark Rutland:
> > Commit c02433dd6de32f04 ("arm64: split thread_info from task stack")
> > inverted the relationship between get_current() and
> > current_thread_info(), with sp_el0 now holding the current task_struct
> > rather than the current thead_info. The new implementation of
> 
> "thread_info"?

struct thread_info, as returned by current_thread_info().

> > get_current() prevents the compiler from being able to optimize repeated
> > calls to either, resulting in a noticeable penalty in some
> > microbenchmarks.
> > 
> > This patch restores the previous optimisation by implementing
> > get_current() in the same way as our old current_thread_info(), using a
> > non-volatile asm statement.
> > 
> > Signed-off-by: Mark Rutland <[email-masked]>
> > Cc: Will Deacon <[email-masked]>
> > Cc: Catalin Marinas <[email-masked]>
> > Reported-by: Davidlohr Bueso <[email-masked]>
> 
> Should this get a Fixes: c02433dd6de32f04 ("arm64: split thread_info
> from task stack") header?

Both c02433dd6de32f04 and this patch are already in mainline.

Thanks,
Mark.