|
@@ -5206,25 +5206,26 @@ early_param("movablecore", cmdline_parse_movablecore);
|
|
|
|
|
|
#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
|
|
|
|
|
|
-unsigned long free_reserved_area(unsigned long start, unsigned long end,
|
|
|
- int poison, char *s)
|
|
|
+unsigned long free_reserved_area(void *start, void *end, int poison, char *s)
|
|
|
{
|
|
|
- unsigned long pages, pos;
|
|
|
+ void *pos;
|
|
|
+ unsigned long pages = 0;
|
|
|
|
|
|
- pos = start = PAGE_ALIGN(start);
|
|
|
- end &= PAGE_MASK;
|
|
|
- for (pages = 0; pos < end; pos += PAGE_SIZE, pages++) {
|
|
|
+ start = (void *)PAGE_ALIGN((unsigned long)start);
|
|
|
+ end = (void *)((unsigned long)end & PAGE_MASK);
|
|
|
+ for (pos = start; pos < end; pos += PAGE_SIZE, pages++) {
|
|
|
if (poison)
|
|
|
- memset((void *)pos, poison, PAGE_SIZE);
|
|
|
- free_reserved_page(virt_to_page((void *)pos));
|
|
|
+ memset(pos, poison, PAGE_SIZE);
|
|
|
+ free_reserved_page(virt_to_page(pos));
|
|
|
}
|
|
|
|
|
|
if (pages && s)
|
|
|
- pr_info("Freeing %s memory: %ldK (%lx - %lx)\n",
|
|
|
+ pr_info("Freeing %s memory: %ldK (%p - %p)\n",
|
|
|
s, pages << (PAGE_SHIFT - 10), start, end);
|
|
|
|
|
|
return pages;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(free_reserved_area);
|
|
|
|
|
|
#ifdef CONFIG_HIGHMEM
|
|
|
void free_highmem_page(struct page *page)
|