linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/4] ARM: provide runtime hook for ioremap/iounmap
Date: Mon,  5 Mar 2012 22:02:57 -0600	[thread overview]
Message-ID: <1331006580-3579-1-git-send-email-robherring2@gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1203051545200.31242@xanadu.home>

From: Rob Herring <rob.herring@calxeda.com>

We have compile time over-ride of ioremap and iounmap, but an run-time
override is needed for multi-platform builds. This adds an extra function
pointer check, but ioremap is not peformance critical. The option for
compile time selection remains.

The caller variant is used here to provide correct caller information as
ARM can only support level 0 for __builtin_return_address.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 arch/arm/include/asm/io.h |    7 ++++++-
 arch/arm/mm/ioremap.c     |   16 ++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 9275828..6c363c1 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -83,6 +83,11 @@ extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, uns
 extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int);
 extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached);
 extern void __iounmap(volatile void __iomem *addr);
+extern void __arm_iounmap(volatile void __iomem *addr);
+
+extern void __iomem * (*arch_ioremap_caller)(unsigned long, size_t,
+	unsigned int, void *);
+extern void (*arch_iounmap)(volatile void __iomem *);
 
 /*
  * Bad read/write accesses...
@@ -266,7 +271,7 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
  */
 #ifndef __arch_ioremap
 #define __arch_ioremap			__arm_ioremap
-#define __arch_iounmap			__iounmap
+#define __arch_iounmap			__arm_iounmap
 #endif
 
 #define ioremap(cookie,size)		__arch_ioremap((cookie), (size), MT_DEVICE)
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 80632e8..c37c67a 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -306,9 +306,16 @@ __arm_ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
 }
 EXPORT_SYMBOL(__arm_ioremap_pfn);
 
+void __iomem * (*arch_ioremap_caller)(unsigned long, size_t, unsigned int, void *);
+EXPORT_SYMBOL(arch_ioremap_caller);
+
 void __iomem *
 __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)
 {
+	if (arch_ioremap_caller)
+		return arch_ioremap_caller(phys_addr, size, mtype,
+			__builtin_return_address(0));
+
 	return __arm_ioremap_caller(phys_addr, size, mtype,
 			__builtin_return_address(0));
 }
@@ -370,3 +377,12 @@ void __iounmap(volatile void __iomem *io_addr)
 	vunmap(addr);
 }
 EXPORT_SYMBOL(__iounmap);
+
+void (*arch_iounmap)(volatile void __iomem *) = __iounmap;
+EXPORT_SYMBOL(arch_iounmap);
+
+void __arm_iounmap(volatile void __iomem *io_addr)
+{
+	arch_iounmap(io_addr);
+}
+EXPORT_SYMBOL(__arm_iounmap);
-- 
1.7.5.4

  reply	other threads:[~2012-03-06  4:02 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-02  3:13 [PATCH v3 00/30] mach/io.h cleanup and removal Rob Herring
2012-03-02  3:13 ` [PATCH v3 01/30] usb: ohci-pxa27x: add explicit include of hardware.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 02/30] ARM: provide runtime hook for ioremap/iounmap Rob Herring
2012-03-05 19:21   ` Nicolas Pitre
2012-03-05 20:13     ` Arnd Bergmann
2012-03-05 21:11       ` Nicolas Pitre
2012-03-06  4:02         ` Rob Herring [this message]
2012-03-06  4:02           ` [PATCH v4 2/4] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-06  4:02           ` [PATCH v4 3/4] ARM: msm: use " Rob Herring
2012-03-06 20:59             ` David Brown
2012-03-06 21:10               ` Rob Herring
2012-03-06  4:03           ` [PATCH v4 4/4] ARM: iop13xx: " Rob Herring
2012-03-06 16:53           ` [PATCH v4 1/4] ARM: provide runtime hook for ioremap/iounmap Arnd Bergmann
2012-03-06 17:18           ` Nicolas Pitre
2012-03-06  4:07         ` [PATCH v3 02/30] " Rob Herring
2012-03-06 17:20           ` Nicolas Pitre
2012-03-06 21:45         ` [PATCH v5 1/7] " Rob Herring
2012-03-06 21:45           ` [PATCH v5 2/7] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-06 21:45           ` [PATCH v5 3/7] ARM: msm: use " Rob Herring
2012-03-06 21:45           ` [PATCH v5 4/7] ARM: iop13xx: " Rob Herring
2012-03-06 21:45           ` [PATCH v5 5/7] ARM: ixp4xx: " Rob Herring
2012-03-06 22:11             ` Russell King - ARM Linux
2012-03-06 22:49               ` Rob Herring
2012-03-06 22:50                 ` Rob Herring
2012-03-06 21:45           ` [PATCH v5 6/7] ARM: ebsa110: " Rob Herring
2012-03-06 22:06             ` Nicolas Pitre
2012-03-07  3:36               ` [PATCH] " Rob Herring
2012-03-06 21:45           ` [PATCH v5 7/7] ARM: remove compile time __arch_ioremap/__arch_iounmap Rob Herring
2012-03-06 22:01             ` Nicolas Pitre
2012-03-06 21:57           ` [PATCH v5 1/7] ARM: provide runtime hook for ioremap/iounmap Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 03/30] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-02  3:13 ` [PATCH v3 04/30] ARM: msm: use " Rob Herring
2012-03-02  3:13 ` [PATCH v3 05/30] ARM: msm: clean-up mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 06/30] ARM: iop13xx: use runtime ioremap hook Rob Herring
2012-03-02  3:13 ` [PATCH v3 07/30] ARM: iop13xx: move io.h externs to pci.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 08/30] ARM: OMAP: Remove remaining includes for mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 09/30] [media] davinci: remove includes of mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 10/30] ARM: davinci: remove unneeded mach/io.h include Rob Herring
2012-03-02  3:13 ` [PATCH v3 11/30] ARM: orion5x: clean-up mach/io.h Rob Herring
2012-03-05 19:14   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 12/30] ARM: tegra: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 13/30] ARM: ep93xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 14/30] ARM: at91: add explicit include of hardware.h to uncompressor Rob Herring
2012-03-02  3:13 ` [PATCH v3 15/30] ARM: dove: add explicit include of dove.h to addr-map.c Rob Herring
2012-03-05 19:26   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 16/30] ARM: clps711x: remove unneeded include of mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 17/30] ARM: make mach/io.h include optional Rob Herring
2012-03-05 19:31   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 18/30] ARM: remove bunch of now unused mach/io.h files Rob Herring
2012-03-05 19:33   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 19/30] ARM: kill off __mem_pci Rob Herring
2012-03-02  3:13 ` [PATCH v3 20/30] iop13xx: use more regular PCI I/O space handling Rob Herring
2012-03-02  3:13 ` [PATCH v3 21/30] ARM: Add fixed PCI i/o mapping Rob Herring
2012-03-05 19:41   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 22/30] ARM: tegra: use " Rob Herring
2012-03-02  6:59   ` Thierry Reding
2012-03-02  3:13 ` [PATCH v3 23/30] ARM: integrator: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 24/30] ARM: shark: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 25/30] ARM: footbridge: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 26/30] ARM: dove: " Rob Herring
2012-03-05 20:12   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 27/30] ARM: kirkwood: " Rob Herring
2012-03-05 19:59   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 28/30] ARM: ixp23xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 29/30] ARM: iop13xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 30/30] ARM: orion5x: " Rob Herring
2012-03-05 20:13   ` Nicolas Pitre

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=1331006580-3579-1-git-send-email-robherring2@gmail.com \
    --to=robherring2@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).