linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: benh@kernel.crashing.org
To: Dan Malek <dan@embeddededge.com>, <acurtis@onz.com>
Cc: Paul Mackerras <paulus@samba.org>, <linuxppc-dev@lists.linuxppc.org>
Subject: Re: eieio rule-of-thumb?
Date: Thu, 23 May 2002 19:44:25 +0100	[thread overview]
Message-ID: <20020523184426.19045@mailhost.mipsys.com> (raw)
In-Reply-To: <3CED26BB.2080700@embeddededge.com>


>
>What doesn't make sense is why we use eieio at all......All of the
>mapped I/O space is marked uncached 'guarded' in the PTE, which enforces
>in-order load/store operations.  This should also prevent store gathering in
>bridges since they shouldn't see a burst write from a processor store
>operation.

Regarding eieio on uncached, Paul or Anton can tell you more about it,
I think there is still a case where guarded doesn't prevent a load
from moving accross a store.

Regarding the bridge, the while point of store gathering in bridges
is to make bursts when the CPU doesn't. That's what most bridges call
'write combine'. It's done, for example, but UniNorth rev >= 1.5 on
macs when targeting the AGP bus.

>If you want higher peformance programmed I/O access, then you should cache
>some of the space, and at that time you must use eieio if there are cached
>areas subject to out of order access problems.

And beware that eieio won't be a barrier between cacheable and non cacheable
space. So if you need your cacheable stores to be complete before you write
to non-cacheable space (a register for example), you need to use sync.

>On the 8xx and 8260 family, all of the I/O (including the internal memory
>space) is mapped uncached and guarded.  I've never used eieio nor seen
>any reason it was necessary.

I think it is on desktop CPUs, but again, here, Paul and Anton have more
knowledge than I do.

>Where you will see problems, especially on 4xx and potentially on 8xx,
>is the use of "regular" memory for control structures and special registers
>for other control.  You can write to memory, which gets stuck in pipelines,
>then whack a DCR (which seems to have some magical fast path update) causing
>the peripheral to start up before the pipelined writes have made it to
>memory.  I'm wondering if we aren't just lucky with the eieio side effects
>when a 'sync' would be the logically correct operator.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

  parent reply	other threads:[~2002-05-23 18:44 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-22  4:43 eieio rule-of-thumb? Allen Curtis
2002-05-22  6:01 ` Paul Mackerras
2002-05-23  2:25   ` Allen Curtis
2002-05-23  4:26     ` Paul Mackerras
2002-05-23 13:38       ` Allen Curtis
2002-05-23 13:54         ` Dan Brennan
2002-05-23 14:42           ` Allen Curtis
2002-05-23 17:28         ` Dan Malek
2002-05-23 17:45           ` Chris Thomson
2002-05-23 19:02             ` Dan Malek
2002-05-23 22:36             ` Paul Mackerras
2002-05-23 18:44           ` benh [this message]
2002-05-23 18:02             ` Dan Malek
2002-05-23 22:58               ` Paul Mackerras

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=20020523184426.19045@mailhost.mipsys.com \
    --to=benh@kernel.crashing.org \
    --cc=acurtis@onz.com \
    --cc=dan@embeddededge.com \
    --cc=linuxppc-dev@lists.linuxppc.org \
    --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 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).