From: Toshi Kani <toshi.kani@hp.com>
To: "Luis R. Rodriguez" <mcgrof@suse.com>,
Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>,
Andy Lutomirski <luto@amacapital.net>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Julia Lawall <julia.lawall@lip6.fr>,
Dan Williams <dan.j.williams@intel.com>,
Arnd Bergmann <arnd@arndb.de>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ross Zwisler <ross.zwisler@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Juergen Gross <jgross@suse.com>, X86 ML <x86@kernel.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Stefan Bader <stefan.bader@canonical.com>,
Linux MM <linux-mm@kvack.org>, Ralf Baechle <ralf@linux-mips.org>,
Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
Michael Ellerman <mpe@ellerman.id.au>, Tejun Heo <tj@kernel.org>,
Paul Mackerras <paulus@samba.org>,
mcgrof@do-not-panic.com,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases
Date: Tue, 07 Jul 2015 17:10:58 -0600 [thread overview]
Message-ID: <1436310658.3214.85.camel@hp.com> (raw)
In-Reply-To: <20150707160703.GR7021@wotan.suse.de>
On Tue, 2015-07-07 at 18:07 +0200, Luis R. Rodriguez wrote:
> On Tue, Jul 07, 2015 at 11:13:30AM +0100, Russell King - ARM Linux
> wrote:
:
> > On ARM, we (probably) have a lot of cases where ioremap() is used
> > multiple
> > times for the same physical address space, so we shouldn't rule out
> > having
> > multiple mappings of the same type.
>
> Why is that done? Don't worry if you are not sure why but only
> speculate of the
> practice's existence (sloppy drivers or lazy driver developers). FWIW
> for x86
> IIRC I ended up concluding that overlapping ioremap() calls with the
> same type
> would work but not if they differ in type. Although I haven't
> written a
> grammer rule to hunt down overlapping ioremap() I suspected its use
> was likely
> odd and likely should be reconsidered. Would this be true for ARM too
> ? Or are
> you saying this should be a feature ? I don't expect an answer now
> but I'm
> saying we *should* all together decide on this, and if you're
> inclined to
> believe that this should ideally be avoided I'd like to hear that. If
> you feel
> strongly though this should be a feature I would like to know why.
There are multiple mapping interfaces, and overlapping can happen among
them as well. For instance, remap_pfn_range() (and
io_remap_pfn_range(), which is the same as remap_pfn_range() on x86)
creates a mapping to user space. The same physical ranges may be
mapped to kernel and user spaces. /dev/mem is one example that may
create a user space mapping to a physical address that is already
mapped with ioremap() by other module. pmem and DAX also create
mappings to the same NVDIMM ranges. DAX calls vm_insert_mixed(), which
is particularly a problematic since vm_insert_mixed() does not verify
aliasing. ioremap() and remap_pfn_range() call reserve_memtype() to
verify aliasing on x86. reserve_memtype() is x86-specific and there is
no arch-generic wrapper for such check. I think DAX could get a cache
type from pmem to keep them in sync, though.
Thanks,
-Toshi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: toshi.kani@hp.com (Toshi Kani)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases
Date: Tue, 07 Jul 2015 17:10:58 -0600 [thread overview]
Message-ID: <1436310658.3214.85.camel@hp.com> (raw)
In-Reply-To: <20150707160703.GR7021@wotan.suse.de>
On Tue, 2015-07-07 at 18:07 +0200, Luis R. Rodriguez wrote:
> On Tue, Jul 07, 2015 at 11:13:30AM +0100, Russell King - ARM Linux
> wrote:
:
> > On ARM, we (probably) have a lot of cases where ioremap() is used
> > multiple
> > times for the same physical address space, so we shouldn't rule out
> > having
> > multiple mappings of the same type.
>
> Why is that done? Don't worry if you are not sure why but only
> speculate of the
> practice's existence (sloppy drivers or lazy driver developers). FWIW
> for x86
> IIRC I ended up concluding that overlapping ioremap() calls with the
> same type
> would work but not if they differ in type. Although I haven't
> written a
> grammer rule to hunt down overlapping ioremap() I suspected its use
> was likely
> odd and likely should be reconsidered. Would this be true for ARM too
> ? Or are
> you saying this should be a feature ? I don't expect an answer now
> but I'm
> saying we *should* all together decide on this, and if you're
> inclined to
> believe that this should ideally be avoided I'd like to hear that. If
> you feel
> strongly though this should be a feature I would like to know why.
There are multiple mapping interfaces, and overlapping can happen among
them as well. For instance, remap_pfn_range() (and
io_remap_pfn_range(), which is the same as remap_pfn_range() on x86)
creates a mapping to user space. The same physical ranges may be
mapped to kernel and user spaces. /dev/mem is one example that may
create a user space mapping to a physical address that is already
mapped with ioremap() by other module. pmem and DAX also create
mappings to the same NVDIMM ranges. DAX calls vm_insert_mixed(), which
is particularly a problematic since vm_insert_mixed() does not verify
aliasing. ioremap() and remap_pfn_range() call reserve_memtype() to
verify aliasing on x86. reserve_memtype() is x86-specific and there is
no arch-generic wrapper for such check. I think DAX could get a cache
type from pmem to keep them in sync, though.
Thanks,
-Toshi
WARNING: multiple messages have this Message-ID (diff)
From: Toshi Kani <toshi.kani@hp.com>
To: "Luis R. Rodriguez" <mcgrof@suse.com>,
Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>,
Andy Lutomirski <luto@amacapital.net>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Julia Lawall <julia.lawall@lip6.fr>,
Dan Williams <dan.j.williams@intel.com>,
Arnd Bergmann <arnd@arndb.de>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ross Zwisler <ross.zwisler@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Juergen Gross <jgross@suse.com>, X86 ML <x86@kernel.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Stefan Bader <stefan.bader@canonical.com>,
Linux MM <linux-mm@kvack.org>, Ralf Baechle <ralf@linux-mips.org>,
Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
Michael Ellerman <mpe@ellerman.id.au>, Tejun Heo <tj@kernel.org>,
Paul Mackerras <paulus@samba.org>,
mcgrof@do-not-panic.com,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases
Date: Tue, 07 Jul 2015 17:10:58 -0600 [thread overview]
Message-ID: <1436310658.3214.85.camel@hp.com> (raw)
In-Reply-To: <20150707160703.GR7021@wotan.suse.de>
On Tue, 2015-07-07 at 18:07 +0200, Luis R. Rodriguez wrote:
> On Tue, Jul 07, 2015 at 11:13:30AM +0100, Russell King - ARM Linux
> wrote:
:
> > On ARM, we (probably) have a lot of cases where ioremap() is used
> > multiple
> > times for the same physical address space, so we shouldn't rule out
> > having
> > multiple mappings of the same type.
>
> Why is that done? Don't worry if you are not sure why but only
> speculate of the
> practice's existence (sloppy drivers or lazy driver developers). FWIW
> for x86
> IIRC I ended up concluding that overlapping ioremap() calls with the
> same type
> would work but not if they differ in type. Although I haven't
> written a
> grammer rule to hunt down overlapping ioremap() I suspected its use
> was likely
> odd and likely should be reconsidered. Would this be true for ARM too
> ? Or are
> you saying this should be a feature ? I don't expect an answer now
> but I'm
> saying we *should* all together decide on this, and if you're
> inclined to
> believe that this should ideally be avoided I'd like to hear that. If
> you feel
> strongly though this should be a feature I would like to know why.
There are multiple mapping interfaces, and overlapping can happen among
them as well. For instance, remap_pfn_range() (and
io_remap_pfn_range(), which is the same as remap_pfn_range() on x86)
creates a mapping to user space. The same physical ranges may be
mapped to kernel and user spaces. /dev/mem is one example that may
create a user space mapping to a physical address that is already
mapped with ioremap() by other module. pmem and DAX also create
mappings to the same NVDIMM ranges. DAX calls vm_insert_mixed(), which
is particularly a problematic since vm_insert_mixed() does not verify
aliasing. ioremap() and remap_pfn_range() call reserve_memtype() to
verify aliasing on x86. reserve_memtype() is x86-specific and there is
no arch-generic wrapper for such check. I think DAX could get a cache
type from pmem to keep them in sync, though.
Thanks,
-Toshi
next prev parent reply other threads:[~2015-07-07 23:10 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-22 8:24 [PATCH v5 0/6] pmem api, generic ioremap_cache, and memremap Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 8:24 ` [PATCH v5 1/6] arch, drivers: don't include <asm/io.h> directly, use <linux/io.h> instead Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 16:01 ` Christoph Hellwig
2015-06-22 16:01 ` Christoph Hellwig
2015-06-22 8:24 ` [PATCH v5 2/6] arch: unify ioremap prototypes and macro aliases Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 16:10 ` Christoph Hellwig
2015-06-22 16:10 ` Christoph Hellwig
2015-06-22 17:12 ` Dan Williams
2015-06-22 17:12 ` Dan Williams
2015-06-23 10:07 ` Christoph Hellwig
2015-06-23 10:07 ` Christoph Hellwig
2015-06-23 15:04 ` Dan Williams
2015-06-23 15:04 ` Dan Williams
2015-06-24 12:24 ` Christoph Hellwig
2015-06-24 12:24 ` Christoph Hellwig
2015-06-30 22:57 ` Dan Williams
2015-06-30 22:57 ` Dan Williams
2015-06-30 22:57 ` Dan Williams
2015-07-01 6:23 ` Christoph Hellwig
2015-07-01 6:23 ` Christoph Hellwig
2015-07-01 6:23 ` Christoph Hellwig
2015-07-01 6:55 ` Geert Uytterhoeven
2015-07-01 6:55 ` Geert Uytterhoeven
2015-07-01 6:55 ` Geert Uytterhoeven
2015-07-01 6:59 ` Christoph Hellwig
2015-07-01 6:59 ` Christoph Hellwig
2015-07-01 6:59 ` Christoph Hellwig
2015-07-01 7:19 ` Geert Uytterhoeven
2015-07-01 7:19 ` Geert Uytterhoeven
2015-07-01 7:19 ` Geert Uytterhoeven
2015-07-01 7:28 ` Christoph Hellwig
2015-07-01 7:28 ` Christoph Hellwig
2015-07-01 7:28 ` Christoph Hellwig
2015-07-07 9:50 ` Luis R. Rodriguez
2015-07-07 9:50 ` Luis R. Rodriguez
2015-07-07 9:50 ` Luis R. Rodriguez
2015-07-07 10:13 ` Russell King - ARM Linux
2015-07-07 10:13 ` Russell King - ARM Linux
2015-07-07 10:13 ` Russell King - ARM Linux
2015-07-07 10:27 ` Geert Uytterhoeven
2015-07-07 10:27 ` Geert Uytterhoeven
2015-07-07 10:27 ` Geert Uytterhoeven
2015-07-07 16:07 ` Luis R. Rodriguez
2015-07-07 16:07 ` Luis R. Rodriguez
2015-07-07 16:07 ` Luis R. Rodriguez
2015-07-07 23:10 ` Toshi Kani [this message]
2015-07-07 23:10 ` Toshi Kani
2015-07-07 23:10 ` Toshi Kani
2015-07-09 1:40 ` Luis R. Rodriguez
2015-07-09 1:40 ` Luis R. Rodriguez
2015-07-09 1:40 ` Luis R. Rodriguez
2015-07-09 23:43 ` Toshi Kani
2015-07-09 23:43 ` Toshi Kani
2015-07-09 23:43 ` Toshi Kani
2015-07-01 8:09 ` Russell King - ARM Linux
2015-07-01 8:09 ` Russell King - ARM Linux
2015-07-01 8:09 ` Russell King - ARM Linux
2015-07-01 16:47 ` Dan Williams
2015-07-01 16:47 ` Dan Williams
2015-07-01 16:47 ` Dan Williams
2015-07-09 18:54 ` Luis R. Rodriguez
2015-07-09 18:54 ` Luis R. Rodriguez
2015-06-22 8:24 ` [PATCH v5 3/6] cleanup IORESOURCE_CACHEABLE vs ioremap() Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 8:24 ` [PATCH v5 4/6] devm: fix ioremap_cache() usage Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 8:24 ` [PATCH v5 5/6] arch: introduce memremap_cache() and memremap_wt() Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 8:24 ` [PATCH v5 6/6] arch, x86: pmem api for ensuring durability of persistent memory updates Dan Williams
2015-06-22 8:24 ` Dan Williams
2015-06-22 16:17 ` Christoph Hellwig
2015-06-22 16:17 ` Christoph Hellwig
2015-06-22 17:51 ` Dan Williams
2015-06-22 17:51 ` Dan Williams
2015-06-23 10:09 ` Christoph Hellwig
2015-06-23 10:09 ` Christoph Hellwig
2015-06-23 10:39 ` Richard Weinberger
2015-06-23 10:39 ` Richard Weinberger
2015-06-24 12:08 ` Christoph Hellwig
2015-06-24 12:08 ` Christoph Hellwig
2015-06-24 12:35 ` Richard Weinberger
2015-06-24 12:35 ` Richard Weinberger
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=1436310658.3214.85.camel@hp.com \
--to=toshi.kani@hp.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=geert@linux-m68k.org \
--cc=hch@lst.de \
--cc=hmh@hmh.eng.br \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=julia.lawall@lip6.fr \
--cc=konrad.wilk@oracle.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvdimm@ml01.01.org \
--cc=linux@arm.linux.org.uk \
--cc=luto@amacapital.net \
--cc=mcgrof@do-not-panic.com \
--cc=mcgrof@suse.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=ralf@linux-mips.org \
--cc=ross.zwisler@linux.intel.com \
--cc=stefan.bader@canonical.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.