Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1609671 > unrolled thread
| Started by | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| First post | 2017-03-27 12:00 +0200 |
| Last post | 2017-03-27 12:10 +0200 |
| Articles | 16 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH v2 00/22] PCI: fix config and I/O Address space memory mappings Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:00 +0200
[PATCH v2 06/22] ARM: implement ioremap_nopost() interface Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
Re: [PATCH v2 06/22] ARM: implement ioremap_nopost() interface Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-31 13:10 +0200
Re: [PATCH v2 06/22] ARM: implement ioremap_nopost() interface Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-04-05 12:30 +0200
[PATCH v2 21/22] PCI: keystone-dw: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 10/22] PCI: xilinx-nwl: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 11/22] PCI: spear13xx: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 19/22] PCI: tegra: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 12/22] PCI: rockchip: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 18/22] PCI: xgene: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 14/22] PCI: iproc-platform: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 22/22] PCI: versatile: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 17/22] PCI: armada8k: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 15/22] PCI: hisi: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 20/22] PCI: layerscape: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
[PATCH v2 13/22] PCI: qcom: update PCI config space remap function Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2017-03-27 12:10 +0200
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:00 +0200 |
| Subject | [PATCH v2 00/22] PCI: fix config and I/O Address space memory mappings |
| Message-ID | <tpzBo-66r-9@gated-at.bofh.it> |
This patch series[1] is a v2 of a previous version: v1 -> v2: - Changed pci_remap_cfgspace() to more generic ioremap_nopost() 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 - Rebased against v4.11-rc4 v1: https://lkml.org/lkml/2017/2/27/228 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 "posted" write transactions. Likewise, the current pci_remap_iospace() implementation maps the physical address range that the PCI translates to I/O space cycles to virtual address space through pgprot_device() 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 that guarantees non-posted write transactions for I/O space addresses - It adds a kernel API to remap PCI config space resources, so that 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 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 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-v2 Cc: Pratyush Anand <pratyush.anand@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Will Deacon <will.deacon@arm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jingoo Han <jingoohan1@gmail.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Mingkai Hu <mingkai.hu@freescale.com> Cc: Tanmay Inamdar <tinamdar@apm.com> Cc: Murali Karicheri <m-karicheri2@ti.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com> Cc: Ray Jui <rjui@broadcom.com> Cc: Wenrui Li <wenrui.li@rock-chips.com> Cc: Shawn Lin <shawn.lin@rock-chips.com> Cc: Minghuan Lian <minghuan.Lian@freescale.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Jon Mason <jonmason@broadcom.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Gabriele Paoloni <gabriele.paoloni@huawei.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Joao Pinto <Joao.Pinto@synopsys.com> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Luis R. Rodriguez <mcgrof@kernel.org> Cc: Michal Simek <michal.simek@xilinx.com> Cc: Haavard Skinnemoen <hskinnemoen@gmail.com> Cc: Stanimir Varbanov <svarbanov@mm-sol.com> Cc: Zhou Wang <wangzhou1@hisilicon.com> Cc: Roy Zang <tie-fei.zang@freescale.com> Lorenzo Pieralisi (22): PCI: remove __weak tag from pci_remap_iospace() asm-generic/io.h: add ioremap_nopost remap interface asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute PCI: fix pci_remap_iospace() remap attribute ARM64: implement ioremap_nopost() interface ARM: implement ioremap_nopost() interface PCI: ECAM: use ioremap_nopost() to map config region lib: implement Devres ioremap_nopost() interface PCI: xilinx: update PCI config space remap function PCI: xilinx-nwl: update PCI config space remap function PCI: spear13xx: update PCI config space remap function PCI: rockchip: update PCI config space remap function PCI: qcom: update PCI config space remap function PCI: iproc-platform: update PCI config space remap function PCI: hisi: update PCI config space remap function PCI: designware: update PCI config space remap function PCI: armada8k: update PCI config space remap function PCI: xgene: update PCI config space remap function PCI: tegra: update PCI config space remap function PCI: layerscape: update PCI config space remap function PCI: keystone-dw: update PCI config space remap function PCI: versatile: update PCI config space remap function Documentation/driver-model/devres.txt | 3 ++ arch/alpha/include/asm/io.h | 1 + arch/arm/include/asm/io.h | 10 +++++ 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/frv/include/asm/io.h | 1 + arch/ia64/include/asm/io.h | 1 + arch/x86/include/asm/io.h | 1 + drivers/pci/dwc/pci-keystone-dw.c | 2 +- drivers/pci/dwc/pci-layerscape.c | 2 +- drivers/pci/dwc/pcie-armada8k.c | 2 +- drivers/pci/dwc/pcie-designware-host.c | 12 +++--- drivers/pci/dwc/pcie-hisi.c | 7 ++- drivers/pci/dwc/pcie-qcom.c | 2 +- drivers/pci/dwc/pcie-spear13xx.c | 2 +- drivers/pci/ecam.c | 5 ++- drivers/pci/host/pci-tegra.c | 4 +- drivers/pci/host/pci-versatile.c | 3 +- drivers/pci/host/pci-xgene.c | 4 +- drivers/pci/host/pcie-iproc-platform.c | 3 +- drivers/pci/host/pcie-rockchip.c | 2 +- drivers/pci/host/pcie-xilinx-nwl.c | 2 +- drivers/pci/host/pcie-xilinx.c | 2 +- drivers/pci/pci.c | 4 +- include/asm-generic/io.h | 4 ++ include/asm-generic/pgtable.h | 4 ++ include/linux/device.h | 2 + include/linux/io.h | 2 + lib/devres.c | 78 ++++++++++++++++++++++++++++++++++ 31 files changed, 166 insertions(+), 28 deletions(-) -- 2.10.0
[toc] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 06/22] ARM: implement ioremap_nopost() interface |
| Message-ID | <tpzL3-6pP-11@gated-at.bofh.it> |
| In reply to | #1609671 |
The PCI bus specifications (rev 3.0, 3.2.5 "Transaction Ordering
and Posting") define rules for PCI configuration space transactions
ordering and posting, that state that configuration writes have to
be non-posted transactions.
Current ioremap interface on ARM provides mapping functions that
provide "bufferable" writes transactions (ie ioremap uses MT_DEVICE
memory type) aka posted writes, so PCI host controller drivers have
no arch interface to remap PCI configuration space with memory
attributes that comply with the PCI specifications for configuration
space.
Implement an ARM specific ioremap_nopost() interface that allows to
map PCI config memory regions with MT_UNCACHED memory type (ie strongly
ordered - non-posted writes), providing a remap function that complies
with PCI specifications for config space transactions.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King <linux@armlinux.org.uk>
---
arch/arm/include/asm/io.h | 10 ++++++++++
arch/arm/mm/ioremap.c | 7 +++++++
arch/arm/mm/nommu.c | 9 +++++++++
3 files changed, 26 insertions(+)
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 42871fb..49913d1 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -352,6 +352,7 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
* mapping has specific properties.
*
* Function Memory type Cacheability Cache hint
+ * ioremap_nopost() SO n/a n/a
* ioremap() Device n/a n/a
* ioremap_nocache() Device n/a n/a
* ioremap_cache() Normal Writeback Read allocate
@@ -372,6 +373,12 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
* compiler may generate unaligned accesses - eg, via inlining its own
* memcpy.
*
+ * ioremap_nopost() maps memory as strongly ordered, to be used for
+ * specific mappings (eg PCI config space) that require non-posted
+ * write transactions. Strongly ordered transactions are ordered wrt
+ * device mappings, which means that ioremap_nopost() is the same
+ * as ioremap() except for non-posted writes behaviour.
+ *
* All normal memory mappings have the following properties:
* - reads can be repeated with no side effects
* - repeated reads return the last value written
@@ -407,6 +414,9 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size);
#define ioremap_wc ioremap_wc
#define ioremap_wt ioremap_wc
+void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size);
+#define ioremap_nopost ioremap_nopost
+
void iounmap(volatile void __iomem *iomem_cookie);
#define iounmap iounmap
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index ff0eed2..4ffaf16 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -463,6 +463,13 @@ void iounmap(volatile void __iomem *cookie)
}
EXPORT_SYMBOL(iounmap);
+void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
+{
+ return arch_ioremap_caller(res_cookie, size, MT_UNCACHED,
+ __builtin_return_address(0));
+}
+EXPORT_SYMBOL_GPL(ioremap_nopost);
+
#ifdef CONFIG_PCI
static int pci_ioremap_mem_type = MT_DEVICE;
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
index 3b5c7aa..dfd736a 100644
--- a/arch/arm/mm/nommu.c
+++ b/arch/arm/mm/nommu.c
@@ -21,6 +21,8 @@
#include <asm/mpu.h>
#include <asm/procinfo.h>
+#include <asm/mach/map.h>
+
#include "mm.h"
unsigned long vectors_base;
@@ -433,6 +435,13 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size)
}
EXPORT_SYMBOL(ioremap_wc);
+void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
+{
+ return __arm_ioremap_caller(res_cookie, size, MT_UNCACHED,
+ __builtin_return_address(0));
+}
+EXPORT_SYMBOL(ioremap_nopost);
+
void *arch_memremap_wb(phys_addr_t phys_addr, size_t size)
{
return (void *)phys_addr;
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-31 13:10 +0200 |
| Subject | Re: [PATCH v2 06/22] ARM: implement ioremap_nopost() interface |
| Message-ID | <tr2Bj-3PV-1@gated-at.bofh.it> |
| In reply to | #1609674 |
Hi Russell,
On Mon, Mar 27, 2017 at 10:49:34AM +0100, Lorenzo Pieralisi wrote:
> The PCI bus specifications (rev 3.0, 3.2.5 "Transaction Ordering
> and Posting") define rules for PCI configuration space transactions
> ordering and posting, that state that configuration writes have to
> be non-posted transactions.
>
> Current ioremap interface on ARM provides mapping functions that
> provide "bufferable" writes transactions (ie ioremap uses MT_DEVICE
> memory type) aka posted writes, so PCI host controller drivers have
> no arch interface to remap PCI configuration space with memory
> attributes that comply with the PCI specifications for configuration
> space.
>
> Implement an ARM specific ioremap_nopost() interface that allows to
> map PCI config memory regions with MT_UNCACHED memory type (ie strongly
> ordered - non-posted writes), providing a remap function that complies
> with PCI specifications for config space transactions.
>
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Russell King <linux@armlinux.org.uk>
> ---
> arch/arm/include/asm/io.h | 10 ++++++++++
> arch/arm/mm/ioremap.c | 7 +++++++
> arch/arm/mm/nommu.c | 9 +++++++++
> 3 files changed, 26 insertions(+)
I have not added your ACK to this patch since I slightly tweaked
it to adapt it to ioremap_nopost() interface instead of a PCI
specific one. Furthermore, I mechanically added a ioremap_nopost()
version for nommu too in the process, would be good to have a look
if I did that properly please.
Can I add your ACK on this patch ? If you spot any issues please
do let me know.
Thank you !
Lorenzo
> diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
> index 42871fb..49913d1 100644
> --- a/arch/arm/include/asm/io.h
> +++ b/arch/arm/include/asm/io.h
> @@ -352,6 +352,7 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
> * mapping has specific properties.
> *
> * Function Memory type Cacheability Cache hint
> + * ioremap_nopost() SO n/a n/a
> * ioremap() Device n/a n/a
> * ioremap_nocache() Device n/a n/a
> * ioremap_cache() Normal Writeback Read allocate
> @@ -372,6 +373,12 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
> * compiler may generate unaligned accesses - eg, via inlining its own
> * memcpy.
> *
> + * ioremap_nopost() maps memory as strongly ordered, to be used for
> + * specific mappings (eg PCI config space) that require non-posted
> + * write transactions. Strongly ordered transactions are ordered wrt
> + * device mappings, which means that ioremap_nopost() is the same
> + * as ioremap() except for non-posted writes behaviour.
> + *
> * All normal memory mappings have the following properties:
> * - reads can be repeated with no side effects
> * - repeated reads return the last value written
> @@ -407,6 +414,9 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size);
> #define ioremap_wc ioremap_wc
> #define ioremap_wt ioremap_wc
>
> +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size);
> +#define ioremap_nopost ioremap_nopost
> +
> void iounmap(volatile void __iomem *iomem_cookie);
> #define iounmap iounmap
>
> diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
> index ff0eed2..4ffaf16 100644
> --- a/arch/arm/mm/ioremap.c
> +++ b/arch/arm/mm/ioremap.c
> @@ -463,6 +463,13 @@ void iounmap(volatile void __iomem *cookie)
> }
> EXPORT_SYMBOL(iounmap);
>
> +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
> +{
> + return arch_ioremap_caller(res_cookie, size, MT_UNCACHED,
> + __builtin_return_address(0));
> +}
> +EXPORT_SYMBOL_GPL(ioremap_nopost);
> +
> #ifdef CONFIG_PCI
> static int pci_ioremap_mem_type = MT_DEVICE;
>
> diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
> index 3b5c7aa..dfd736a 100644
> --- a/arch/arm/mm/nommu.c
> +++ b/arch/arm/mm/nommu.c
> @@ -21,6 +21,8 @@
> #include <asm/mpu.h>
> #include <asm/procinfo.h>
>
> +#include <asm/mach/map.h>
> +
> #include "mm.h"
>
> unsigned long vectors_base;
> @@ -433,6 +435,13 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size)
> }
> EXPORT_SYMBOL(ioremap_wc);
>
> +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
> +{
> + return __arm_ioremap_caller(res_cookie, size, MT_UNCACHED,
> + __builtin_return_address(0));
> +}
> +EXPORT_SYMBOL(ioremap_nopost);
> +
> void *arch_memremap_wb(phys_addr_t phys_addr, size_t size)
> {
> return (void *)phys_addr;
> --
> 2.10.0
>
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-04-05 12:30 +0200 |
| Subject | Re: [PATCH v2 06/22] ARM: implement ioremap_nopost() interface |
| Message-ID | <tsQmm-1oW-1@gated-at.bofh.it> |
| In reply to | #1613867 |
On Fri, Mar 31, 2017 at 12:08:13PM +0100, Lorenzo Pieralisi wrote:
> Hi Russell,
>
> On Mon, Mar 27, 2017 at 10:49:34AM +0100, Lorenzo Pieralisi wrote:
> > The PCI bus specifications (rev 3.0, 3.2.5 "Transaction Ordering
> > and Posting") define rules for PCI configuration space transactions
> > ordering and posting, that state that configuration writes have to
> > be non-posted transactions.
> >
> > Current ioremap interface on ARM provides mapping functions that
> > provide "bufferable" writes transactions (ie ioremap uses MT_DEVICE
> > memory type) aka posted writes, so PCI host controller drivers have
> > no arch interface to remap PCI configuration space with memory
> > attributes that comply with the PCI specifications for configuration
> > space.
> >
> > Implement an ARM specific ioremap_nopost() interface that allows to
> > map PCI config memory regions with MT_UNCACHED memory type (ie strongly
> > ordered - non-posted writes), providing a remap function that complies
> > with PCI specifications for config space transactions.
> >
> > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > Cc: Arnd Bergmann <arnd@arndb.de>
> > Cc: Russell King <linux@armlinux.org.uk>
> > ---
> > arch/arm/include/asm/io.h | 10 ++++++++++
> > arch/arm/mm/ioremap.c | 7 +++++++
> > arch/arm/mm/nommu.c | 9 +++++++++
> > 3 files changed, 26 insertions(+)
>
> I have not added your ACK to this patch since I slightly tweaked
> it to adapt it to ioremap_nopost() interface instead of a PCI
> specific one. Furthermore, I mechanically added a ioremap_nopost()
> version for nommu too in the process, would be good to have a look
> if I did that properly please.
>
> Can I add your ACK on this patch ? If you spot any issues please
> do let me know.
Hi Russell,
please let me know if your ACK on this patch stands as I have to respin
it shortly for hopefully final round of review.
Thanks !
Lorenzo
> Thank you !
> Lorenzo
>
> > diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
> > index 42871fb..49913d1 100644
> > --- a/arch/arm/include/asm/io.h
> > +++ b/arch/arm/include/asm/io.h
> > @@ -352,6 +352,7 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
> > * mapping has specific properties.
> > *
> > * Function Memory type Cacheability Cache hint
> > + * ioremap_nopost() SO n/a n/a
> > * ioremap() Device n/a n/a
> > * ioremap_nocache() Device n/a n/a
> > * ioremap_cache() Normal Writeback Read allocate
> > @@ -372,6 +373,12 @@ static inline void memcpy_toio(volatile void __iomem *to, const void *from,
> > * compiler may generate unaligned accesses - eg, via inlining its own
> > * memcpy.
> > *
> > + * ioremap_nopost() maps memory as strongly ordered, to be used for
> > + * specific mappings (eg PCI config space) that require non-posted
> > + * write transactions. Strongly ordered transactions are ordered wrt
> > + * device mappings, which means that ioremap_nopost() is the same
> > + * as ioremap() except for non-posted writes behaviour.
> > + *
> > * All normal memory mappings have the following properties:
> > * - reads can be repeated with no side effects
> > * - repeated reads return the last value written
> > @@ -407,6 +414,9 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size);
> > #define ioremap_wc ioremap_wc
> > #define ioremap_wt ioremap_wc
> >
> > +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size);
> > +#define ioremap_nopost ioremap_nopost
> > +
> > void iounmap(volatile void __iomem *iomem_cookie);
> > #define iounmap iounmap
> >
> > diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
> > index ff0eed2..4ffaf16 100644
> > --- a/arch/arm/mm/ioremap.c
> > +++ b/arch/arm/mm/ioremap.c
> > @@ -463,6 +463,13 @@ void iounmap(volatile void __iomem *cookie)
> > }
> > EXPORT_SYMBOL(iounmap);
> >
> > +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
> > +{
> > + return arch_ioremap_caller(res_cookie, size, MT_UNCACHED,
> > + __builtin_return_address(0));
> > +}
> > +EXPORT_SYMBOL_GPL(ioremap_nopost);
> > +
> > #ifdef CONFIG_PCI
> > static int pci_ioremap_mem_type = MT_DEVICE;
> >
> > diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
> > index 3b5c7aa..dfd736a 100644
> > --- a/arch/arm/mm/nommu.c
> > +++ b/arch/arm/mm/nommu.c
> > @@ -21,6 +21,8 @@
> > #include <asm/mpu.h>
> > #include <asm/procinfo.h>
> >
> > +#include <asm/mach/map.h>
> > +
> > #include "mm.h"
> >
> > unsigned long vectors_base;
> > @@ -433,6 +435,13 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size)
> > }
> > EXPORT_SYMBOL(ioremap_wc);
> >
> > +void __iomem *ioremap_nopost(resource_size_t res_cookie, size_t size)
> > +{
> > + return __arm_ioremap_caller(res_cookie, size, MT_UNCACHED,
> > + __builtin_return_address(0));
> > +}
> > +EXPORT_SYMBOL(ioremap_nopost);
> > +
> > void *arch_memremap_wb(phys_addr_t phys_addr, size_t size)
> > {
> > return (void *)phys_addr;
> > --
> > 2.10.0
> >
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 21/22] PCI: keystone-dw: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-21@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Murali Karicheri <m-karicheri2@ti.com> --- drivers/pci/dwc/pci-keystone-dw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/dwc/pci-keystone-dw.c b/drivers/pci/dwc/pci-keystone-dw.c index 6b396f6..cba65ca 100644 --- a/drivers/pci/dwc/pci-keystone-dw.c +++ b/drivers/pci/dwc/pci-keystone-dw.c @@ -543,7 +543,7 @@ int __init ks_dw_pcie_host_init(struct keystone_pcie *ks_pcie, /* Index 0 is the config reg. space address */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - pci->dbi_base = devm_ioremap_resource(dev, res); + pci->dbi_base = devm_ioremap_nopost_resource(dev, res); if (IS_ERR(pci->dbi_base)) return PTR_ERR(pci->dbi_base); -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 10/22] PCI: xilinx-nwl: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-25@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com> Cc: Michal Simek <michal.simek@xilinx.com> --- drivers/pci/host/pcie-xilinx-nwl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/host/pcie-xilinx-nwl.c b/drivers/pci/host/pcie-xilinx-nwl.c index 4c3e0ab..cc042b1 100644 --- a/drivers/pci/host/pcie-xilinx-nwl.c +++ b/drivers/pci/host/pcie-xilinx-nwl.c @@ -761,7 +761,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie, pcie->phys_pcie_reg_base = res->start; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); - pcie->ecam_base = devm_ioremap_resource(dev, res); + pcie->ecam_base = devm_ioremap_nopost_resource(dev, res); if (IS_ERR(pcie->ecam_base)) return PTR_ERR(pcie->ecam_base); pcie->phys_ecam_base = res->start; -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 11/22] PCI: spear13xx: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-29@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that
generate on the CPU host bus non-posted write transations. Update the
driver to use the devm_ioremap_nopost* interface to make sure the correct
memory mappings for PCI configuration space are used.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Pratyush Anand <pratyush.anand@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
---
drivers/pci/dwc/pcie-spear13xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/dwc/pcie-spear13xx.c b/drivers/pci/dwc/pcie-spear13xx.c
index eaa4ea8..0fe2b2b 100644
--- a/drivers/pci/dwc/pcie-spear13xx.c
+++ b/drivers/pci/dwc/pcie-spear13xx.c
@@ -273,7 +273,7 @@ static int spear13xx_pcie_probe(struct platform_device *pdev)
}
dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
- pci->dbi_base = devm_ioremap_resource(dev, dbi_base);
+ pci->dbi_base = devm_ioremap_nopost_resource(dev, dbi_base);
if (IS_ERR(pci->dbi_base)) {
dev_err(dev, "couldn't remap dbi base %p\n", dbi_base);
ret = PTR_ERR(pci->dbi_base);
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 19/22] PCI: tegra: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-31@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that
generates on the CPU host bus non-posted write transations. Update the
driver to use correct memory mapping attributes to map config space
regions to enforce configuration space non-posted writes behaviour.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
---
drivers/pci/host/pci-tegra.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index ed8a93f..ec72c3a 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -380,7 +380,7 @@ static struct tegra_pcie_bus *tegra_pcie_bus_alloc(struct tegra_pcie *pcie,
unsigned int busnr)
{
struct device *dev = pcie->dev;
- pgprot_t prot = pgprot_device(PAGE_KERNEL);
+ pgprot_t prot = pgprot_nonposted(PAGE_KERNEL);
phys_addr_t cs = pcie->cs->start;
struct tegra_pcie_bus *bus;
unsigned int i;
@@ -1962,7 +1962,7 @@ static int tegra_pcie_parse_dt(struct tegra_pcie *pcie)
rp->pcie = pcie;
rp->np = port;
- rp->base = devm_ioremap_resource(dev, &rp->regs);
+ rp->base = devm_ioremap_nopost_resource(dev, &rp->regs);
if (IS_ERR(rp->base))
return PTR_ERR(rp->base);
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 12/22] PCI: rockchip: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-47@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Wenrui Li <wenrui.li@rock-chips.com> Cc: Shawn Lin <shawn.lin@rock-chips.com> --- drivers/pci/host/pcie-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c index 26ddd35..a078131 100644 --- a/drivers/pci/host/pcie-rockchip.c +++ b/drivers/pci/host/pcie-rockchip.c @@ -822,7 +822,7 @@ static int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) regs = platform_get_resource_byname(pdev, IORESOURCE_MEM, "axi-base"); - rockchip->reg_base = devm_ioremap_resource(dev, regs); + rockchip->reg_base = devm_ioremap_nopost_resource(dev, regs); if (IS_ERR(rockchip->reg_base)) return PTR_ERR(rockchip->reg_base); -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 18/22] PCI: xgene: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-35@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Tanmay Inamdar <tinamdar@apm.com> --- drivers/pci/host/pci-xgene.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c index 1a61087..df8e13c 100644 --- a/drivers/pci/host/pci-xgene.c +++ b/drivers/pci/host/pci-xgene.c @@ -248,7 +248,7 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) dev_err(dev, "can't get CSR resource\n"); return ret; } - port->csr_base = devm_ioremap_resource(dev, &csr); + port->csr_base = devm_ioremap_nopost_resource(dev, &csr); if (IS_ERR(port->csr_base)) return PTR_ERR(port->csr_base); @@ -359,7 +359,7 @@ static int xgene_pcie_map_reg(struct xgene_pcie_port *port, struct resource *res; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "csr"); - port->csr_base = devm_ioremap_resource(dev, res); + port->csr_base = devm_ioremap_nopost_resource(dev, res); if (IS_ERR(port->csr_base)) return PTR_ERR(port->csr_base); -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 14/22] PCI: iproc-platform: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-49@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that
generates on the CPU host bus non-posted write transations. Update the
driver to use the devm_ioremap_nopost* interface to make sure the correct
memory mappings for PCI configuration space are used.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Jon Mason <jonmason@broadcom.com>
---
drivers/pci/host/pcie-iproc-platform.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/host/pcie-iproc-platform.c b/drivers/pci/host/pcie-iproc-platform.c
index f4909bb..b13d4a2 100644
--- a/drivers/pci/host/pcie-iproc-platform.c
+++ b/drivers/pci/host/pcie-iproc-platform.c
@@ -67,7 +67,8 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
return ret;
}
- pcie->base = devm_ioremap(dev, reg.start, resource_size(®));
+ pcie->base = devm_ioremap_nopost(dev, reg.start,
+ resource_size(®));
if (!pcie->base) {
dev_err(dev, "unable to map controller registers\n");
return -ENOMEM;
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 22/22] PCI: versatile: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-59@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Rob Herring <robh@kernel.org> --- drivers/pci/host/pci-versatile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c index 5ebee7d..60fd396 100644 --- a/drivers/pci/host/pci-versatile.c +++ b/drivers/pci/host/pci-versatile.c @@ -138,7 +138,8 @@ static int versatile_pci_probe(struct platform_device *pdev) return PTR_ERR(versatile_cfg_base[0]); res = platform_get_resource(pdev, IORESOURCE_MEM, 2); - versatile_cfg_base[1] = devm_ioremap_resource(&pdev->dev, res); + versatile_cfg_base[1] = devm_ioremap_nopost_resource(&pdev->dev, + res); if (IS_ERR(versatile_cfg_base[1])) return PTR_ERR(versatile_cfg_base[1]); -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 17/22] PCI: armada8k: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-61@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that
generates on the CPU host bus non-posted write transations. Update the
driver to use the devm_ioremap_nopost* interface to make sure the correct
memory mappings for PCI configuration space are used.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
drivers/pci/dwc/pcie-armada8k.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/dwc/pcie-armada8k.c b/drivers/pci/dwc/pcie-armada8k.c
index f110e3b..6bc7c7f 100644
--- a/drivers/pci/dwc/pcie-armada8k.c
+++ b/drivers/pci/dwc/pcie-armada8k.c
@@ -230,7 +230,7 @@ static int armada8k_pcie_probe(struct platform_device *pdev)
/* Get the dw-pcie unit configuration/control registers base. */
base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ctrl");
- pci->dbi_base = devm_ioremap_resource(dev, base);
+ pci->dbi_base = devm_ioremap_nopost_resource(dev, base);
if (IS_ERR(pci->dbi_base)) {
dev_err(dev, "couldn't remap regs base %p\n", base);
ret = PTR_ERR(pci->dbi_base);
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 15/22] PCI: hisi: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-63@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Zhou Wang <wangzhou1@hisilicon.com> --- drivers/pci/dwc/pcie-hisi.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/pci/dwc/pcie-hisi.c b/drivers/pci/dwc/pcie-hisi.c index fd66a31..66a91b2 100644 --- a/drivers/pci/dwc/pcie-hisi.c +++ b/drivers/pci/dwc/pcie-hisi.c @@ -99,7 +99,7 @@ static int hisi_pcie_init(struct pci_config_window *cfg) return -ENOMEM; } - reg_base = devm_ioremap(dev, res->start, resource_size(res)); + reg_base = devm_ioremap_nopost(dev, res->start, resource_size(res)); if (!reg_base) return -ENOMEM; @@ -296,10 +296,9 @@ static int hisi_pcie_probe(struct platform_device *pdev) } reg = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rc_dbi"); - pci->dbi_base = devm_ioremap_resource(dev, reg); + pci->dbi_base = devm_ioremap_nopost_resource(dev, reg); if (IS_ERR(pci->dbi_base)) return PTR_ERR(pci->dbi_base); - platform_set_drvdata(pdev, hisi_pcie); ret = hisi_add_pcie_port(hisi_pcie, pdev); @@ -360,7 +359,7 @@ static int hisi_pcie_platform_init(struct pci_config_window *cfg) return -EINVAL; } - reg_base = devm_ioremap(dev, res->start, resource_size(res)); + reg_base = devm_ioremap_nopost(dev, res->start, resource_size(res)); if (!reg_base) return -ENOMEM; -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 20/22] PCI: layerscape: update PCI config space remap function |
| Message-ID | <tpzL5-6pP-53@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Mingkai Hu <mingkai.hu@freescale.com> Cc: Minghuan Lian <minghuan.Lian@freescale.com> Cc: Roy Zang <tie-fei.zang@freescale.com> --- drivers/pci/dwc/pci-layerscape.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/dwc/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c index c32e392..a1bd86a 100644 --- a/drivers/pci/dwc/pci-layerscape.c +++ b/drivers/pci/dwc/pci-layerscape.c @@ -283,7 +283,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev) pcie->pci = pci; dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); - pci->dbi_base = devm_ioremap_resource(dev, dbi_base); + pci->dbi_base = devm_ioremap_nopost_resource(dev, dbi_base); if (IS_ERR(pci->dbi_base)) return PTR_ERR(pci->dbi_base); -- 2.10.0
[toc] | [prev] | [next] | [standalone]
| From | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
|---|---|
| Date | 2017-03-27 12:10 +0200 |
| Subject | [PATCH v2 13/22] PCI: qcom: update PCI config space remap function |
| Message-ID | <tpzL4-6pP-37@gated-at.bofh.it> |
| In reply to | #1609671 |
PCI configuration space should be mapped with a memory region type that generates on the CPU host bus non-posted write transations. Update the driver to use the devm_ioremap_nopost* interface to make sure the correct memory mappings for PCI configuration space are used. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Stanimir Varbanov <svarbanov@mm-sol.com> --- drivers/pci/dwc/pcie-qcom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/dwc/pcie-qcom.c b/drivers/pci/dwc/pcie-qcom.c index 67eb7f5..393e379 100644 --- a/drivers/pci/dwc/pcie-qcom.c +++ b/drivers/pci/dwc/pcie-qcom.c @@ -700,7 +700,7 @@ static int qcom_pcie_probe(struct platform_device *pdev) return PTR_ERR(pcie->parf); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi"); - pci->dbi_base = devm_ioremap_resource(dev, res); + pci->dbi_base = devm_ioremap_nopost_resource(dev, res); if (IS_ERR(pci->dbi_base)) return PTR_ERR(pci->dbi_base); -- 2.10.0
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web