All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: Anton Blanchard <anton@samba.org>
Cc: michael@ellerman.id.au, paulus@samba.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] powerpc: Clear RI and EE at the same time in system call exit
Date: Tue, 29 May 2012 13:07:10 -0500	[thread overview]
Message-ID: <4FC5104E.1000504@freescale.com> (raw)
In-Reply-To: <20120529212010.0152a083@kryten>

On 05/29/2012 06:20 AM, Anton Blanchard wrote:
> 
> In system call exit we currently clear RI and EE separately. An
> mtmsrd is a slow operation and we can save cycles by doing it all
> in one go.
> 
> This does complicate things a bit - we have to be careful to restore
> RI if we branch out before returning to userspace.
> 
> On a POWER7 with virtual cputime disabled this patch improves the
> null system call by 7%.
> 
> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
> 
> Index: linux-build/arch/powerpc/kernel/entry_64.S
> ===================================================================
> --- linux-build.orig/arch/powerpc/kernel/entry_64.S	2012-05-28 18:23:33.374451416 +1000
> +++ linux-build/arch/powerpc/kernel/entry_64.S	2012-05-29 21:18:22.280934940 +1000
> @@ -197,7 +197,16 @@ syscall_exit:
>  	wrteei	0
>  #else
>  	ld	r10,PACAKMSR(r13)
> -	mtmsrd	r10,1
> +	/*
> +	 * 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	r9,MSR_RI
> +	andc	r11,r10,r9
> +	mtmsrd	r11,1
>  #endif /* CONFIG_PPC_BOOK3E */
>  
>  	ld	r9,TI_FLAGS(r12)
> @@ -214,17 +223,6 @@ BEGIN_FTR_SECTION
>  END_FTR_SECTION_IFCLR(CPU_FTR_STCX_CHECKS_ADDRESS)
>  	andi.	r6,r8,MSR_PR
>  	ld	r4,_LINK(r1)
> -	/*
> -	 * Clear RI before restoring r13.  If we are returning to
> -	 * userspace and we take an exception after restoring r13,
> -	 * we end up corrupting the userspace r13 value.
> -	 */
> -#ifdef CONFIG_PPC_BOOK3S
> -	/* No MSR:RI on BookE */
> -	li	r12,MSR_RI
> -	andc	r11,r10,r12
> -	mtmsrd	r11,1			/* clear MSR.RI */
> -#endif /* CONFIG_PPC_BOOK3S */
>  
>  	beq-	1f
>  	ACCOUNT_CPU_USER_EXIT(r11, r12)
> @@ -271,6 +269,7 @@ syscall_enosys:
>  	b	syscall_exit
>  	
>  syscall_exit_work:
> +	mtmsrd	r10,1		/* Restore RI */

That mtmsrd needs an #ifdef CONFIG_PPC_BOOK3S

-Scott

  reply	other threads:[~2012-05-29 18:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-29 11:20 [PATCH] powerpc: Clear RI and EE at the same time in system call exit Anton Blanchard
2012-05-29 18:07 ` Scott Wood [this message]
2012-05-29 22:22   ` Anton Blanchard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FC5104E.1000504@freescale.com \
    --to=scottwood@freescale.com \
    --cc=anton@samba.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=michael@ellerman.id.au \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.