arm64: mark reserved memblock regions explicitly in iomem
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Mon, 22 Aug 2016 06:55:24 +0000 (15:55 +0900)
committerWill Deacon <will.deacon@arm.com>
Thu, 25 Aug 2016 17:00:31 +0000 (18:00 +0100)
commite7cd190385d17790cc3eb3821b1094b00aacf325
treee37c2a1592816f77a65078fb260aff10b07c7c40
parent5ebe3a44cc744d11cb60d8438106a9322b7c04dc
arm64: mark reserved memblock regions explicitly in iomem

Kdump(kexec-tools) parses /proc/iomem to identify all the memory regions
on the system. Since the current kernel names "nomap" regions, like UEFI
runtime services code/data, as "System RAM," kexec-tools sets up elf core
header to include them in a crash dump file (/proc/vmcore).

Then crash dump kernel parses UEFI memory map again, re-marks those regions
as "nomap" and does not create a memory mapping for them unlike the other
areas of System RAM. In this case, copying /proc/vmcore through
copy_oldmem_page() on crash dump kernel will end up with a kernel abort,
as reported in [1].

This patch names all the "nomap" regions explicitly as "reserved" so that
we can exclude them from a crash dump file. acpi_os_ioremap() must also
be modified because those regions have WB attributes [2].

Apart from kdump, this change also matches x86's use of acpi (and
/proc/iomem).

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/448186.html
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2016-August/450089.html

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: James Morse <james.morse@arm.com>
Reviewed-by: James Morse <james.morse@arm.com>
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/acpi.h
arch/arm64/kernel/setup.c