From: Arnd Bergmann <arnd@arndb.de>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Will Deacon <will.deacon@arm.com>,
Nicolas Pitre <nico@linaro.org>,
"James E.J. Bottomley" <JBottomley@parallels.com>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH 22/24] scsi: eesox: use __iomem pointers for MMIO
Date: Sat, 15 Sep 2012 08:00:35 +0000 [thread overview]
Message-ID: <201209150800.35605.arnd@arndb.de> (raw)
In-Reply-To: <20120914232703.GE12245@n2100.arm.linux.org.uk>
On Friday 14 September 2012, Russell King - ARM Linux wrote:
> On Fri, Sep 14, 2012 at 11:34:50PM +0200, Arnd Bergmann wrote:
> > ARM is moving to stricter checks on readl/write functions,
> > so we need to use the correct types everywhere.
>
> There's nothing wrong with const iomem pointers. If you think
> otherwise, patch x86 not to use const in its accessor implementation
> and watch the reaction:
>
> #define build_mmio_read(name, size, type, reg, barrier) \
> static inline type name(const volatile void __iomem *addr) \
> { type ret; asm volatile("mov" size " %1,%0":reg (ret) \
> :"m" (*(volatile type __force *)addr) barrier); return ret; }
>
> build_mmio_read(readb, "b", unsigned char, "=q", :"memory")
> build_mmio_read(readw, "w", unsigned short, "=r", :"memory")
> build_mmio_read(readl, "l", unsigned int, "=r", :"memory")
Ok, fair enough. Can you fold the patch below into
"ARM: 7500/1: io: avoid writeback addressing modes for __raw_
accessors", or apply on top then?
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 35c1ed8..4c5f708 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -39,9 +39,9 @@
* Generic IO read/write. These perform native-endian accesses. Note
* that some architectures will want to re-define __raw_{read,write}w.
*/
-extern void __raw_writesb(void __iomem *addr, const void *data, int bytelen);
-extern void __raw_writesw(void __iomem *addr, const void *data, int wordlen);
-extern void __raw_writesl(void __iomem *addr, const void *data, int longlen);
+extern void __raw_writesb(const void __iomem *addr, const void *data, int bytelen);
+extern void __raw_writesw(const void __iomem *addr, const void *data, int wordlen);
+extern void __raw_writesl(const void __iomem *addr, const void *data, int longlen);
extern void __raw_readsb(const void __iomem *addr, void *data, int bytelen);
extern void __raw_readsw(const void __iomem *addr, void *data, int wordlen);
@@ -61,7 +61,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
* writeback addressing modes as these incur a significant performance
* overhead (the address generation must be emulated in software).
*/
-static inline void __raw_writew(u16 val, volatile void __iomem *addr)
+static inline void __raw_writew(u16 val, const volatile void __iomem *addr)
{
asm volatile("strh %1, %0"
: "+Qo" (*(volatile u16 __force *)addr)
@@ -78,14 +78,14 @@ static inline u16 __raw_readw(const volatile void __iomem *addr)
}
#endif
-static inline void __raw_writeb(u8 val, volatile void __iomem *addr)
+static inline void __raw_writeb(u8 val, const volatile void __iomem *addr)
{
asm volatile("strb %1, %0"
: "+Qo" (*(volatile u8 __force *)addr)
: "r" (val));
}
-static inline void __raw_writel(u32 val, volatile void __iomem *addr)
+static inline void __raw_writel(u32 val, const volatile void __iomem *addr)
{
asm volatile("str %1, %0"
: "+Qo" (*(volatile u32 __force *)addr)
WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 22/24] scsi: eesox: use __iomem pointers for MMIO
Date: Sat, 15 Sep 2012 08:00:35 +0000 [thread overview]
Message-ID: <201209150800.35605.arnd@arndb.de> (raw)
In-Reply-To: <20120914232703.GE12245@n2100.arm.linux.org.uk>
On Friday 14 September 2012, Russell King - ARM Linux wrote:
> On Fri, Sep 14, 2012 at 11:34:50PM +0200, Arnd Bergmann wrote:
> > ARM is moving to stricter checks on readl/write functions,
> > so we need to use the correct types everywhere.
>
> There's nothing wrong with const iomem pointers. If you think
> otherwise, patch x86 not to use const in its accessor implementation
> and watch the reaction:
>
> #define build_mmio_read(name, size, type, reg, barrier) \
> static inline type name(const volatile void __iomem *addr) \
> { type ret; asm volatile("mov" size " %1,%0":reg (ret) \
> :"m" (*(volatile type __force *)addr) barrier); return ret; }
>
> build_mmio_read(readb, "b", unsigned char, "=q", :"memory")
> build_mmio_read(readw, "w", unsigned short, "=r", :"memory")
> build_mmio_read(readl, "l", unsigned int, "=r", :"memory")
Ok, fair enough. Can you fold the patch below into
"ARM: 7500/1: io: avoid writeback addressing modes for __raw_
accessors", or apply on top then?
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 35c1ed8..4c5f708 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -39,9 +39,9 @@
* Generic IO read/write. These perform native-endian accesses. Note
* that some architectures will want to re-define __raw_{read,write}w.
*/
-extern void __raw_writesb(void __iomem *addr, const void *data, int bytelen);
-extern void __raw_writesw(void __iomem *addr, const void *data, int wordlen);
-extern void __raw_writesl(void __iomem *addr, const void *data, int longlen);
+extern void __raw_writesb(const void __iomem *addr, const void *data, int bytelen);
+extern void __raw_writesw(const void __iomem *addr, const void *data, int wordlen);
+extern void __raw_writesl(const void __iomem *addr, const void *data, int longlen);
extern void __raw_readsb(const void __iomem *addr, void *data, int bytelen);
extern void __raw_readsw(const void __iomem *addr, void *data, int wordlen);
@@ -61,7 +61,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
* writeback addressing modes as these incur a significant performance
* overhead (the address generation must be emulated in software).
*/
-static inline void __raw_writew(u16 val, volatile void __iomem *addr)
+static inline void __raw_writew(u16 val, const volatile void __iomem *addr)
{
asm volatile("strh %1, %0"
: "+Qo" (*(volatile u16 __force *)addr)
@@ -78,14 +78,14 @@ static inline u16 __raw_readw(const volatile void __iomem *addr)
}
#endif
-static inline void __raw_writeb(u8 val, volatile void __iomem *addr)
+static inline void __raw_writeb(u8 val, const volatile void __iomem *addr)
{
asm volatile("strb %1, %0"
: "+Qo" (*(volatile u8 __force *)addr)
: "r" (val));
}
-static inline void __raw_writel(u32 val, volatile void __iomem *addr)
+static inline void __raw_writel(u32 val, const volatile void __iomem *addr)
{
asm volatile("str %1, %0"
: "+Qo" (*(volatile u32 __force *)addr)
next prev parent reply other threads:[~2012-09-15 8:00 UTC|newest]
Thread overview: 157+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-14 21:34 [PATCH 00/24] ARM: readl/writel conversion fallout Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 01/24] ARM: shmobile: use __iomem pointers for MMIO Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-18 7:11 ` Simon Horman
2012-09-18 7:11 ` Simon Horman
2012-09-18 7:11 ` Simon Horman
2012-09-18 8:31 ` Arnd Bergmann
2012-09-18 8:31 ` Arnd Bergmann
2012-09-18 8:31 ` Arnd Bergmann
2012-09-18 11:50 ` Simon Horman
2012-09-18 11:50 ` Simon Horman
2012-09-18 11:50 ` Simon Horman
2012-09-18 16:04 ` Arnd Bergmann
2012-09-18 16:04 ` Arnd Bergmann
2012-09-18 16:04 ` Arnd Bergmann
2012-09-18 23:56 ` Simon Horman
2012-09-18 23:56 ` Simon Horman
2012-09-18 23:56 ` Simon Horman
2012-09-18 7:42 ` Paul Mundt
2012-09-18 7:42 ` Paul Mundt
2012-09-18 7:42 ` Paul Mundt
2012-09-14 21:34 ` [PATCH 02/24] ARM: at91: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-17 7:56 ` Nicolas Ferre
2012-09-17 7:56 ` Nicolas Ferre
2012-09-18 8:05 ` Arnd Bergmann
2012-09-18 8:05 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 03/24] ARM: ebsa110: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 04/24] ARM: ep93xx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 22:14 ` Ryan Mallon
2012-09-14 22:14 ` Ryan Mallon
2012-09-15 7:55 ` Arnd Bergmann
2012-09-15 7:55 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 05/24] ARM: imx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 22:31 ` Fabio Estevam
2012-09-14 22:31 ` Fabio Estevam
2012-09-15 17:42 ` Arnd Bergmann
2012-09-15 17:42 ` Arnd Bergmann
2012-09-16 7:21 ` Sascha Hauer
2012-09-16 7:21 ` Sascha Hauer
2012-09-14 21:34 ` [PATCH 06/24] ARM: integrator: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-16 22:19 ` Linus Walleij
2012-09-16 22:19 ` Linus Walleij
2012-09-16 22:35 ` Russell King - ARM Linux
2012-09-16 22:35 ` Russell King - ARM Linux
2012-09-16 22:46 ` Linus Walleij
2012-09-16 22:46 ` Linus Walleij
2012-09-16 23:43 ` Russell King - ARM Linux
2012-09-16 23:43 ` Russell King - ARM Linux
2012-09-14 21:34 ` [PATCH 07/24] ARM: iop13xx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 08/24] ARM: iop32x: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 09/24] ARM: ixp4xx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-18 10:31 ` Krzysztof Halasa
2012-09-18 10:31 ` Krzysztof Halasa
2012-09-18 19:22 ` Krzysztof Halasa
2012-09-18 19:22 ` Krzysztof Halasa
2012-09-19 13:52 ` Arnd Bergmann
2012-09-19 13:52 ` Arnd Bergmann
2012-09-18 20:12 ` [PATCH 08+09/24] " Krzysztof Halasa
2012-09-18 20:12 ` Krzysztof Halasa
2012-09-18 21:25 ` Arnd Bergmann
2012-09-18 21:25 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 10/24] ARM: ks8695: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 11/24] ARM: lpc32xx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 12/24] ARM: msm: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 22:38 ` Stephen Boyd
2012-09-14 22:38 ` Stephen Boyd
2012-09-15 5:16 ` David Brown
2012-09-15 5:16 ` David Brown
2012-09-14 21:34 ` [PATCH 13/24] ARM: nomadik: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-15 11:33 ` Alessandro Rubini
2012-09-15 11:33 ` Alessandro Rubini
2012-09-28 20:13 ` Arnd Bergmann
2012-09-28 20:13 ` Arnd Bergmann
2012-09-16 22:24 ` Linus Walleij
2012-09-16 22:24 ` Linus Walleij
2012-09-14 21:34 ` [PATCH 14/24] ARM: prima2: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 15/24] ARM: sa1100: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 16/24] ARM: spear13xx: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 17/24] ARM: OMAP: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-15 18:10 ` Tony Lindgren
2012-09-15 18:10 ` Tony Lindgren
2012-09-15 20:14 ` Arnd Bergmann
2012-09-15 20:14 ` Arnd Bergmann
2012-09-16 20:38 ` Tony Lindgren
2012-09-16 20:38 ` Tony Lindgren
2012-09-17 21:25 ` Tony Lindgren
2012-09-17 21:25 ` Tony Lindgren
2012-09-19 13:35 ` Arnd Bergmann
2012-09-19 13:35 ` Arnd Bergmann
2012-09-19 13:36 ` Felipe Balbi
2012-09-19 13:36 ` Felipe Balbi
2012-09-19 16:44 ` Tony Lindgren
2012-09-19 16:44 ` Tony Lindgren
2012-09-14 21:34 ` [PATCH 18/24] ARM: samsung: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 19/24] sh: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-18 7:37 ` Paul Mundt
2012-09-18 7:37 ` Paul Mundt
2012-09-18 7:37 ` Paul Mundt
2012-09-18 8:01 ` Arnd Bergmann
2012-09-18 8:01 ` Arnd Bergmann
2012-09-18 8:01 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 20/24] input: rpcmouse: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-19 17:06 ` Dmitry Torokhov
2012-09-19 17:06 ` Dmitry Torokhov
2012-09-14 21:34 ` [PATCH 21/24] serial: ks8695: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 23:44 ` Greg Kroah-Hartman
2012-09-14 23:44 ` Greg Kroah-Hartman
2012-09-14 21:34 ` [PATCH 22/24] scsi: eesox: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 23:27 ` Russell King - ARM Linux
2012-09-14 23:27 ` Russell King - ARM Linux
2012-09-15 8:00 ` Arnd Bergmann [this message]
2012-09-15 8:00 ` Arnd Bergmann
2012-09-15 8:57 ` Russell King - ARM Linux
2012-09-15 8:57 ` Russell King - ARM Linux
2012-09-15 8:57 ` Russell King - ARM Linux
2012-09-15 10:30 ` Arnd Bergmann
2012-09-15 10:30 ` Arnd Bergmann
2012-09-17 22:03 ` Russell King - ARM Linux
2012-09-17 22:03 ` Russell King - ARM Linux
2012-09-18 8:09 ` Arnd Bergmann
2012-09-18 8:09 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 23/24] video: da8xx-fb: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 21:34 ` [PATCH 24/24] net: seeq: " Arnd Bergmann
2012-09-14 21:34 ` Arnd Bergmann
2012-09-14 23:56 ` Russell King - ARM Linux
2012-09-14 23:56 ` Russell King - ARM Linux
2012-09-14 23:56 ` Russell King - ARM Linux
2012-09-15 4:00 ` David Miller
2012-09-15 4:00 ` David Miller
2012-09-18 8:14 ` Arnd Bergmann
2012-09-18 8:14 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201209150800.35605.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=JBottomley@parallels.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=nico@linaro.org \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.