diff for duplicates of <20170411140857.GA6821@red-moon>
diff --git a/a/1.txt b/N1/1.txt
index d7a5fc9..cd08091 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,19 +1,15 @@
On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote:
> > This patch series[1] is a v3 of a previous version:
-> > =
-
+> >
> > v2: https://lkml.org/lkml/2017/3/27/220
-> =
-
+>
> I am not a fan of this at All.
-> =
-
+>
> That whole concept of "ioremap_nopost" is simply not applicable to the
> majority of architectures and certainly not in a way that can apply to
> arbitrary mappings.
-> =
-
+>
> It's also very wrong to provide a "default" operation whose semantics
> are weaker than what it's supposed to implement. Very wrong actually.
> People will use it assuming the non-posted behaviour and things will
@@ -58,8 +54,7 @@ PCI configuration (write) transactions."
> sauce to provide the illusion of non-posting, then implement this in
> the actual root complex code.
-> =
-
+>
> BTW. I'm pretty sure we "accidentally" made config writes posted at
> least to the PHB on a number of powerpc systems forever and we *never*
> had a problem because of it ;)
@@ -73,48 +68,42 @@ Lorenzo
> > v2 -> v3:
> > - Created a default ioremap_nopost() implementation in a
> > separate
-> > =A0=A0asm-generic header and patched all arches to make use of it
+> > asm-generic header and patched all arches to make use of it
> > - Removed PCI drivers patches from the series to simplify the
-> > =A0=A0review, they will be posted separately once the
+> > review, they will be posted separately once the
> > ioremap_nopost()
-> > =A0=A0interface is settled
+> > interface is settled
> > - Fixed devm_ioremap_* BUS offset comments and implemented
-> > =A0=A0nopost interface on top of it
+> > nopost interface on top of it
> > - Added collected tags
-> > =
-
+> >
> > v1: https://lkml.org/lkml/2017/2/27/228
-> > =
-
+> >
> > v1 -> v2:
> > - Changed pci_remap_cfgspace() to more generic ioremap_nopost()
-> > =A0=A0interface
+> > interface
> > - Added pgprot_nonposted
> > - Fixed build errors on arches not relying on asm-generic
> > headers
> > - Added PCI versatile host controller driver patch
> > - Added missing config space remapping to hisilicon host
> > controller
-> > =
-
+> >
> > ---------------------
> > Original cover letter
> > ---------------------
-> > =
-
+> >
> > PCI local bus specifications (Rev3.0, 3.2.5 "Transaction Ordering
> > and Posting") strictly require PCI configuration and I/O Address
> > space
> > write transactions to be non-posted.
-> > =
-
+> >
> > Current crop of DT/ACPI PCI host controllers drivers relies on
> > the ioremap interface to map ECAM and ECAM-derivative PCI config
> > regions and pci_remap_iospace() to create a VMA for mapping
> > PCI host bridge I/O Address space transactions to CPU virtual address
> > space.
-> > =
-
+> >
> > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI
> > configuration non-posted write transactions requirement, because it
> > provides a memory mapping that issues "bufferable" or, in PCI terms
@@ -126,141 +115,103 @@ Lorenzo
> > attributes that on eg ARM64 provides a memory mapping issuing
> > posted writes transactions, which is not PCI specifications
> > compliant.
-> > =
-
+> >
> > This patch series[1] addresses both issues in one go:
-> > =
-
+> >
> > - It updates the pci_remap_iospace() function to use a page mapping
-> > =A0 that guarantees non-posted write transactions for I/O space
+> > that guarantees non-posted write transactions for I/O space
> > addresses
> > - It adds a kernel API to remap PCI config space resources, so that
-> > =A0 architecture can override it with a mapping implementation that
-> > =A0 guarantees PCI specifications compliancy wrt non-posted write
-> > =A0 configuration transactions
+> > architecture can override it with a mapping implementation that
+> > guarantees PCI specifications compliancy wrt non-posted write
+> > configuration transactions
> > - It updates all PCI host controller implementations (and the generic
-> > =A0 ECAM layer) to use the newly introduced mapping interface
-> > =
-
+> > ECAM layer) to use the newly introduced mapping interface
+> >
> > Tested on Juno ECAM based interface (DT/ACPI).
-> > =
-
+> >
> > Non-ECAM PCI host controller drivers patches need checking to make
> > sure that:
-> > =
-
+> >
> > - I patched the correct resource region mapping for config space
> > - There are not any other ways to ensure posted-write completion
-> > =A0 in the respective pci_ops that make the relevant patch unnecessary
-> > =
-
+> > in the respective pci_ops that make the relevant patch unnecessary
+> >
> > [1]
> > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git
> > pci/config-io-mappings-fix-v3
-> > =
-
+> >
> > Lorenzo Pieralisi (32):
-> > =A0 PCI: remove __weak tag from pci_remap_iospace()
-> > =A0 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute
-> > =A0 PCI: fix pci_remap_iospace() remap attribute
-> > =A0 asm-generic: add ioremap_nopost() remap interface
-> > =A0 alpha: include default ioremap_nopost() implementation
-> > =A0 avr32: include default ioremap_nopost() implementation
-> > =A0 arc: include default ioremap_nopost() implementation
-> > =A0 cris: include default ioremap_nopost() implementation
-> > =A0 frv: include default ioremap_nopost() implementation
-> > =A0 hexagon: include default ioremap_nopost() implementation
-> > =A0 ia64: include default ioremap_nopost() implementation
-> > =A0 m32r: include default ioremap_nopost() implementation
-> > =A0 m68k: include default ioremap_nopost() implementation
-> > =A0 metag: include default ioremap_nopost() implementation
-> > =A0 microblaze: include default ioremap_nopost() implementation
-> > =A0 mips: include default ioremap_nopost() implementation
-> > =A0 mn10300: include default ioremap_nopost() implementation
-> > =A0 nios2: include default ioremap_nopost() implementation
-> > =A0 openrisc: include default ioremap_nopost() implementation
-> > =A0 parisc: include default ioremap_nopost() implementation
-> > =A0 powerpc: include default ioremap_nopost() implementation
-> > =A0 s390: include default ioremap_nopost() implementation
-> > =A0 sh: include default ioremap_nopost() implementation
-> > =A0 sparc: include default ioremap_nopost() implementation
-> > =A0 tile: include default ioremap_nopost() implementation
-> > =A0 unicore32: include default ioremap_nopost() implementation
-> > =A0 x86: include default ioremap_nopost() implementation
-> > =A0 xtensa: include default ioremap_nopost() implementation
-> > =A0 arm64: implement ioremap_nopost() interface
-> > =A0 arm: implement ioremap_nopost() interface
-> > =A0 lib: fix Devres devm_ioremap_* offset parameter kerneldoc
+> > PCI: remove __weak tag from pci_remap_iospace()
+> > asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute
+> > PCI: fix pci_remap_iospace() remap attribute
+> > asm-generic: add ioremap_nopost() remap interface
+> > alpha: include default ioremap_nopost() implementation
+> > avr32: include default ioremap_nopost() implementation
+> > arc: include default ioremap_nopost() implementation
+> > cris: include default ioremap_nopost() implementation
+> > frv: include default ioremap_nopost() implementation
+> > hexagon: include default ioremap_nopost() implementation
+> > ia64: include default ioremap_nopost() implementation
+> > m32r: include default ioremap_nopost() implementation
+> > m68k: include default ioremap_nopost() implementation
+> > metag: include default ioremap_nopost() implementation
+> > microblaze: include default ioremap_nopost() implementation
+> > mips: include default ioremap_nopost() implementation
+> > mn10300: include default ioremap_nopost() implementation
+> > nios2: include default ioremap_nopost() implementation
+> > openrisc: include default ioremap_nopost() implementation
+> > parisc: include default ioremap_nopost() implementation
+> > powerpc: include default ioremap_nopost() implementation
+> > s390: include default ioremap_nopost() implementation
+> > sh: include default ioremap_nopost() implementation
+> > sparc: include default ioremap_nopost() implementation
+> > tile: include default ioremap_nopost() implementation
+> > unicore32: include default ioremap_nopost() implementation
+> > x86: include default ioremap_nopost() implementation
+> > xtensa: include default ioremap_nopost() implementation
+> > arm64: implement ioremap_nopost() interface
+> > arm: implement ioremap_nopost() interface
+> > lib: fix Devres devm_ioremap_* offset parameter kerneldoc
> > description
-> > =A0 lib: implement Devres ioremap_nopost() interface
-> > =
-
-> > =A0Documentation/driver-model/devres.txt |=A0=A03 ++
-> > =A0arch/alpha/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/arc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/arm/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A09 ++++
-> > =A0arch/arm/mm/ioremap.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0|=A0=A07 +++
-> > =A0arch/arm/mm/nommu.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0|=A0=A09 ++++
-> > =A0arch/arm64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0| 12 +++=
-++
-> > =A0arch/avr32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/cris/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/frv/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/hexagon/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +
-> > =A0arch/ia64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/m32r/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/m68k/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/metag/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02=
- +
-> > =A0arch/microblaze/include/asm/io.h=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/mips/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/mn10300/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/nios2/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/openrisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +
-> > =A0arch/parisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/powerpc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/s390/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/sh/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=
-=A0=A01 +
-> > =A0arch/sparc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/tile/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/unicore32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/x86/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/xtensa/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0drivers/pci/pci.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0|=A0=A04 +-
-> > =A0include/asm-generic/ioremap-nopost.h=A0=A0|=A0=A09 ++++
-> > =A0include/asm-generic/pgtable.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A04 ++
-> > =A0include/linux/device.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0|=A0=A02 +
-> > =A0include/linux/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0|=A0=A02 +
-> > =A0lib/devres.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0=A0=A0=A0=A0| 84
+> > lib: implement Devres ioremap_nopost() interface
+> >
+> > Documentation/driver-model/devres.txt | 3 ++
+> > arch/alpha/include/asm/io.h | 1 +
+> > arch/arc/include/asm/io.h | 1 +
+> > arch/arm/include/asm/io.h | 9 ++++
+> > arch/arm/mm/ioremap.c | 7 +++
+> > arch/arm/mm/nommu.c | 9 ++++
+> > arch/arm64/include/asm/io.h | 12 +++++
+> > arch/avr32/include/asm/io.h | 1 +
+> > arch/cris/include/asm/io.h | 1 +
+> > arch/frv/include/asm/io.h | 1 +
+> > arch/hexagon/include/asm/io.h | 2 +
+> > arch/ia64/include/asm/io.h | 1 +
+> > arch/m32r/include/asm/io.h | 1 +
+> > arch/m68k/include/asm/io.h | 1 +
+> > arch/metag/include/asm/io.h | 2 +
+> > arch/microblaze/include/asm/io.h | 1 +
+> > arch/mips/include/asm/io.h | 1 +
+> > arch/mn10300/include/asm/io.h | 1 +
+> > arch/nios2/include/asm/io.h | 1 +
+> > arch/openrisc/include/asm/io.h | 2 +
+> > arch/parisc/include/asm/io.h | 1 +
+> > arch/powerpc/include/asm/io.h | 1 +
+> > arch/s390/include/asm/io.h | 1 +
+> > arch/sh/include/asm/io.h | 1 +
+> > arch/sparc/include/asm/io.h | 1 +
+> > arch/tile/include/asm/io.h | 1 +
+> > arch/unicore32/include/asm/io.h | 1 +
+> > arch/x86/include/asm/io.h | 1 +
+> > arch/xtensa/include/asm/io.h | 1 +
+> > drivers/pci/pci.c | 4 +-
+> > include/asm-generic/ioremap-nopost.h | 9 ++++
+> > include/asm-generic/pgtable.h | 4 ++
+> > include/linux/device.h | 2 +
+> > include/linux/io.h | 2 +
+> > lib/devres.c | 84
> > +++++++++++++++++++++++++++++++++--
-> > =A035 files changed, 167 insertions(+), 5 deletions(-)
-> > =A0create mode 100644 include/asm-generic/ioremap-nopost.h
-> > =
-
-
-_______________________________________________
-linux-arm-kernel mailing list
-linux-arm-kernel@lists.infradead.org
-http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
\ No newline at end of file
+> > 35 files changed, 167 insertions(+), 5 deletions(-)
+> > create mode 100644 include/asm-generic/ioremap-nopost.h
+> >
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index 24a8583..bb74454 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -40,30 +40,7 @@
" Catalin Marinas <catalin.marinas\@arm.com>",
" Matt Turner <mattst88\@gmail.com>",
" Haavard Skinnemoen <hskinnemoen\@gmail.com>",
- " Fenghua Yu <fenghua.yu\@intel.com>",
- " James Hogan <james.hogan\@imgtec.com>",
- " Chris Metcalf <cmetcalf\@mellanox.com>",
- " Arnd Bergmann <arnd\@arndb.de>",
- " Heiko Carstens <heiko.carstens\@de.ibm.com>",
- " Stefan Kristiansson <stefan.kristiansson\@saunalahti.fi>",
- " Mikael Starvik <starvik\@axis.com>",
- " Ivan Kokshaysky <ink\@jurassic.park.msu.ru>",
- " Bjorn Helgaas <bhelgaas\@google.com>",
- " Stafford Horne <shorne\@gmail.com>",
- " linux-arm-kernel\@lists.infradead.org",
- " Richard Henderson <rth\@twiddle.net>",
- " Chris Zankel <chris\@zankel.net>",
- " Michal Simek <monstr\@monstr.eu>",
- " Tony Luck <tony.luck\@intel.com>",
- " Vineet Gupta <vgupta\@synopsys.com>",
- " linux-kernel\@vger.kernel.org",
- " Ralf Baechle <ralf\@linux-mips.org>",
- " Richard Kuo <rkuo\@codeaurora.org>",
- " Niklas Cassel <nks\@flawful.org>",
- " Luis R. Rodriguez <mcgrof\@kernel.org>",
- " Martin Schwidefsky <schwidefsky\@de.ibm.com>",
- " Ley Foon Tan <lftan\@altera.com>",
- " David S. Miller <davem\@davemloft.net>\0"
+ " Fenghua Yu <fenghua.yu\@intel.co>\0"
]
[
"\0000:1\0"
@@ -75,19 +52,15 @@
"On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote:\n",
"> On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote:\n",
"> > This patch series[1] is a v3 of a previous version:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v2: https://lkml.org/lkml/2017/3/27/220\n",
- "> =\n",
- "\n",
+ "> \n",
"> I am not a fan of this at All.\n",
- "> =\n",
- "\n",
+ "> \n",
"> That whole concept of \"ioremap_nopost\" is simply not applicable to the\n",
"> majority of architectures and certainly not in a way that can apply to\n",
"> arbitrary mappings.\n",
- "> =\n",
- "\n",
+ "> \n",
"> It's also very wrong to provide a \"default\" operation whose semantics\n",
"> are weaker than what it's supposed to implement. Very wrong actually.\n",
"> People will use it assuming the non-posted behaviour and things will\n",
@@ -132,8 +105,7 @@
"> sauce to provide the illusion of non-posting, then implement this in\n",
"> the actual root complex code.\n",
"\n",
- "> =\n",
- "\n",
+ "> \n",
"> BTW. I'm pretty sure we \"accidentally\" made config writes posted at\n",
"> least to the PHB on a number of powerpc systems forever and we *never*\n",
"> had a problem because of it ;)\n",
@@ -147,48 +119,42 @@
"> > v2 -> v3:\n",
"> > \t- Created a default ioremap_nopost() implementation in a\n",
"> > separate\n",
- "> > \t=A0=A0asm-generic header and patched all arches to make use of it\n",
+ "> > \t\302\240\302\240asm-generic header and patched all arches to make use of it\n",
"> > \t- Removed PCI drivers patches from the series to simplify the\n",
- "> > \t=A0=A0review, they will be posted separately once the\n",
+ "> > \t\302\240\302\240review, they will be posted separately once the\n",
"> > ioremap_nopost()\n",
- "> > \t=A0=A0interface is settled\n",
+ "> > \t\302\240\302\240interface is settled\n",
"> > \t- Fixed devm_ioremap_* BUS offset comments and implemented\n",
- "> > \t=A0=A0nopost interface on top of it\n",
+ "> > \t\302\240\302\240nopost interface on top of it\n",
"> > \t- Added collected tags\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v1: https://lkml.org/lkml/2017/2/27/228\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v1 -> v2:\n",
"> > \t- Changed pci_remap_cfgspace() to more generic ioremap_nopost()\n",
- "> > \t=A0=A0interface\n",
+ "> > \t\302\240\302\240interface\n",
"> > \t- Added pgprot_nonposted\n",
"> > \t- Fixed build errors on arches not relying on asm-generic\n",
"> > headers\n",
"> > \t- Added PCI versatile host controller driver patch\n",
"> > \t- Added missing config space remapping to hisilicon host\n",
"> > controller\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > ---------------------\n",
"> > Original cover letter\n",
"> > ---------------------\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > PCI local bus specifications (Rev3.0, 3.2.5 \"Transaction Ordering\n",
"> > and Posting\") strictly require PCI configuration and I/O Address\n",
"> > space\n",
"> > write transactions to be non-posted.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Current crop of DT/ACPI PCI host controllers drivers relies on\n",
"> > the ioremap interface to map ECAM and ECAM-derivative PCI config\n",
"> > regions and pci_remap_iospace() to create a VMA for mapping\n",
"> > PCI host bridge I/O Address space transactions to CPU virtual address\n",
"> > space.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI\n",
"> > configuration non-posted write transactions requirement, because it\n",
"> > provides a memory mapping that issues \"bufferable\" or, in PCI terms\n",
@@ -200,144 +166,106 @@
"> > attributes that on eg ARM64 provides a memory mapping issuing\n",
"> > posted writes transactions, which is not PCI specifications\n",
"> > compliant.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > This patch series[1] addresses both issues in one go:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > - It updates the pci_remap_iospace() function to use a page mapping\n",
- "> > =A0 that guarantees non-posted write transactions for I/O space\n",
+ "> > \302\240 that guarantees non-posted write transactions for I/O space\n",
"> > addresses\n",
"> > - It adds a kernel API to remap PCI config space resources, so that\n",
- "> > =A0 architecture can override it with a mapping implementation that\n",
- "> > =A0 guarantees PCI specifications compliancy wrt non-posted write\n",
- "> > =A0 configuration transactions\n",
+ "> > \302\240 architecture can override it with a mapping implementation that\n",
+ "> > \302\240 guarantees PCI specifications compliancy wrt non-posted write\n",
+ "> > \302\240 configuration transactions\n",
"> > - It updates all PCI host controller implementations (and the generic\n",
- "> > =A0 ECAM layer) to use the newly introduced mapping interface\n",
- "> > =\n",
- "\n",
+ "> > \302\240 ECAM layer) to use the newly introduced mapping interface\n",
+ "> > \n",
"> > Tested on Juno ECAM based interface (DT/ACPI).\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Non-ECAM PCI host controller drivers patches need checking to make\n",
"> > sure that:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > - I patched the correct resource region mapping for config space\n",
"> > - There are not any other ways to ensure posted-write completion\n",
- "> > =A0 in the respective pci_ops that make the relevant patch unnecessary\n",
- "> > =\n",
- "\n",
+ "> > \302\240 in the respective pci_ops that make the relevant patch unnecessary\n",
+ "> > \n",
"> > [1]\n",
"> > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git\n",
"> > pci/config-io-mappings-fix-v3\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Lorenzo Pieralisi (32):\n",
- "> > =A0 PCI: remove __weak tag from pci_remap_iospace()\n",
- "> > =A0 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n",
- "> > =A0 PCI: fix pci_remap_iospace() remap attribute\n",
- "> > =A0 asm-generic: add ioremap_nopost() remap interface\n",
- "> > =A0 alpha: include default ioremap_nopost() implementation\n",
- "> > =A0 avr32: include default ioremap_nopost() implementation\n",
- "> > =A0 arc: include default ioremap_nopost() implementation\n",
- "> > =A0 cris: include default ioremap_nopost() implementation\n",
- "> > =A0 frv: include default ioremap_nopost() implementation\n",
- "> > =A0 hexagon: include default ioremap_nopost() implementation\n",
- "> > =A0 ia64: include default ioremap_nopost() implementation\n",
- "> > =A0 m32r: include default ioremap_nopost() implementation\n",
- "> > =A0 m68k: include default ioremap_nopost() implementation\n",
- "> > =A0 metag: include default ioremap_nopost() implementation\n",
- "> > =A0 microblaze: include default ioremap_nopost() implementation\n",
- "> > =A0 mips: include default ioremap_nopost() implementation\n",
- "> > =A0 mn10300: include default ioremap_nopost() implementation\n",
- "> > =A0 nios2: include default ioremap_nopost() implementation\n",
- "> > =A0 openrisc: include default ioremap_nopost() implementation\n",
- "> > =A0 parisc: include default ioremap_nopost() implementation\n",
- "> > =A0 powerpc: include default ioremap_nopost() implementation\n",
- "> > =A0 s390: include default ioremap_nopost() implementation\n",
- "> > =A0 sh: include default ioremap_nopost() implementation\n",
- "> > =A0 sparc: include default ioremap_nopost() implementation\n",
- "> > =A0 tile: include default ioremap_nopost() implementation\n",
- "> > =A0 unicore32: include default ioremap_nopost() implementation\n",
- "> > =A0 x86: include default ioremap_nopost() implementation\n",
- "> > =A0 xtensa: include default ioremap_nopost() implementation\n",
- "> > =A0 arm64: implement ioremap_nopost() interface\n",
- "> > =A0 arm: implement ioremap_nopost() interface\n",
- "> > =A0 lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n",
+ "> > \302\240 PCI: remove __weak tag from pci_remap_iospace()\n",
+ "> > \302\240 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n",
+ "> > \302\240 PCI: fix pci_remap_iospace() remap attribute\n",
+ "> > \302\240 asm-generic: add ioremap_nopost() remap interface\n",
+ "> > \302\240 alpha: include default ioremap_nopost() implementation\n",
+ "> > \302\240 avr32: include default ioremap_nopost() implementation\n",
+ "> > \302\240 arc: include default ioremap_nopost() implementation\n",
+ "> > \302\240 cris: include default ioremap_nopost() implementation\n",
+ "> > \302\240 frv: include default ioremap_nopost() implementation\n",
+ "> > \302\240 hexagon: include default ioremap_nopost() implementation\n",
+ "> > \302\240 ia64: include default ioremap_nopost() implementation\n",
+ "> > \302\240 m32r: include default ioremap_nopost() implementation\n",
+ "> > \302\240 m68k: include default ioremap_nopost() implementation\n",
+ "> > \302\240 metag: include default ioremap_nopost() implementation\n",
+ "> > \302\240 microblaze: include default ioremap_nopost() implementation\n",
+ "> > \302\240 mips: include default ioremap_nopost() implementation\n",
+ "> > \302\240 mn10300: include default ioremap_nopost() implementation\n",
+ "> > \302\240 nios2: include default ioremap_nopost() implementation\n",
+ "> > \302\240 openrisc: include default ioremap_nopost() implementation\n",
+ "> > \302\240 parisc: include default ioremap_nopost() implementation\n",
+ "> > \302\240 powerpc: include default ioremap_nopost() implementation\n",
+ "> > \302\240 s390: include default ioremap_nopost() implementation\n",
+ "> > \302\240 sh: include default ioremap_nopost() implementation\n",
+ "> > \302\240 sparc: include default ioremap_nopost() implementation\n",
+ "> > \302\240 tile: include default ioremap_nopost() implementation\n",
+ "> > \302\240 unicore32: include default ioremap_nopost() implementation\n",
+ "> > \302\240 x86: include default ioremap_nopost() implementation\n",
+ "> > \302\240 xtensa: include default ioremap_nopost() implementation\n",
+ "> > \302\240 arm64: implement ioremap_nopost() interface\n",
+ "> > \302\240 arm: implement ioremap_nopost() interface\n",
+ "> > \302\240 lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n",
"> > description\n",
- "> > =A0 lib: implement Devres ioremap_nopost() interface\n",
- "> > =\n",
- "\n",
- "> > =A0Documentation/driver-model/devres.txt |=A0=A03 ++\n",
- "> > =A0arch/alpha/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/arc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/arm/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A09 ++++\n",
- "> > =A0arch/arm/mm/ioremap.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0|=A0=A07 +++\n",
- "> > =A0arch/arm/mm/nommu.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0|=A0=A09 ++++\n",
- "> > =A0arch/arm64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0| 12 +++=\n",
- "++\n",
- "> > =A0arch/avr32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/cris/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/frv/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/hexagon/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0arch/ia64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/m32r/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/m68k/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/metag/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02=\n",
- " +\n",
- "> > =A0arch/microblaze/include/asm/io.h=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/mips/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/mn10300/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/nios2/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/openrisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0arch/parisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/powerpc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/s390/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/sh/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=\n",
- "=A0=A01 +\n",
- "> > =A0arch/sparc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/tile/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/unicore32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/x86/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/xtensa/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0drivers/pci/pci.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0|=A0=A04 +-\n",
- "> > =A0include/asm-generic/ioremap-nopost.h=A0=A0|=A0=A09 ++++\n",
- "> > =A0include/asm-generic/pgtable.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A04 ++\n",
- "> > =A0include/linux/device.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0|=A0=A02 +\n",
- "> > =A0include/linux/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0lib/devres.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0=A0=A0=A0=A0| 84\n",
+ "> > \302\240 lib: implement Devres ioremap_nopost() interface\n",
+ "> > \n",
+ "> > \302\240Documentation/driver-model/devres.txt |\302\240\302\2403 ++\n",
+ "> > \302\240arch/alpha/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/arc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/arm/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n",
+ "> > \302\240arch/arm/mm/ioremap.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2407 +++\n",
+ "> > \302\240arch/arm/mm/nommu.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n",
+ "> > \302\240arch/arm64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 12 +++++\n",
+ "> > \302\240arch/avr32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/cris/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/frv/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/hexagon/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n",
+ "> > \302\240arch/ia64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/m32r/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/m68k/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/metag/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n",
+ "> > \302\240arch/microblaze/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/mips/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/mn10300/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/nios2/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/openrisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n",
+ "> > \302\240arch/parisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/powerpc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/s390/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/sh/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/sparc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/tile/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/unicore32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/x86/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240arch/xtensa/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n",
+ "> > \302\240drivers/pci/pci.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 +-\n",
+ "> > \302\240include/asm-generic/ioremap-nopost.h\302\240\302\240|\302\240\302\2409 ++++\n",
+ "> > \302\240include/asm-generic/pgtable.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 ++\n",
+ "> > \302\240include/linux/device.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n",
+ "> > \302\240include/linux/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n",
+ "> > \302\240lib/devres.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 84\n",
"> > +++++++++++++++++++++++++++++++++--\n",
- "> > =A035 files changed, 167 insertions(+), 5 deletions(-)\n",
- "> > =A0create mode 100644 include/asm-generic/ioremap-nopost.h\n",
- "> > =\n",
- "\n",
- "\n",
- "_______________________________________________\n",
- "linux-arm-kernel mailing list\n",
- "linux-arm-kernel\@lists.infradead.org\n",
- "http://lists.infradead.org/mailman/listinfo/linux-arm-kernel"
+ "> > \302\24035 files changed, 167 insertions(+), 5 deletions(-)\n",
+ "> > \302\240create mode 100644 include/asm-generic/ioremap-nopost.h\n",
+ "> >"
]
-64d5c6e99cf2ca67777cb8a0dda0006a82b4f99e6b38a8edeed1ca1730114a49
+1b367d87c4f35bd7c92992471e5826d5ede4ddfd7bd12a4a9b69e66ae706feec
diff --git a/a/1.txt b/N2/1.txt
index d7a5fc9..9fee13b 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -1,19 +1,15 @@
On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote:
> > This patch series[1] is a v3 of a previous version:
-> > =
-
+> >
> > v2: https://lkml.org/lkml/2017/3/27/220
-> =
-
+>
> I am not a fan of this at All.
-> =
-
+>
> That whole concept of "ioremap_nopost" is simply not applicable to the
> majority of architectures and certainly not in a way that can apply to
> arbitrary mappings.
-> =
-
+>
> It's also very wrong to provide a "default" operation whose semantics
> are weaker than what it's supposed to implement. Very wrong actually.
> People will use it assuming the non-posted behaviour and things will
@@ -58,8 +54,7 @@ PCI configuration (write) transactions."
> sauce to provide the illusion of non-posting, then implement this in
> the actual root complex code.
-> =
-
+>
> BTW. I'm pretty sure we "accidentally" made config writes posted at
> least to the PHB on a number of powerpc systems forever and we *never*
> had a problem because of it ;)
@@ -73,48 +68,42 @@ Lorenzo
> > v2 -> v3:
> > - Created a default ioremap_nopost() implementation in a
> > separate
-> > =A0=A0asm-generic header and patched all arches to make use of it
+> > ??asm-generic header and patched all arches to make use of it
> > - Removed PCI drivers patches from the series to simplify the
-> > =A0=A0review, they will be posted separately once the
+> > ??review, they will be posted separately once the
> > ioremap_nopost()
-> > =A0=A0interface is settled
+> > ??interface is settled
> > - Fixed devm_ioremap_* BUS offset comments and implemented
-> > =A0=A0nopost interface on top of it
+> > ??nopost interface on top of it
> > - Added collected tags
-> > =
-
+> >
> > v1: https://lkml.org/lkml/2017/2/27/228
-> > =
-
+> >
> > v1 -> v2:
> > - Changed pci_remap_cfgspace() to more generic ioremap_nopost()
-> > =A0=A0interface
+> > ??interface
> > - Added pgprot_nonposted
> > - Fixed build errors on arches not relying on asm-generic
> > headers
> > - Added PCI versatile host controller driver patch
> > - Added missing config space remapping to hisilicon host
> > controller
-> > =
-
+> >
> > ---------------------
> > Original cover letter
> > ---------------------
-> > =
-
+> >
> > PCI local bus specifications (Rev3.0, 3.2.5 "Transaction Ordering
> > and Posting") strictly require PCI configuration and I/O Address
> > space
> > write transactions to be non-posted.
-> > =
-
+> >
> > Current crop of DT/ACPI PCI host controllers drivers relies on
> > the ioremap interface to map ECAM and ECAM-derivative PCI config
> > regions and pci_remap_iospace() to create a VMA for mapping
> > PCI host bridge I/O Address space transactions to CPU virtual address
> > space.
-> > =
-
+> >
> > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI
> > configuration non-posted write transactions requirement, because it
> > provides a memory mapping that issues "bufferable" or, in PCI terms
@@ -126,141 +115,103 @@ Lorenzo
> > attributes that on eg ARM64 provides a memory mapping issuing
> > posted writes transactions, which is not PCI specifications
> > compliant.
-> > =
-
+> >
> > This patch series[1] addresses both issues in one go:
-> > =
-
+> >
> > - It updates the pci_remap_iospace() function to use a page mapping
-> > =A0 that guarantees non-posted write transactions for I/O space
+> > ? that guarantees non-posted write transactions for I/O space
> > addresses
> > - It adds a kernel API to remap PCI config space resources, so that
-> > =A0 architecture can override it with a mapping implementation that
-> > =A0 guarantees PCI specifications compliancy wrt non-posted write
-> > =A0 configuration transactions
+> > ? architecture can override it with a mapping implementation that
+> > ? guarantees PCI specifications compliancy wrt non-posted write
+> > ? configuration transactions
> > - It updates all PCI host controller implementations (and the generic
-> > =A0 ECAM layer) to use the newly introduced mapping interface
-> > =
-
+> > ? ECAM layer) to use the newly introduced mapping interface
+> >
> > Tested on Juno ECAM based interface (DT/ACPI).
-> > =
-
+> >
> > Non-ECAM PCI host controller drivers patches need checking to make
> > sure that:
-> > =
-
+> >
> > - I patched the correct resource region mapping for config space
> > - There are not any other ways to ensure posted-write completion
-> > =A0 in the respective pci_ops that make the relevant patch unnecessary
-> > =
-
+> > ? in the respective pci_ops that make the relevant patch unnecessary
+> >
> > [1]
> > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git
> > pci/config-io-mappings-fix-v3
-> > =
-
+> >
> > Lorenzo Pieralisi (32):
-> > =A0 PCI: remove __weak tag from pci_remap_iospace()
-> > =A0 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute
-> > =A0 PCI: fix pci_remap_iospace() remap attribute
-> > =A0 asm-generic: add ioremap_nopost() remap interface
-> > =A0 alpha: include default ioremap_nopost() implementation
-> > =A0 avr32: include default ioremap_nopost() implementation
-> > =A0 arc: include default ioremap_nopost() implementation
-> > =A0 cris: include default ioremap_nopost() implementation
-> > =A0 frv: include default ioremap_nopost() implementation
-> > =A0 hexagon: include default ioremap_nopost() implementation
-> > =A0 ia64: include default ioremap_nopost() implementation
-> > =A0 m32r: include default ioremap_nopost() implementation
-> > =A0 m68k: include default ioremap_nopost() implementation
-> > =A0 metag: include default ioremap_nopost() implementation
-> > =A0 microblaze: include default ioremap_nopost() implementation
-> > =A0 mips: include default ioremap_nopost() implementation
-> > =A0 mn10300: include default ioremap_nopost() implementation
-> > =A0 nios2: include default ioremap_nopost() implementation
-> > =A0 openrisc: include default ioremap_nopost() implementation
-> > =A0 parisc: include default ioremap_nopost() implementation
-> > =A0 powerpc: include default ioremap_nopost() implementation
-> > =A0 s390: include default ioremap_nopost() implementation
-> > =A0 sh: include default ioremap_nopost() implementation
-> > =A0 sparc: include default ioremap_nopost() implementation
-> > =A0 tile: include default ioremap_nopost() implementation
-> > =A0 unicore32: include default ioremap_nopost() implementation
-> > =A0 x86: include default ioremap_nopost() implementation
-> > =A0 xtensa: include default ioremap_nopost() implementation
-> > =A0 arm64: implement ioremap_nopost() interface
-> > =A0 arm: implement ioremap_nopost() interface
-> > =A0 lib: fix Devres devm_ioremap_* offset parameter kerneldoc
+> > ? PCI: remove __weak tag from pci_remap_iospace()
+> > ? asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute
+> > ? PCI: fix pci_remap_iospace() remap attribute
+> > ? asm-generic: add ioremap_nopost() remap interface
+> > ? alpha: include default ioremap_nopost() implementation
+> > ? avr32: include default ioremap_nopost() implementation
+> > ? arc: include default ioremap_nopost() implementation
+> > ? cris: include default ioremap_nopost() implementation
+> > ? frv: include default ioremap_nopost() implementation
+> > ? hexagon: include default ioremap_nopost() implementation
+> > ? ia64: include default ioremap_nopost() implementation
+> > ? m32r: include default ioremap_nopost() implementation
+> > ? m68k: include default ioremap_nopost() implementation
+> > ? metag: include default ioremap_nopost() implementation
+> > ? microblaze: include default ioremap_nopost() implementation
+> > ? mips: include default ioremap_nopost() implementation
+> > ? mn10300: include default ioremap_nopost() implementation
+> > ? nios2: include default ioremap_nopost() implementation
+> > ? openrisc: include default ioremap_nopost() implementation
+> > ? parisc: include default ioremap_nopost() implementation
+> > ? powerpc: include default ioremap_nopost() implementation
+> > ? s390: include default ioremap_nopost() implementation
+> > ? sh: include default ioremap_nopost() implementation
+> > ? sparc: include default ioremap_nopost() implementation
+> > ? tile: include default ioremap_nopost() implementation
+> > ? unicore32: include default ioremap_nopost() implementation
+> > ? x86: include default ioremap_nopost() implementation
+> > ? xtensa: include default ioremap_nopost() implementation
+> > ? arm64: implement ioremap_nopost() interface
+> > ? arm: implement ioremap_nopost() interface
+> > ? lib: fix Devres devm_ioremap_* offset parameter kerneldoc
> > description
-> > =A0 lib: implement Devres ioremap_nopost() interface
-> > =
-
-> > =A0Documentation/driver-model/devres.txt |=A0=A03 ++
-> > =A0arch/alpha/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/arc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/arm/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A09 ++++
-> > =A0arch/arm/mm/ioremap.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0|=A0=A07 +++
-> > =A0arch/arm/mm/nommu.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0|=A0=A09 ++++
-> > =A0arch/arm64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0| 12 +++=
-++
-> > =A0arch/avr32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/cris/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/frv/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/hexagon/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +
-> > =A0arch/ia64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/m32r/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/m68k/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/metag/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02=
- +
-> > =A0arch/microblaze/include/asm/io.h=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/mips/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/mn10300/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/nios2/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/openrisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +
-> > =A0arch/parisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/powerpc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/s390/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/sh/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=
-=A0=A01 +
-> > =A0arch/sparc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=
- +
-> > =A0arch/tile/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/unicore32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0arch/x86/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=
-=A01 +
-> > =A0arch/xtensa/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +
-> > =A0drivers/pci/pci.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0|=A0=A04 +-
-> > =A0include/asm-generic/ioremap-nopost.h=A0=A0|=A0=A09 ++++
-> > =A0include/asm-generic/pgtable.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A04 ++
-> > =A0include/linux/device.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0|=A0=A02 +
-> > =A0include/linux/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0|=A0=A02 +
-> > =A0lib/devres.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
-=A0=A0=A0=A0=A0=A0=A0=A0| 84
+> > ? lib: implement Devres ioremap_nopost() interface
+> >
+> > ?Documentation/driver-model/devres.txt |??3 ++
+> > ?arch/alpha/include/asm/io.h???????????|??1 +
+> > ?arch/arc/include/asm/io.h?????????????|??1 +
+> > ?arch/arm/include/asm/io.h?????????????|??9 ++++
+> > ?arch/arm/mm/ioremap.c?????????????????|??7 +++
+> > ?arch/arm/mm/nommu.c???????????????????|??9 ++++
+> > ?arch/arm64/include/asm/io.h???????????| 12 +++++
+> > ?arch/avr32/include/asm/io.h???????????|??1 +
+> > ?arch/cris/include/asm/io.h????????????|??1 +
+> > ?arch/frv/include/asm/io.h?????????????|??1 +
+> > ?arch/hexagon/include/asm/io.h?????????|??2 +
+> > ?arch/ia64/include/asm/io.h????????????|??1 +
+> > ?arch/m32r/include/asm/io.h????????????|??1 +
+> > ?arch/m68k/include/asm/io.h????????????|??1 +
+> > ?arch/metag/include/asm/io.h???????????|??2 +
+> > ?arch/microblaze/include/asm/io.h??????|??1 +
+> > ?arch/mips/include/asm/io.h????????????|??1 +
+> > ?arch/mn10300/include/asm/io.h?????????|??1 +
+> > ?arch/nios2/include/asm/io.h???????????|??1 +
+> > ?arch/openrisc/include/asm/io.h????????|??2 +
+> > ?arch/parisc/include/asm/io.h??????????|??1 +
+> > ?arch/powerpc/include/asm/io.h?????????|??1 +
+> > ?arch/s390/include/asm/io.h????????????|??1 +
+> > ?arch/sh/include/asm/io.h??????????????|??1 +
+> > ?arch/sparc/include/asm/io.h???????????|??1 +
+> > ?arch/tile/include/asm/io.h????????????|??1 +
+> > ?arch/unicore32/include/asm/io.h???????|??1 +
+> > ?arch/x86/include/asm/io.h?????????????|??1 +
+> > ?arch/xtensa/include/asm/io.h??????????|??1 +
+> > ?drivers/pci/pci.c?????????????????????|??4 +-
+> > ?include/asm-generic/ioremap-nopost.h??|??9 ++++
+> > ?include/asm-generic/pgtable.h?????????|??4 ++
+> > ?include/linux/device.h????????????????|??2 +
+> > ?include/linux/io.h????????????????????|??2 +
+> > ?lib/devres.c??????????????????????????| 84
> > +++++++++++++++++++++++++++++++++--
-> > =A035 files changed, 167 insertions(+), 5 deletions(-)
-> > =A0create mode 100644 include/asm-generic/ioremap-nopost.h
-> > =
-
-
-_______________________________________________
-linux-arm-kernel mailing list
-linux-arm-kernel@lists.infradead.org
-http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
\ No newline at end of file
+> > ?35 files changed, 167 insertions(+), 5 deletions(-)
+> > ?create mode 100644 include/asm-generic/ioremap-nopost.h
+> >
\ No newline at end of file
diff --git a/a/content_digest b/N2/content_digest
index 24a8583..49f4b09 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -5,65 +5,16 @@
"ref\0001491917906.7236.7.camel\@kernel.crashing.org\0"
]
[
- "From\0Lorenzo Pieralisi <lorenzo.pieralisi\@arm.com>\0"
+ "From\0lorenzo.pieralisi\@arm.com (Lorenzo Pieralisi)\0"
]
[
- "Subject\0Re: [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings\0"
+ "Subject\0[PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings\0"
]
[
"Date\0Tue, 11 Apr 2017 15:08:57 +0100\0"
]
[
- "To\0Benjamin Herrenschmidt <benh\@kernel.crashing.org>\0"
-]
-[
- "Cc\0Jonas Bonn <jonas\@southpole.se>",
- " Rich Felker <dalias\@libc.org>",
- " linux-pci\@vger.kernel.org",
- " Will Deacon <will.deacon\@arm.com>",
- " James E.J. Bottomley <jejb\@parisc-linux.org>",
- " David Howells <dhowells\@redhat.com>",
- " Max Filippov <jcmvbkbc\@gmail.com>",
- " Paul Mackerras <paulus\@samba.org>",
- " Huacai Chen <chenhc\@lemote.com>",
- " Guan Xuetao <gxt\@mprc.pku.edu.cn>",
- " Thomas Gleixner <tglx\@linutronix.de>",
- " Hans-Christian Egtvedt <egtvedt\@samfundet.no>",
- " linux-arch\@vger.kernel.org",
- " Jesper Nilsson <jesper.nilsson\@axis.com>",
- " Yoshinori Sato <ysato\@users.sourceforge.jp>",
- " Michael Ellerman <mpe\@ellerman.id.au>",
- " Helge Deller <deller\@gmx.de>",
- " Russell King <linux\@armlinux.org.uk>",
- " Ingo Molnar <mingo\@redhat.com>",
- " Geert Uytterhoeven <geert\@linux-m68k.org>",
- " Catalin Marinas <catalin.marinas\@arm.com>",
- " Matt Turner <mattst88\@gmail.com>",
- " Haavard Skinnemoen <hskinnemoen\@gmail.com>",
- " Fenghua Yu <fenghua.yu\@intel.com>",
- " James Hogan <james.hogan\@imgtec.com>",
- " Chris Metcalf <cmetcalf\@mellanox.com>",
- " Arnd Bergmann <arnd\@arndb.de>",
- " Heiko Carstens <heiko.carstens\@de.ibm.com>",
- " Stefan Kristiansson <stefan.kristiansson\@saunalahti.fi>",
- " Mikael Starvik <starvik\@axis.com>",
- " Ivan Kokshaysky <ink\@jurassic.park.msu.ru>",
- " Bjorn Helgaas <bhelgaas\@google.com>",
- " Stafford Horne <shorne\@gmail.com>",
- " linux-arm-kernel\@lists.infradead.org",
- " Richard Henderson <rth\@twiddle.net>",
- " Chris Zankel <chris\@zankel.net>",
- " Michal Simek <monstr\@monstr.eu>",
- " Tony Luck <tony.luck\@intel.com>",
- " Vineet Gupta <vgupta\@synopsys.com>",
- " linux-kernel\@vger.kernel.org",
- " Ralf Baechle <ralf\@linux-mips.org>",
- " Richard Kuo <rkuo\@codeaurora.org>",
- " Niklas Cassel <nks\@flawful.org>",
- " Luis R. Rodriguez <mcgrof\@kernel.org>",
- " Martin Schwidefsky <schwidefsky\@de.ibm.com>",
- " Ley Foon Tan <lftan\@altera.com>",
- " David S. Miller <davem\@davemloft.net>\0"
+ "To\0linux-arm-kernel\@lists.infradead.org\0"
]
[
"\0000:1\0"
@@ -75,19 +26,15 @@
"On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote:\n",
"> On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote:\n",
"> > This patch series[1] is a v3 of a previous version:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v2: https://lkml.org/lkml/2017/3/27/220\n",
- "> =\n",
- "\n",
+ "> \n",
"> I am not a fan of this at All.\n",
- "> =\n",
- "\n",
+ "> \n",
"> That whole concept of \"ioremap_nopost\" is simply not applicable to the\n",
"> majority of architectures and certainly not in a way that can apply to\n",
"> arbitrary mappings.\n",
- "> =\n",
- "\n",
+ "> \n",
"> It's also very wrong to provide a \"default\" operation whose semantics\n",
"> are weaker than what it's supposed to implement. Very wrong actually.\n",
"> People will use it assuming the non-posted behaviour and things will\n",
@@ -132,8 +79,7 @@
"> sauce to provide the illusion of non-posting, then implement this in\n",
"> the actual root complex code.\n",
"\n",
- "> =\n",
- "\n",
+ "> \n",
"> BTW. I'm pretty sure we \"accidentally\" made config writes posted at\n",
"> least to the PHB on a number of powerpc systems forever and we *never*\n",
"> had a problem because of it ;)\n",
@@ -147,48 +93,42 @@
"> > v2 -> v3:\n",
"> > \t- Created a default ioremap_nopost() implementation in a\n",
"> > separate\n",
- "> > \t=A0=A0asm-generic header and patched all arches to make use of it\n",
+ "> > \t??asm-generic header and patched all arches to make use of it\n",
"> > \t- Removed PCI drivers patches from the series to simplify the\n",
- "> > \t=A0=A0review, they will be posted separately once the\n",
+ "> > \t??review, they will be posted separately once the\n",
"> > ioremap_nopost()\n",
- "> > \t=A0=A0interface is settled\n",
+ "> > \t??interface is settled\n",
"> > \t- Fixed devm_ioremap_* BUS offset comments and implemented\n",
- "> > \t=A0=A0nopost interface on top of it\n",
+ "> > \t??nopost interface on top of it\n",
"> > \t- Added collected tags\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v1: https://lkml.org/lkml/2017/2/27/228\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > v1 -> v2:\n",
"> > \t- Changed pci_remap_cfgspace() to more generic ioremap_nopost()\n",
- "> > \t=A0=A0interface\n",
+ "> > \t??interface\n",
"> > \t- Added pgprot_nonposted\n",
"> > \t- Fixed build errors on arches not relying on asm-generic\n",
"> > headers\n",
"> > \t- Added PCI versatile host controller driver patch\n",
"> > \t- Added missing config space remapping to hisilicon host\n",
"> > controller\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > ---------------------\n",
"> > Original cover letter\n",
"> > ---------------------\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > PCI local bus specifications (Rev3.0, 3.2.5 \"Transaction Ordering\n",
"> > and Posting\") strictly require PCI configuration and I/O Address\n",
"> > space\n",
"> > write transactions to be non-posted.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Current crop of DT/ACPI PCI host controllers drivers relies on\n",
"> > the ioremap interface to map ECAM and ECAM-derivative PCI config\n",
"> > regions and pci_remap_iospace() to create a VMA for mapping\n",
"> > PCI host bridge I/O Address space transactions to CPU virtual address\n",
"> > space.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI\n",
"> > configuration non-posted write transactions requirement, because it\n",
"> > provides a memory mapping that issues \"bufferable\" or, in PCI terms\n",
@@ -200,144 +140,106 @@
"> > attributes that on eg ARM64 provides a memory mapping issuing\n",
"> > posted writes transactions, which is not PCI specifications\n",
"> > compliant.\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > This patch series[1] addresses both issues in one go:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > - It updates the pci_remap_iospace() function to use a page mapping\n",
- "> > =A0 that guarantees non-posted write transactions for I/O space\n",
+ "> > ? that guarantees non-posted write transactions for I/O space\n",
"> > addresses\n",
"> > - It adds a kernel API to remap PCI config space resources, so that\n",
- "> > =A0 architecture can override it with a mapping implementation that\n",
- "> > =A0 guarantees PCI specifications compliancy wrt non-posted write\n",
- "> > =A0 configuration transactions\n",
+ "> > ? architecture can override it with a mapping implementation that\n",
+ "> > ? guarantees PCI specifications compliancy wrt non-posted write\n",
+ "> > ? configuration transactions\n",
"> > - It updates all PCI host controller implementations (and the generic\n",
- "> > =A0 ECAM layer) to use the newly introduced mapping interface\n",
- "> > =\n",
- "\n",
+ "> > ? ECAM layer) to use the newly introduced mapping interface\n",
+ "> > \n",
"> > Tested on Juno ECAM based interface (DT/ACPI).\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Non-ECAM PCI host controller drivers patches need checking to make\n",
"> > sure that:\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > - I patched the correct resource region mapping for config space\n",
"> > - There are not any other ways to ensure posted-write completion\n",
- "> > =A0 in the respective pci_ops that make the relevant patch unnecessary\n",
- "> > =\n",
- "\n",
+ "> > ? in the respective pci_ops that make the relevant patch unnecessary\n",
+ "> > \n",
"> > [1]\n",
"> > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git\n",
"> > pci/config-io-mappings-fix-v3\n",
- "> > =\n",
- "\n",
+ "> > \n",
"> > Lorenzo Pieralisi (32):\n",
- "> > =A0 PCI: remove __weak tag from pci_remap_iospace()\n",
- "> > =A0 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n",
- "> > =A0 PCI: fix pci_remap_iospace() remap attribute\n",
- "> > =A0 asm-generic: add ioremap_nopost() remap interface\n",
- "> > =A0 alpha: include default ioremap_nopost() implementation\n",
- "> > =A0 avr32: include default ioremap_nopost() implementation\n",
- "> > =A0 arc: include default ioremap_nopost() implementation\n",
- "> > =A0 cris: include default ioremap_nopost() implementation\n",
- "> > =A0 frv: include default ioremap_nopost() implementation\n",
- "> > =A0 hexagon: include default ioremap_nopost() implementation\n",
- "> > =A0 ia64: include default ioremap_nopost() implementation\n",
- "> > =A0 m32r: include default ioremap_nopost() implementation\n",
- "> > =A0 m68k: include default ioremap_nopost() implementation\n",
- "> > =A0 metag: include default ioremap_nopost() implementation\n",
- "> > =A0 microblaze: include default ioremap_nopost() implementation\n",
- "> > =A0 mips: include default ioremap_nopost() implementation\n",
- "> > =A0 mn10300: include default ioremap_nopost() implementation\n",
- "> > =A0 nios2: include default ioremap_nopost() implementation\n",
- "> > =A0 openrisc: include default ioremap_nopost() implementation\n",
- "> > =A0 parisc: include default ioremap_nopost() implementation\n",
- "> > =A0 powerpc: include default ioremap_nopost() implementation\n",
- "> > =A0 s390: include default ioremap_nopost() implementation\n",
- "> > =A0 sh: include default ioremap_nopost() implementation\n",
- "> > =A0 sparc: include default ioremap_nopost() implementation\n",
- "> > =A0 tile: include default ioremap_nopost() implementation\n",
- "> > =A0 unicore32: include default ioremap_nopost() implementation\n",
- "> > =A0 x86: include default ioremap_nopost() implementation\n",
- "> > =A0 xtensa: include default ioremap_nopost() implementation\n",
- "> > =A0 arm64: implement ioremap_nopost() interface\n",
- "> > =A0 arm: implement ioremap_nopost() interface\n",
- "> > =A0 lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n",
+ "> > ? PCI: remove __weak tag from pci_remap_iospace()\n",
+ "> > ? asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n",
+ "> > ? PCI: fix pci_remap_iospace() remap attribute\n",
+ "> > ? asm-generic: add ioremap_nopost() remap interface\n",
+ "> > ? alpha: include default ioremap_nopost() implementation\n",
+ "> > ? avr32: include default ioremap_nopost() implementation\n",
+ "> > ? arc: include default ioremap_nopost() implementation\n",
+ "> > ? cris: include default ioremap_nopost() implementation\n",
+ "> > ? frv: include default ioremap_nopost() implementation\n",
+ "> > ? hexagon: include default ioremap_nopost() implementation\n",
+ "> > ? ia64: include default ioremap_nopost() implementation\n",
+ "> > ? m32r: include default ioremap_nopost() implementation\n",
+ "> > ? m68k: include default ioremap_nopost() implementation\n",
+ "> > ? metag: include default ioremap_nopost() implementation\n",
+ "> > ? microblaze: include default ioremap_nopost() implementation\n",
+ "> > ? mips: include default ioremap_nopost() implementation\n",
+ "> > ? mn10300: include default ioremap_nopost() implementation\n",
+ "> > ? nios2: include default ioremap_nopost() implementation\n",
+ "> > ? openrisc: include default ioremap_nopost() implementation\n",
+ "> > ? parisc: include default ioremap_nopost() implementation\n",
+ "> > ? powerpc: include default ioremap_nopost() implementation\n",
+ "> > ? s390: include default ioremap_nopost() implementation\n",
+ "> > ? sh: include default ioremap_nopost() implementation\n",
+ "> > ? sparc: include default ioremap_nopost() implementation\n",
+ "> > ? tile: include default ioremap_nopost() implementation\n",
+ "> > ? unicore32: include default ioremap_nopost() implementation\n",
+ "> > ? x86: include default ioremap_nopost() implementation\n",
+ "> > ? xtensa: include default ioremap_nopost() implementation\n",
+ "> > ? arm64: implement ioremap_nopost() interface\n",
+ "> > ? arm: implement ioremap_nopost() interface\n",
+ "> > ? lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n",
"> > description\n",
- "> > =A0 lib: implement Devres ioremap_nopost() interface\n",
- "> > =\n",
- "\n",
- "> > =A0Documentation/driver-model/devres.txt |=A0=A03 ++\n",
- "> > =A0arch/alpha/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/arc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/arm/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A09 ++++\n",
- "> > =A0arch/arm/mm/ioremap.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0|=A0=A07 +++\n",
- "> > =A0arch/arm/mm/nommu.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0|=A0=A09 ++++\n",
- "> > =A0arch/arm64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0| 12 +++=\n",
- "++\n",
- "> > =A0arch/avr32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/cris/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/frv/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/hexagon/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0arch/ia64/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/m32r/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/m68k/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/metag/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02=\n",
- " +\n",
- "> > =A0arch/microblaze/include/asm/io.h=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/mips/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/mn10300/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/nios2/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/openrisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0arch/parisc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/powerpc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/s390/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/sh/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=\n",
- "=A0=A01 +\n",
- "> > =A0arch/sparc/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01=\n",
- " +\n",
- "> > =A0arch/tile/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/unicore32/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0arch/x86/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=\n",
- "=A01 +\n",
- "> > =A0arch/xtensa/include/asm/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A01 +\n",
- "> > =A0drivers/pci/pci.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0|=A0=A04 +-\n",
- "> > =A0include/asm-generic/ioremap-nopost.h=A0=A0|=A0=A09 ++++\n",
- "> > =A0include/asm-generic/pgtable.h=A0=A0=A0=A0=A0=A0=A0=A0=A0|=A0=A04 ++\n",
- "> > =A0include/linux/device.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0|=A0=A02 +\n",
- "> > =A0include/linux/io.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0|=A0=A02 +\n",
- "> > =A0lib/devres.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=\n",
- "=A0=A0=A0=A0=A0=A0=A0=A0| 84\n",
+ "> > ? lib: implement Devres ioremap_nopost() interface\n",
+ "> > \n",
+ "> > ?Documentation/driver-model/devres.txt |??3 ++\n",
+ "> > ?arch/alpha/include/asm/io.h???????????|??1 +\n",
+ "> > ?arch/arc/include/asm/io.h?????????????|??1 +\n",
+ "> > ?arch/arm/include/asm/io.h?????????????|??9 ++++\n",
+ "> > ?arch/arm/mm/ioremap.c?????????????????|??7 +++\n",
+ "> > ?arch/arm/mm/nommu.c???????????????????|??9 ++++\n",
+ "> > ?arch/arm64/include/asm/io.h???????????| 12 +++++\n",
+ "> > ?arch/avr32/include/asm/io.h???????????|??1 +\n",
+ "> > ?arch/cris/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/frv/include/asm/io.h?????????????|??1 +\n",
+ "> > ?arch/hexagon/include/asm/io.h?????????|??2 +\n",
+ "> > ?arch/ia64/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/m32r/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/m68k/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/metag/include/asm/io.h???????????|??2 +\n",
+ "> > ?arch/microblaze/include/asm/io.h??????|??1 +\n",
+ "> > ?arch/mips/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/mn10300/include/asm/io.h?????????|??1 +\n",
+ "> > ?arch/nios2/include/asm/io.h???????????|??1 +\n",
+ "> > ?arch/openrisc/include/asm/io.h????????|??2 +\n",
+ "> > ?arch/parisc/include/asm/io.h??????????|??1 +\n",
+ "> > ?arch/powerpc/include/asm/io.h?????????|??1 +\n",
+ "> > ?arch/s390/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/sh/include/asm/io.h??????????????|??1 +\n",
+ "> > ?arch/sparc/include/asm/io.h???????????|??1 +\n",
+ "> > ?arch/tile/include/asm/io.h????????????|??1 +\n",
+ "> > ?arch/unicore32/include/asm/io.h???????|??1 +\n",
+ "> > ?arch/x86/include/asm/io.h?????????????|??1 +\n",
+ "> > ?arch/xtensa/include/asm/io.h??????????|??1 +\n",
+ "> > ?drivers/pci/pci.c?????????????????????|??4 +-\n",
+ "> > ?include/asm-generic/ioremap-nopost.h??|??9 ++++\n",
+ "> > ?include/asm-generic/pgtable.h?????????|??4 ++\n",
+ "> > ?include/linux/device.h????????????????|??2 +\n",
+ "> > ?include/linux/io.h????????????????????|??2 +\n",
+ "> > ?lib/devres.c??????????????????????????| 84\n",
"> > +++++++++++++++++++++++++++++++++--\n",
- "> > =A035 files changed, 167 insertions(+), 5 deletions(-)\n",
- "> > =A0create mode 100644 include/asm-generic/ioremap-nopost.h\n",
- "> > =\n",
- "\n",
- "\n",
- "_______________________________________________\n",
- "linux-arm-kernel mailing list\n",
- "linux-arm-kernel\@lists.infradead.org\n",
- "http://lists.infradead.org/mailman/listinfo/linux-arm-kernel"
+ "> > ?35 files changed, 167 insertions(+), 5 deletions(-)\n",
+ "> > ?create mode 100644 include/asm-generic/ioremap-nopost.h\n",
+ "> >"
]
-64d5c6e99cf2ca67777cb8a0dda0006a82b4f99e6b38a8edeed1ca1730114a49
+4ce4581fb4af6f32114e259feb863d06f87c2c63ac4549148138aa775d654c79
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.