__ioremap() emits a warning if the pfn after the last one it's going
to map is of normal ram. Correct this and emit the warning (once)
only if one of the asked pages is.
Signed-off-by: Fabio Checconi <fabio@xxxxxxxxxxxxxxxx>
-----
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index ac3c959..6f7b158 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -109,7 +109,7 @@ static int ioremap_change_attr(unsigned long vaddr, unsigned long size,
static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
enum ioremap_mode mode)
{
- unsigned long pfn, offset, last_addr, vaddr;
+ unsigned long pfn, offset, last_addr, vaddr, is_ram = 0;
struct vm_struct *area;
pgprot_t prot;
@@ -132,9 +132,10 @@ static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
if (page_is_ram(pfn) && pfn_valid(pfn) &&
!PageReserved(pfn_to_page(pfn)))
return NULL;
+ is_ram |= page_is_ram(pfn);
}
- WARN_ON_ONCE(page_is_ram(pfn));
+ WARN_ON_ONCE(is_ram);
switch (mode) {
case IOR_MODE_UNCACHED: