From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases
Date: Wed, 1 Jul 2015 09:09:15 +0100 [thread overview]
Message-ID: <20150701080915.GJ7557@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAMuHMdUO4uSWH1Qc0SfDTLuXbiG2N9fq8Tf6j+3RoqVKdPugbA@mail.gmail.com>
On Wed, Jul 01, 2015 at 08:55:57AM +0200, Geert Uytterhoeven wrote:
> On Wed, Jul 1, 2015 at 8:23 AM, Christoph Hellwig <hch@lst.de> wrote:
> >> One useful feature of the ifdef mess as implemented in the patch is
> >> that you could test for whether ioremap_cache() is actually
> >> implemented or falls back to default ioremap(). I think for
> >> completeness archs should publish an ioremap type capabilities mask
> >> for drivers that care... (I can imagine pmem caring), or default to
> >> being permissive if something like IOREMAP_STRICT is not set. There's
> >> also the wrinkle of archs that can only support certain types of
> >> mappings at a given alignment.
> >
> > I think doing this at runtime might be a better idea. E.g. a
> > ioremap_flags with the CACHED argument will return -EOPNOTSUP unless
> > actually implemented. On various architectures different CPUs or
> > boards will have different capabilities in this area.
>
> So it would be the responsibility of the caller to fall back from
> ioremap(..., CACHED) to ioremap(..., UNCACHED)?
> I.e. all drivers using it should be changed...
Another important point here is to define what the properties of the
mappings are. It's no good just saying "uncached".
We've recently been around this over the PMEM driver and the broken
addition of ioremap_wt() on ARM...
By "properties" I mean stuff like whether unaligned accesses permitted,
any kind of atomic access (eg, xchg, cmpxchg, etc).
This matters: on ARM, a mapping suitable for a device does not support
unaligned accesses or atomic accesses - only "memory-like" mappings
support those. However, memory-like mappings are not required to
preserve access size, number of accesses, etc which makes them unsuitable
for device registers.
The problem with ioremap_uncached() in particular is that we have LDD
and other documentation telling people to use it to map device registers,
so we can't define ioremap_uncached() on ARM to have memory-like
properties, and it doesn't support unaligned accesses.
I have a series of patches which fix up 32-bit ARM for the broken
ioremap_wt() stuff that was merged during this merge window, which I
intend to push out into linux-next at some point (possibly during the
merge window, if not after -rc1) which also move ioremap*() out of line
on ARM but more importantly, adds a load of documentation about the
properties of the resulting mapping on ARM.
--
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
next prev parent reply other threads:[~2015-07-01 8:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20150622081028.35954.89885.stgit@dwillia2-desk3.jf.intel.com>
[not found] ` <20150622082427.35954.73529.stgit@dwillia2-desk3.jf.intel.com>
[not found] ` <20150622161002.GB8240@lst.de>
2015-06-30 22:57 ` [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases Dan Williams
2015-07-01 6:23 ` Christoph Hellwig
2015-07-01 6:55 ` Geert Uytterhoeven
2015-07-01 6:59 ` Christoph Hellwig
2015-07-01 7:19 ` Geert Uytterhoeven
2015-07-01 7:28 ` Christoph Hellwig
2015-07-07 9:50 ` Luis R. Rodriguez
2015-07-07 10:13 ` Russell King - ARM Linux
2015-07-07 10:27 ` Geert Uytterhoeven
2015-07-07 16:07 ` Luis R. Rodriguez
2015-07-07 23:10 ` Toshi Kani
2015-07-09 1:40 ` Luis R. Rodriguez
2015-07-09 23:43 ` Toshi Kani
2015-07-01 8:09 ` Russell King - ARM Linux [this message]
2015-07-01 16:47 ` Dan Williams
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=20150701080915.GJ7557@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.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).