Re: [PATCH v2 0/2] mm: Introduce kernelcore=reliable option

Andrew Morton
2015-12-08T00:31:15Z

On Sat, 28 Nov 2015 00:03:55 +0900 Taku Izumi <izumi.taku@jp.fujitsu.com> wrote:

> Xeon E7 v3 based systems supports Address Range Mirroring
> and UEFI BIOS complied with UEFI spec 2.5 can notify which
> ranges are reliable (mirrored) via EFI memory map.
> Now Linux kernel utilize its information and allocates
> boot time memory from reliable region.
>
> My requirement is:
> - allocate kernel memory from reliable region
> - allocate user memory from non-reliable region
>
> In order to meet my requirement, ZONE_MOVABLE is useful.
> By arranging non-reliable range into ZONE_MOVABLE,
> reliable memory is only used for kernel allocations.
>
> My idea is to extend existing "kernelcore" option and
> introduces kernelcore=reliable option. By specifying
> "reliable" instead of specifying the amount of memory,
> non-reliable region will be arranged into ZONE_MOVABLE.

It is unfortunate that the kernel presently refers to this memory as
"mirrored", but this patchset introduces the new term "reliable". I
think it would be better if we use "mirrored" throughout.

Of course, mirroring isn't the only way to get reliable memory.
Perhaps if a part of the system memory has ECC correction then this
also can be accessed using "reliable", in which case your proposed
naming makes sense. reliable == mirrored || ecc?

Secondly, does this patchset mean that kernelcore=reliable and
kernelcore=100M are exclusive? Or can the user specify
"kernelcore=reliable,kernelcore=100M" to use 100M of reliable memory
for kernelcore?

This is unclear from the documentation and I suggest that this be
spelled out.