From: Paul Mackerras <paulus@samba.org>
To: "Moffett, Kyle D" <Kyle.D.Moffett@boeing.com>
Cc: "B04825@freescale.com" <B04825@freescale.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"paul.gortmaker@windriver.com" <paul.gortmaker@windriver.com>,
"scottwood@freescale.com" <scottwood@freescale.com>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [RFC PATCH 0/2] powerpc: CPU cache op cleanup
Date: Wed, 16 Nov 2011 15:40:32 +1100 [thread overview]
Message-ID: <20111116044032.GA26476@bloggs.ozlabs.ibm.com> (raw)
In-Reply-To: <022078B9-CD41-4D24-B44A-F85256A69D0A@boeing.com>
On Tue, Nov 15, 2011 at 04:45:18PM -0600, Moffett, Kyle D wrote:
> On Nov 15, 2011, at 17:29, Benjamin Herrenschmidt wrote:
> > On Mon, 2011-11-14 at 21:32 -0500, Kyle Moffett wrote:
> >> Unfortunately, I've been staring at PPC asm for long enough that I
> >> have a migraine headache and I'm going to have to stop here for now.
> >> If somebody else wants to tackle fixing up the 32-bit copy_page() and
> >> __copy_tofrom_user() routines it would be highly appreciated.
> >
> > Yeah that's the one everybody's avoiding :-)
> >
> > What about my idea of instead compiling it multiple times with a
> > different size and fixing up the branch to call the right one ?
>
> I guess that's doable, although I have to admit that idea almost gives
> me more of a headache than trying to fix up the 32-bit ASM.
>
> One thing that bothers me in particular is that both 32/64 versions of
> __copy_tofrom_user() are dramatically overcomplicated for what they
> ought to be doing.
>
> It would seem that if we get a page fault during an unaligned copy, we
> ought to just give up and fall back to a simple byte-by-byte copy loop
> from wherever we left off. That would eliminate 90% of the ugly
> special cases without actually hurting performance, right?
That's basically what we do, IIRC, and most of the complexity comes
from working out where we were up to. We could probably use a simpler
approximation that means we might copy some bytes twice. In fact the
greatest simplification would probably be to implement range entries
in the exception table so we can just have one entry for all the loads
and stores instead of an entry for each individual load and store.
> For a page-fault during a cacheline-aligned copy, we should be able to
> handle the exception and retry from the last cacheline without much
> logic, again with good performance.
>
> With that said, I'm curious about the origin of the PPC32 ASM. In
> particular, it looks like it was generated by GCC at some point in the
> distant past, and I'm wondering if there's a good way to rewrite that
> file in C and trick GCC into generating the relevant exception tables
> for it?
Why do you think it was generated by gcc? I wrote the original
version, but I think it got extended and macro-ized by others.
Paul.
next prev parent reply other threads:[~2011-11-16 4:40 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-20 4:56 [RFC PATCH] powerpc: 85xx: Make e500/e500v2 depend on !E500MC Baruch Siach
2011-07-12 4:15 ` Baruch Siach
2011-07-28 19:56 ` Tabi Timur-B04825
2011-07-28 20:02 ` Timur Tabi
2011-08-01 5:02 ` Baruch Siach
2011-07-28 20:20 ` Scott Wood
2011-08-01 4:59 ` Baruch Siach
2011-08-01 5:12 ` [PATCH] powerpc: 85xx: separate e500 from e500mc Baruch Siach
2011-08-08 9:07 ` [PATCH v2] " Baruch Siach
2011-08-08 19:42 ` Scott Wood
2011-08-10 4:43 ` Baruch Siach
2011-08-10 5:21 ` [PATCH v3] " Baruch Siach
2011-08-10 15:39 ` Paul Gortmaker
2011-08-10 16:01 ` Scott Wood
2011-08-10 16:40 ` Paul Gortmaker
2011-11-10 0:03 ` [RFC PATCH 00/17] powerpc/e500: " Kyle Moffett
2011-11-10 13:59 ` Kumar Gala
2011-11-10 16:17 ` Moffett, Kyle D
2011-11-10 16:30 ` Kumar Gala
2011-11-10 16:54 ` Scott Wood
2011-11-11 0:38 ` Moffett, Kyle D
2011-11-11 4:40 ` Benjamin Herrenschmidt
2011-11-15 2:32 ` [RFC PATCH 0/2] powerpc: CPU cache op cleanup Kyle Moffett
2011-11-15 22:29 ` Benjamin Herrenschmidt
2011-11-15 22:45 ` Moffett, Kyle D
2011-11-15 23:46 ` Benjamin Herrenschmidt
2011-11-16 0:25 ` Moffett, Kyle D
2011-11-16 4:40 ` Paul Mackerras [this message]
2011-11-16 20:52 ` Moffett, Kyle D
2011-11-15 2:32 ` [RFC PATCH 1/2] powerpc: Remove duplicate cacheable_memcpy/memzero functions Kyle Moffett
2011-11-15 22:31 ` Benjamin Herrenschmidt
2011-11-15 2:32 ` [RFC PATCH 2/2] WIP: PowerPC cache cleanup Kyle Moffett
2011-11-15 2:36 ` [RFC PATCH 00/17] powerpc/e500: separate e500 from e500mc Moffett, Kyle D
2011-11-15 2:41 ` Tabi Timur-B04825
2011-11-15 3:40 ` Kyle Moffett
2011-11-15 22:41 ` Benjamin Herrenschmidt
2011-11-10 0:06 ` Kyle Moffett
2011-11-10 0:06 ` [RFC PATCH 01/17] powerpc/mpic: Fix bogus CONFIG_BOOKE conditional Kyle Moffett
2011-11-10 13:33 ` Kumar Gala
2011-11-10 0:07 ` [RFC PATCH 02/17] powerpc: Split up PHYS_64BIT config option to fix "select" issues Kyle Moffett
2011-11-10 13:36 ` Kumar Gala
2011-11-10 14:04 ` Timur Tabi
2011-11-10 16:31 ` Moffett, Kyle D
2011-11-10 16:50 ` Timur Tabi
2011-11-11 4:50 ` Benjamin Herrenschmidt
2011-11-11 13:12 ` Tabi Timur-B04825
2011-11-10 0:07 ` [RFC PATCH 03/17] fsl_rio: Remove FreeScale e500 conditionals Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 04/17] powerpc: Allow multiple machine-check handlers Kyle Moffett
2011-11-10 13:37 ` Kumar Gala
2011-11-10 16:33 ` Moffett, Kyle D
2011-11-10 0:07 ` [RFC PATCH 05/17] powerpc/e500: Remove unused "default e500" from CPU table Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 06/17] powerpc/e500: Split FreeScale e500v1/v2 and e500mc config options Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 07/17] powerpc/e200: Rename CONFIG_E200 => CONFIG_FSL_E200 Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 08/17] powerpc/e500: Remove conditional "lwsync" substitution Kyle Moffett
2011-11-10 13:40 ` Kumar Gala
2011-11-10 16:31 ` Scott Wood
2011-11-10 16:42 ` Kumar Gala
2011-11-10 17:03 ` Scott Wood
2011-11-10 20:27 ` Moffett, Kyle D
2011-11-10 20:34 ` Kumar Gala
2011-11-11 4:45 ` Benjamin Herrenschmidt
2011-11-11 4:43 ` Benjamin Herrenschmidt
2011-11-10 0:07 ` [RFC PATCH 09/17] powerpc/e500: Split idle handlers for e500v1/v2 and e500mc Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 10/17] powerpc/e500: Fix up the last references to CONFIG_PPC_E500MC Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 11/17] powerpc/e500: Use the correct assembler flags for e500mc and e5500 Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 12/17] powerpc/e500: Separate e500mc CPU table entries from e500v1/e500v2 Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 13/17] powerpc/e500: Add a new CONFIG_FSL_E5500 option for the e5500 Kyle Moffett
2011-11-10 13:46 ` Kumar Gala
2011-11-10 16:49 ` Scott Wood
2011-11-10 0:07 ` [RFC PATCH 14/17] powerpc/e500: Don't make kgdb use e500v1/e500v2 registers on e500mc Kyle Moffett
2011-11-10 16:46 ` Scott Wood
2011-11-10 0:07 ` [RFC PATCH 15/17] powerpc/e500: Fix up all remaining code uses of CONFIG_E500 Kyle Moffett
2011-11-10 0:07 ` [RFC PATCH 16/17] powerpc/e500: Make __setup_cpu_{e200, e500, e500mc, e5500} optional Kyle Moffett
2011-11-10 16:47 ` [RFC PATCH 16/17] powerpc/e500: Make __setup_cpu_{e200,e500,e500mc,e5500} optional Scott Wood
2011-11-10 18:52 ` [RFC PATCH 16/17] powerpc/e500: Make __setup_cpu_{e200, e500, e500mc, e5500} optional Kumar Gala
2011-11-10 0:07 ` [RFC PATCH 17/17] powerpc/e500: Finally remove "CONFIG_E500" Kyle Moffett
2011-10-24 6:00 ` [PATCH v3] powerpc: 85xx: separate e500 from e500mc Baruch Siach
2011-07-29 7:23 ` [RFC PATCH] powerpc: 85xx: Make e500/e500v2 depend on !E500MC Baruch Siach
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=20111116044032.GA26476@bloggs.ozlabs.ibm.com \
--to=paulus@samba.org \
--cc=B04825@freescale.com \
--cc=Kyle.D.Moffett@boeing.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paul.gortmaker@windriver.com \
--cc=scottwood@freescale.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).