[PATCH] arm64: mark reserved memblock regions explicitly in iomem

James Morse james.morse at arm.com
Thu Aug 25 08:27:47 PDT 2016


Hi Akashi,

On 22/08/16 07:55, AKASHI Takahiro wrote:
> 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


Tested on Seattle on v4.8-rc3, /proc/iomem Before:
8000000000-8001e7ffff : System RAM
8001e80000-83ff186fff : System RAM
  8002080000-8002baffff : Kernel code
  8002ca0000-8002db1fff : Kernel data
83ff187000-83ff1c4fff : System RAM
83ff1c5000-83ff224fff : System RAM
83ff225000-83ffe42fff : System RAM
83ffe43000-83ffffffff : System RAM

/proc/iomem After:
8000000000-8001e7ffff : reserved
8001e80000-83ff186fff : System RAM
  8002080000-8002baffff : Kernel code
  8002ca0000-8002db1fff : Kernel data
83ff187000-83ff1c4fff : reserved
83ff1c5000-83ff224fff : System RAM
83ff225000-83ffe42fff : reserved
83ffe43000-83ffffffff : System RAM

Which matches the output from 'efi=debug'.

I can also kdump with v24 of your series, and copy the vmcore file with
read()/mmap() and dig through it with crash.

Tested-by: James Morse <james.morse at arm.com>
Reviewed-by: James Morse <james.morse at arm.com>


The only side-effect of this I could find is we now allow access to the UEFI
areas when built with CONFIG_STRICT_DEVMEM, which is what the help text says
should happen, so it was broken before.



Thanks,

James



More information about the linux-arm-kernel mailing list