From: Jesse Barnes <jbarnes@engr.sgi.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Matthew Wilcox <willy@debian.org>,
James Bottomley <James.Bottomley@steeleye.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Linux Arch list <linux-arch@vger.kernel.org>,
Al Viro <viro@parcelfarce.linux.theplanet.co.uk>,
Andrew Morton <akpm@osdl.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
"David S. Miller" <davem@redhat.com>,
Jeff Garzik <jgarzik@pobox.com>
Subject: Re: RFC: being more anal about iospace accesses..
Date: Thu, 16 Sep 2004 11:52:54 -0700 [thread overview]
Message-ID: <200409161152.54691.jbarnes@engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0409161110070.2333@ppc970.osdl.org>
On Thursday, September 16, 2004 11:21 am, Linus Torvalds wrote:
> It's literally only the sn2 _platform_ that does something stupid. In
> other words, it's not ia64 that is broken (surprise surprise - you never
> expected me to have said anything good about ia64), it's literally the SN2
> platform that seems broken.
No, it's just the only smart platform. Apparently we're the only ones who
realized that most PIO reads do not rely on prior DMA being complete (and
that it's expensive to make sure that they do), so we optimized that out of
our hardware. Only interrupts will guarantee DMA completion on SGI
platforms.
> And quite frankly, even than I'm not sure that it's the hw platform itself
> that is broken, it might well just be the architecture code. For some
> reason the SN2 code does:
>
> /*
> * The following routines are SN Platform specific, called when
> * a reference is made to readX/writeX set macros. SN Platform
> * readX set of macros ensures that Posted DMA writes on the
> * Bridge is flushed.
> *
> * The routines should be self explainatory.
> */
>
> static inline unsigned char
> ___sn_readb (void *addr)
> {
> unsigned char val;
>
> val = *(volatile unsigned char *)addr;
> __sn_mf_a();
> sn_dma_flush((unsigned long)addr);
> return val;
> }
>
> in other words, it looks like there's a broken PCI "bridge" involved, that
> just doesn't follow the specs, and does bad things.
Correct, it doesn't follow the specs. See above.
> I'd suggest to them to unbreak their silly "readb()" implementation, and
> (a) talk to their hw engineers
> (b) add explicit flush code to the 5 (or so) drivers that they really
> care about. Let's face it, I doubt there are that many different
> devices that people use on the SN2. Make a nice "synchronize"
> interface that you could architect, and make conforming platforms
> just make it into a no-op.
>
> I'd hate to add complex new interfaces just because some hardware is
> broken. Don't make the generic interfaces suffer for broken hardware.
Sure, that's the way I'd like to go, but that's a dangerous route. Devices
that want to do a PIO read to see if their DMA is complete will work most of
the time, but you'll get occasional data corruption. IOW, specifying reads
that you know *aren't* dependent is much easier to do, and safer. It also
allows SGI hardware to run all current drivers w/o modification, which is
nice.
If you want to explicitly document that the new io* interface doesn't
guarantee DMA coherence, great, we can start from scratch with a good
implementation that has an explicit flush mechanism.
Thanks,
Jesse
next prev parent reply other threads:[~2004-09-16 18:53 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-08 22:57 RFC: being more anal about iospace accesses Linus Torvalds
2004-09-08 23:07 ` David S. Miller
2004-09-08 23:25 ` Linus Torvalds
2004-09-09 1:19 ` Linus Torvalds
2004-09-09 4:36 ` David S. Miller
2004-09-09 5:56 ` Richard Henderson
2004-09-09 5:04 ` viro
2004-09-09 5:05 ` David S. Miller
2004-09-09 5:13 ` Linus Torvalds
2004-09-09 6:08 ` viro
2004-09-09 8:27 ` Geert Uytterhoeven
2004-09-09 6:23 ` David Woodhouse
2004-09-09 13:14 ` Alan Cox
2004-09-11 6:09 ` Linus Torvalds
2004-09-11 6:42 ` Anton Blanchard
2004-09-11 7:26 ` Benjamin Herrenschmidt
2004-09-11 7:29 ` Geert Uytterhoeven
2004-09-11 7:23 ` Benjamin Herrenschmidt
2004-09-11 14:42 ` Alan Cox
2004-09-15 15:03 ` Linus Torvalds
2004-09-15 19:02 ` Geert Uytterhoeven
2004-09-15 19:16 ` Linus Torvalds
2004-09-15 19:40 ` Matthew Wilcox
2004-09-15 20:10 ` Linus Torvalds
2004-09-15 20:17 ` Linus Torvalds
2004-09-16 12:17 ` David Woodhouse
2004-09-16 13:52 ` Linus Torvalds
2004-09-15 20:20 ` Russell King
2004-09-15 20:34 ` Linus Torvalds
2004-09-15 20:51 ` Linus Torvalds
2004-09-15 22:38 ` James Bottomley
2004-09-16 2:33 ` Matthew Wilcox
2004-09-16 4:28 ` Linus Torvalds
2004-09-16 4:57 ` Benjamin Herrenschmidt
2004-09-16 4:58 ` Benjamin Herrenschmidt
2004-09-16 13:41 ` Matthew Wilcox
2004-09-16 18:21 ` Linus Torvalds
2004-09-16 18:52 ` Jesse Barnes [this message]
2004-09-16 19:09 ` Linus Torvalds
2004-09-16 20:02 ` Jesse Barnes
2004-09-16 20:37 ` James Bottomley
2004-09-16 20:42 ` Jesse Barnes
2004-09-16 21:37 ` Grant Grundler
2004-09-16 20:04 ` David S. Miller
2004-09-16 20:13 ` Jeff Garzik
2004-09-16 20:45 ` David S. Miller
2004-09-16 20:20 ` Jesse Barnes
2004-09-17 5:17 ` Benjamin Herrenschmidt
2004-09-17 15:30 ` Jesse Barnes
2004-09-16 19:01 ` Linus Torvalds
2004-09-16 19:13 ` Jeff Garzik
2004-09-16 19:50 ` Linus Torvalds
2004-09-16 20:07 ` Alan Cox
2004-09-17 5:44 ` Benjamin Herrenschmidt
2004-09-17 5:20 ` Benjamin Herrenschmidt
2004-09-17 15:03 ` Linus Torvalds
2004-09-16 22:30 ` Matthew Wilcox
2004-09-16 22:42 ` Linus Torvalds
2004-09-16 22:46 ` Jeff Garzik
2004-09-16 23:15 ` Linus Torvalds
2004-09-16 23:30 ` Jeff Garzik
2004-09-16 23:43 ` Linus Torvalds
2004-09-17 12:44 ` Matthew Wilcox
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=200409161152.54691.jbarnes@engr.sgi.com \
--to=jbarnes@engr.sgi.com \
--cc=James.Bottomley@steeleye.com \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=davem@redhat.com \
--cc=geert@linux-m68k.org \
--cc=jgarzik@pobox.com \
--cc=linux-arch@vger.kernel.org \
--cc=torvalds@osdl.org \
--cc=viro@parcelfarce.linux.theplanet.co.uk \
--cc=willy@debian.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