From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jiri Slaby <jirislaby@gmail.com>, Pekka Paalanen <pq@iki.fi>,
linux-kernel@vger.kernel.org
Subject: Re: Do cpu-endian MMIO accessors exist?
Date: Wed, 22 Jul 2009 00:01:59 +0200 [thread overview]
Message-ID: <200907220001.59388.arnd@arndb.de> (raw)
In-Reply-To: <20090721213333.GA27202@infradead.org>
On Tuesday 21 July 2009, Christoph Hellwig wrote:
> Why would you want to do that? That just means a useless byteswap.
> We really should have a generic native-endian MMIO-access API as there
> is quite a bit of hardware with features like that, and currently we
> have a miriad of hacks using __raw_* and manual barriers, the ppc
> specific accessors and god knows what.
The byte swap on powerpc I/O instructions is practically free
on all the interesting CPUs, and on the others it is still
swamped by the overhead of the synchronization. If you care
about the latency of MMIO instructions, going to explicit
synchronization would help much more, saving hundreds of
cycles per I/O rather than one cycle for a saved byte swap.
The powerpc in_le32 style functions are a completely different
story, they are basically defined to operate only on on-chip
components, while ioread32 and readl do work on PCI devices.
No portable code should ever use the __raw_* functions and
architecture specific barriers.
It would of course be easy to just define an API extension
to ioread along the lines of
#ifdef __BIG_ENDIAN
#define ioread16_native ioread16be
#define ioread32_native ioread32be
#define iowrite16_native iowrite16be
#define iowrite32_native iowrite32be
#else
#define ioread16_native ioread16
#define ioread32_native ioread32
#define iowrite16_native iowrite16
#define iowrite32_native iowrite32
#endif
but I'm not yet convinced that there is a potential user that
should not just be fixed in a different way.
Arnd <><
next prev parent reply other threads:[~2009-07-21 22:02 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-21 20:42 Do cpu-endian MMIO accessors exist? Pekka Paalanen
2009-07-21 20:59 ` Jiri Slaby
2009-07-21 21:15 ` Arnd Bergmann
2009-07-21 21:33 ` Christoph Hellwig
2009-07-21 22:01 ` Arnd Bergmann [this message]
2009-07-22 17:11 ` Pekka Paalanen
2009-07-22 21:19 ` Arnd Bergmann
2009-07-23 16:23 ` Pekka Paalanen
2009-07-22 21:20 ` Arnd Bergmann
2009-07-21 21:56 ` Jiri Slaby
2009-07-21 22:05 ` Arnd Bergmann
2009-07-22 7:24 ` Jiri Slaby
2009-07-22 8:35 ` Arnd Bergmann
2009-07-22 8:43 ` Alan Cox
2009-07-22 13:44 ` Arnd Bergmann
2009-07-27 5:00 ` Paul Mundt
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=200907220001.59388.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=hch@infradead.org \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pq@iki.fi \
/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