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
next prev parent 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.