Thread (11 messages) 11 messages, 4 authors, 2015-12-09

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

From: Izumi, Taku <hidden>
Date: 2015-12-08 08:08:08
Also in: lkml

Dear Tony,

  Thanks for testing!

Dear Andrew,

quoted
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.
  YES. "mirroring" is not the only way.
  So, in my opinion, we should change "mirrored" into "reliable" in order
  to match terms of UEFI 2.5 spec.
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?
  "reliable" is better.

  But, I'm willing to change "reliable" into "mirrored".

  Otherwise, I keep "kernelcore=reliable" and add the following minimal fix as 
  a separate patch:

diff  a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -134,7 +134,7 @@ void __init efi_find_mirror(void)
                }
        }
        if (mirror_size)
-               pr_info("Memory: %lldM/%lldM mirrored memory\n",
+               pr_info("Memory: %lldM/%lldM reliable memory\n",
                        mirror_size>>20, total_size>>20);
 }

 
 Which do you think is beter ?
   - change into kernelcore="mirrored"
   - keep kernelcore="reliable" and minmal printk fix 
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?
  No, these are exclusive.
This is unclear from the documentation and I suggest that this be
spelled out.
  Thanks. I'll update its document.

 Sincerely,
 Taku Izumi

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help