summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mm/early_ioremap.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/mm/early_ioremap.c b/mm/early_ioremap.c
index 3fdde074c9da..96c29b9dc85d 100644
--- a/mm/early_ioremap.c
+++ b/mm/early_ioremap.c
@@ -30,6 +30,14 @@ static int __init early_ioremap_debug_setup(char *str)
}
early_param("early_ioremap_debug", early_ioremap_debug_setup);
+#define early_ioremap_dbg(fmt, args...) \
+ do { \
+ if (unlikely(early_ioremap_debug)) { \
+ pr_warn(fmt, ##args); \
+ dump_stack(); \
+ } \
+ } while (0)
+
static int after_paging_init __initdata;
pgprot_t __init __weak early_memremap_pgprot_adjust(resource_size_t phys_addr,
@@ -139,8 +147,8 @@ __early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
if (WARN_ON(nrpages > NR_FIX_BTMAPS))
return NULL;
- WARN(early_ioremap_debug, "%s(%pa, %08lx) [%d] => %08lx + %08lx\n",
- __func__, &phys_addr, size, slot, slot_virt[slot], offset);
+ early_ioremap_dbg("%s(%pa, %08lx) [%d] => %08lx + %08lx\n",
+ __func__, &phys_addr, size, slot, slot_virt[slot], offset);
/*
* Ok, go for it..
@@ -185,8 +193,7 @@ void __init early_iounmap(void __iomem *addr, unsigned long size)
__func__, addr, size, slot, prev_size[slot]))
return;
- WARN(early_ioremap_debug, "%s(%p, %08lx) [%d]\n",
- __func__, addr, size, slot);
+ early_ioremap_dbg("%s(%p, %08lx) [%d]\n", __func__, addr, size, slot);
virt_addr = (unsigned long)addr;
if (WARN_ON(virt_addr < fix_to_virt(FIX_BTMAP_BEGIN)))