S390: add pci_iomap_wc() and pci_iomap_wc_range()

Started by Luis R. Rodriguez on Aug 26, 2015 · 4 messages from 4 authors · Last reply Aug 29, 2015

Subsystems (2)

Maintainers (4)

STALE4093d LANDED

Status: Landed in mainline as ee03c5868e74 on 2015-08-28.

open the first message on its own page

Message details and related content
From: "Luis R. Rodriguez" <redacted>

S390 requires its own implementation of pcio_iomap*() calls
is because it has its "BAR spaces are not disjunctive on s390
so we need the bar parameter of pci_iomap to find the corresponding
device and create the mapping cookie" -- in summary, it has its own
lookup/lock solution.

It does not include asm-generic/pci_iomap.h

Since it currenty maps ioremap_wc() to ioremap_nocache() and that's
the architecture default we can easily just map the wc calls to
the default calls as well.

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jean-Christophe Plagniol-Villard <redacted>
Cc: Tomi Valkeinen <redacted>
Cc: <redacted>
Cc: <redacted>
Cc: Borislav Petkov <redacted>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Fengguang Wu <redacted>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Reported-by: 0 day bot
Signed-off-by: Luis R. Rodriguez <redacted>
---

This broke through some series that went into Ingo's tip tree which
I added. As such I *think* this should go through Ingo's tip tree.
Let me know. Up to you guys.

 arch/s390/include/asm/io.h | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h
index cb5fdf3a78fc..437e9af96688 100644
--- a/arch/s390/include/asm/io.h
+++ b/arch/s390/include/asm/io.h
@@ -57,6 +57,8 @@ static inline void ioport_unmap(void __iomem *p)
  */
 #define pci_iomap pci_iomap
 #define pci_iounmap pci_iounmap
+#define pci_iomap_wc pci_iomap
+#define pci_iomap_wc_range pci_iomap_range
 
 #define memcpy_fromio(dst, src, count)	zpci_memcpy_fromio(dst, src, count)
 #define memcpy_toio(dst, src, count)	zpci_memcpy_toio(dst, src, count)
-- 
2.4.3
Message details and related content
* Luis R. Rodriguez [off-list ref] wrote:
From: "Luis R. Rodriguez" <redacted>

S390 requires its own implementation of pcio_iomap*() calls
is because it has its "BAR spaces are not disjunctive on s390
so we need the bar parameter of pci_iomap to find the corresponding
device and create the mapping cookie" -- in summary, it has its own
lookup/lock solution.

It does not include asm-generic/pci_iomap.h

Since it currenty maps ioremap_wc() to ioremap_nocache() and that's
the architecture default we can easily just map the wc calls to
the default calls as well.

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jean-Christophe Plagniol-Villard <redacted>
Cc: Tomi Valkeinen <redacted>
Cc: <redacted>
Cc: <redacted>
Cc: Borislav Petkov <redacted>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Fengguang Wu <redacted>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Reported-by: 0 day bot
Signed-off-by: Luis R. Rodriguez <redacted>
---

This broke through some series that went into Ingo's tip tree which
I added. As such I *think* this should go through Ingo's tip tree.
Let me know. Up to you guys.
I fixed the changelog to explain all this.

Also, is there any other architecture that got broken by:

   1b3d4200c1e0 PCI: Add pci_iomap_wc() variants

?

Thanks,

	Ingo
Message details and related content
On 08/27/2015 11:06 PM, Ingo Molnar wrote:
* Luis R. Rodriguez [off-list ref] wrote:
quoted
From: "Luis R. Rodriguez" <redacted>

S390 requires its own implementation of pcio_iomap*() calls
is because it has its "BAR spaces are not disjunctive on s390
so we need the bar parameter of pci_iomap to find the corresponding
device and create the mapping cookie" -- in summary, it has its own
lookup/lock solution.

It does not include asm-generic/pci_iomap.h

Since it currenty maps ioremap_wc() to ioremap_nocache() and that's
the architecture default we can easily just map the wc calls to
the default calls as well.

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jean-Christophe Plagniol-Villard <redacted>
Cc: Tomi Valkeinen <redacted>
Cc: <redacted>
Cc: <redacted>
Cc: Borislav Petkov <redacted>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Fengguang Wu <redacted>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Reported-by: 0 day bot
Signed-off-by: Luis R. Rodriguez <redacted>
---

This broke through some series that went into Ingo's tip tree which
I added. As such I *think* this should go through Ingo's tip tree.
Let me know. Up to you guys.
I fixed the changelog to explain all this.

Also, is there any other architecture that got broken by:

    1b3d4200c1e0 PCI: Add pci_iomap_wc() variants

1 more quoted lines

Should be the only one. There are only two implementations of pci_iomap(),
one in s390 code and the generic implementation.

Guenter
Message details and related content
On Fri, Aug 28, 2015 at 01:22:27AM -0700, Guenter Roeck wrote:
On 08/27/2015 11:06 PM, Ingo Molnar wrote:
quoted
* Luis R. Rodriguez [off-list ref] wrote:
quoted
From: "Luis R. Rodriguez" <redacted>

S390 requires its own implementation of pcio_iomap*() calls
is because it has its "BAR spaces are not disjunctive on s390
so we need the bar parameter of pci_iomap to find the corresponding
device and create the mapping cookie" -- in summary, it has its own
lookup/lock solution.

It does not include asm-generic/pci_iomap.h

Since it currenty maps ioremap_wc() to ioremap_nocache() and that's
the architecture default we can easily just map the wc calls to
the default calls as well.

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jean-Christophe Plagniol-Villard <redacted>
Cc: Tomi Valkeinen <redacted>
Cc: <redacted>
Cc: <redacted>
Cc: Borislav Petkov <redacted>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Fengguang Wu <redacted>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Reported-by: 0 day bot
Signed-off-by: Luis R. Rodriguez <redacted>
---

This broke through some series that went into Ingo's tip tree which
I added. As such I *think* this should go through Ingo's tip tree.
Let me know. Up to you guys.
I fixed the changelog to explain all this.

Also, is there any other architecture that got broken by:

5 more quoted lines

Indeed, sadly there is no semantics well defined to establish this requirement
so the best we can do is infer:

mcgrof@ergon ~/linux-next (git::20150805-pend-all)$ git grep pci_iomap_range arch/
arch/s390/include/asm/io.h:#define pci_iomap_wc_range pci_iomap_range
arch/s390/pci/pci.c:void __iomem *pci_iomap_range(struct pci_dev *pdev,
arch/s390/pci/pci.c:EXPORT_SYMBOL(pci_iomap_range);
arch/s390/pci/pci.c:    return pci_iomap_range(dev, bar, 0, maxlen);

To this end a Kconfig option to implicate this might be more well suited for
future lookups and make other architectures which are incompatible with
generic pci_iomap clearer. Will post an RFC.

  Luis
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help