@@ -20,6 +20,7 @@
#include <linux/kernel.h>
#include <linux/export.h>
#include <linux/errno.h>
+#include <linux/io.h>
#include <linux/swap.h>
#include <linux/init.h>
#include <linux/bootmem.h>
@@ -104,7 +105,7 @@ static void __init reserve_crashkernel(void)
if (crash_base == 0) {
/* Current arm64 boot protocol requires 2MB alignment */
crash_base = memblock_find_in_range(0, ARCH_LOW_ADDRESS_LIMIT,
- crash_size, SZ_2M);
+ crash_size, SZ_1G);
if (crash_base == 0) {
pr_warn("cannot allocate crashkernel (size:0x%llx)\n",
crash_size);
@@ -485,12 +485,22 @@ static void __init map_mem(pgd_t *pgdp)
__map_memblock(pgdp, crashk_res.start, crashk_res.end + 1,
PAGE_KERNEL,
NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
- memblock_clear_nomap(crashk_res.start,
- resource_size(&crashk_res));
}
#endif
}
+#ifdef CONFIG_KEXEC_CORE
+static void hack__remap_kdump_region(void)
+{
+ size_t size = crashk_res.end - crashk_res.start;
+
+ if (!crashk_res.end)
+ return;
+
+ memremap((unsigned long)crashk_res.start, size, MEMREMAP_WB);
+}
+#endif
+ void mark_rodata_ro(void)
{
unsigned long section_size;
@@ -504,6 +514,10 @@ void mark_rodata_ro(void)