mm/hwpoison: fix refcount of THP head page in no-injection case
[deliverable/linux.git] / mm / early_ioremap.c
index e10ccd299d6666887ba9347308afaa112ee8816f..a0baeb4be934b3737493d6ad3638a81c8fec879e 100644 (file)
@@ -217,6 +217,28 @@ early_memremap(resource_size_t phys_addr, unsigned long size)
        return (__force void *)__early_ioremap(phys_addr, size,
                                               FIXMAP_PAGE_NORMAL);
 }
+
+#define MAX_MAP_CHUNK  (NR_FIX_BTMAPS << PAGE_SHIFT)
+
+void __init copy_from_early_mem(void *dest, phys_addr_t src, unsigned long size)
+{
+       unsigned long slop, clen;
+       char *p;
+
+       while (size) {
+               slop = src & ~PAGE_MASK;
+               clen = size;
+               if (clen > MAX_MAP_CHUNK - slop)
+                       clen = MAX_MAP_CHUNK - slop;
+               p = early_memremap(src & PAGE_MASK, clen + slop);
+               memcpy(dest, p + slop, clen);
+               early_memunmap(p, clen + slop);
+               dest += clen;
+               src += clen;
+               size -= clen;
+       }
+}
+
 #else /* CONFIG_MMU */
 
 void __init __iomem *
This page took 0.035169 seconds and 5 git commands to generate.