Thread (52 messages) 52 messages, 5 authors, 2018-05-24

[PATCH v9 04/11] arm64: kexec_file: allocate memory walking through memblock list

From: james.morse@arm.com (James Morse)
Date: 2018-05-15 16:21:04
Also in: kexec, lkml

Hi Akashi,

On 15/05/18 05:35, AKASHI Takahiro wrote:
On Mon, May 07, 2018 at 02:59:07PM +0900, AKASHI Takahiro wrote:
quoted
On Tue, May 01, 2018 at 06:46:09PM +0100, James Morse wrote:
quoted
On 25/04/18 07:26, AKASHI Takahiro wrote:
quoted
We need to prevent firmware-reserved memory regions, particularly EFI
memory map as well as ACPI tables, from being corrupted by loading
kernel/initrd (or other kexec buffers). We also want to support memory
allocation in top-down manner in addition to default bottom-up.
So let's have arm64 specific arch_kexec_walk_mem() which will search
for available memory ranges in usable memblock list,
i.e. !NOMAP & !reserved, 
quoted
instead of system resource tree.
Didn't we try to fix the system-resource-tree in order to fix regular-kexec to
be safe in the EFI-memory-map/ACPI-tables case?

It would be good to avoid having two ways of doing this, and I would like to
avoid having extra arch code...
I know what you mean.
/proc/iomem or system resource is, in my opinion, not the best place to
describe memory usage of kernel but rather to describe *physical* hardware
layout. As we are still discussing about "reserved" memory, I don't want
to depend on it.
I agree. We have funny stuff that isn't hardware-layout, but is important for
the next boot. The kernel doesn't have an ABI to support when it queries the
list itself.

quoted
Along with memblock list, we will have more accurate control over memory
usage.
quoted
quoted
If the argument is walking memblock gives a better answer than the stringy
walk_system_ram_res() thing, is there any mileage in moving this code into
kexec_file.c, and using it if !IS_ENABLED(CONFIG_ARCH_DISCARD_MEMBLOCK)?

This would save arm64/powerpc having near-identical implementations.
32bit arm keeps memblock if it has kexec, so it may be useful there too if
kexec_file_load() support is added.
If you don't have further objection, I will take memblock approach
(with factoring out powerpc's arch_kexec_walk_mem()).
If we're agreed that the memblock walking is generic, then it would be quicker
to make the arm64 version as close as possible and merge them as a later series.
(saves a cross arch dependency)

With that,
Reviewed-by: James Morse <james.morse@arm.com>


Thanks,

James
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help