From: "Luis R. Rodriguez" <mcgrof@suse.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com,
linux-arch@vger.kernel.org, tony.luck@intel.com,
linux@arm.linux.org.uk, arnd@arndb.de, benh@kernel.crashing.org,
x86@kernel.org, linux-kernel@vger.kernel.org,
ralf@linux-mips.org, Andy Shevchenko <andy.shevchenko@gmail.com>,
geert@linux-m68k.org, toshi.kani@hp.com,
ross.zwisler@linux.intel.com, hch@lst.de,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 09/10] arch: introduce memremap()
Date: Wed, 22 Jul 2015 01:58:48 +0200 [thread overview]
Message-ID: <20150721235848.GI30479@wotan.suse.de> (raw)
In-Reply-To: <20150720001822.30857.65670.stgit@dwillia2-desk3.amr.corp.intel.com>
On Sun, Jul 19, 2015 at 08:18:23PM -0400, Dan Williams wrote:
> diff --git a/include/linux/io.h b/include/linux/io.h
> index 080a4fbf2ba4..2983b6e63970 100644
> --- a/include/linux/io.h
> +++ b/include/linux/io.h
> @@ -192,4 +192,15 @@ static inline int arch_phys_wc_index(int handle)
> #endif
> #endif
>
> +enum {
> + MEMREMAP_WB = 1 << 0,
> + MEMREMAP_WT = 1 << 1,
> + MEMREMAP_WC = 1 << 2,
> + MEMREMAP_STRICT = 1 << 3,
> + MEMREMAP_CACHE = MEMREMAP_WB,
> +};
A few things:
1) You'll need MEMREMAP_UC now as well now.
2) as you are doing all this sweep over architectures on this please
also address the lack of ioremap_*() variant implemention to return
NULL, ie not supported, because we've decided for now that so long
as the semantics are not well defined we can't expect architectures
to get it right unless they are doing the work themselves, and the
old strategy of just #defin'ing a variant to iorempa_nocache() which
folks tended to just can lead to issues. In your case since you are
jumping to the flags implementation this might be knocking two birds
with one stone.
3) For the case that architectures have no MMU we currently do a direct
mapping such as what you try to describe to do with memremap(). I wonder
if its worth it to then enable that code to just map to memremap(). That
throws off your usage of CONFIG_ARCH_HAS_MEMREMAP if we want to repurpose
that implementation for no the MMU case, unless of course you just have a
__memremap() which does the default basic direct mapping implementation.
4) Since we are all blaming semantics on our woes I'd like to ask for
some effort on semantics to be well defined. Semantics here sholud cover
some form of Documentation but also sparse annotation checks and perhaps
Coccinelle grammar rules for how things should be done. This should not only
cover general use but also if there are calls which depend on a cache
type to have been set. If we used sparse annotations it may meen a
different return type for each cache type. Not sure if we want this.
If we went with grammar rules I'm looking to for instance have in place
rules on scripts/coccinelle which would allow developers to use
make coccicheck M=foo/
to find issues. I can perhaps help with this, but we'd need to do a good
sweep here to not only cover good territory but also get folks to agree
on things.
5) This may be related to 4), not sure. There are aligment requirements we
should probably iron out for architectures. How will we annotate these
requirements or allow architectures to be pedantic over these requirements?
Luis
next prev parent reply other threads:[~2015-07-21 23:58 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-20 0:17 [PATCH 00/10] unify ioremap definitions and introduce memremap Dan Williams
2015-07-20 0:17 ` [PATCH 01/10] mm, x86: Fix warning in ioremap RAM check Dan Williams
2015-07-20 0:17 ` Dan Williams
2015-07-20 0:17 ` [PATCH 02/10] mm, x86: Remove region_is_ram() call from ioremap Dan Williams
2015-07-20 0:17 ` Dan Williams
2015-07-20 0:17 ` [PATCH 03/10] mm: Fix bugs in region_is_ram() Dan Williams
2015-07-20 0:17 ` Dan Williams
2015-07-20 0:17 ` [PATCH 04/10] arch, drivers: don't include <asm/io.h> directly, use <linux/io.h> instead Dan Williams
2015-07-20 0:17 ` Dan Williams
2015-07-20 0:18 ` [PATCH 05/10] arch: unify ioremap prototypes and macro aliases Dan Williams
2015-07-20 0:18 ` Dan Williams
2015-07-21 13:34 ` Christoph Hellwig
2015-07-21 16:08 ` Dan Williams
2015-07-20 0:18 ` [PATCH 06/10] cleanup IORESOURCE_CACHEABLE vs ioremap() Dan Williams
2015-07-20 0:18 ` Dan Williams
2015-07-20 0:18 ` [PATCH 07/10] devm: fix ioremap_cache() usage Dan Williams
2015-07-20 0:18 ` [PATCH 08/10] arch: introduce strict_ioremap Dan Williams
2015-07-20 0:18 ` Dan Williams
2015-07-21 13:30 ` Christoph Hellwig
2015-07-21 16:11 ` Dan Williams
2015-07-21 16:11 ` Dan Williams
2015-07-20 0:18 ` [PATCH 09/10] arch: introduce memremap() Dan Williams
2015-07-20 0:18 ` Dan Williams
2015-07-20 12:00 ` Mark Rutland
2015-07-20 12:00 ` Mark Rutland
2015-07-20 14:39 ` Dan Williams
2015-07-20 14:39 ` Dan Williams
2015-07-20 15:56 ` Mark Rutland
2015-07-20 15:56 ` Mark Rutland
2015-07-21 23:58 ` Luis R. Rodriguez [this message]
2015-07-22 4:04 ` Dan Williams
2015-07-22 22:55 ` Luis R. Rodriguez
2015-07-22 22:55 ` Luis R. Rodriguez
2015-07-22 23:15 ` Dan Williams
2015-07-23 0:55 ` Luis R. Rodriguez
2015-07-23 1:02 ` Dan Williams
2015-07-23 1:02 ` Dan Williams
2015-07-20 0:18 ` [PATCH 10/10] pmem: convert to generic memremap 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=20150721235848.GI30479@wotan.suse.de \
--to=mcgrof@suse.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=dan.j.williams@intel.com \
--cc=geert@linux-m68k.org \
--cc=hch@lst.de \
--cc=hpa@zytor.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mingo@kernel.org \
--cc=ralf@linux-mips.org \
--cc=ross.zwisler@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=toshi.kani@hp.com \
--cc=x86@kernel.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