Message ID | 20191203201410.28045-1-msys.mizuma@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | efi: arm64: Introduce /proc/efi/memreserve to tell the persistent pages | expand |
On Tue, 3 Dec 2019 at 20:14, Masayoshi Mizuma <msys.mizuma@gmail.com> wrote: > > From: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> > > kexec reboot sometime fails in early boot sequence on aarch64 machine. > That is because kexec overwrites the LPI property tables and pending > tables with the initrd. > > To avoid the overwrite, introduce /proc/efi/memreserve to tell the > tables region to kexec so that kexec can avoid the memory region to > locate initrd. > > kexec also needs a patch to handle /proc/efi/memreserve. I'm preparing > the patch for kexec. > > Changelog > v2: - Change memreserve file location from sysfs to procfs. > memreserve may exceed the PAGE_SIZE in case efi_memreserve_root > has a lot of entries. So we cannot use sysfs_kf_seq_show(). > Use seq_printf() in procfs instead. > > Masayoshi Mizuma (2): > efi: add /proc/efi directory > efi: arm64: Introduce /proc/efi/memreserve to tell the persistent > pages > Apologies for the tardy response. Adding /proc/efi is really out of the question. *If* we add any special files to expose this information, it should be under sysfs. However, this is still only a partial solution, since it only solves the problem for userspace based kexec, and we need something for kexec_file_load() as well. The fundamental issue here is that /proc/iomem apparently lacks the entries that describe these regions as 'reserved', so we should try to address that instead.
From: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> kexec reboot sometime fails in early boot sequence on aarch64 machine. That is because kexec overwrites the LPI property tables and pending tables with the initrd. To avoid the overwrite, introduce /proc/efi/memreserve to tell the tables region to kexec so that kexec can avoid the memory region to locate initrd. kexec also needs a patch to handle /proc/efi/memreserve. I'm preparing the patch for kexec. Changelog v2: - Change memreserve file location from sysfs to procfs. memreserve may exceed the PAGE_SIZE in case efi_memreserve_root has a lot of entries. So we cannot use sysfs_kf_seq_show(). Use seq_printf() in procfs instead. Masayoshi Mizuma (2): efi: add /proc/efi directory efi: arm64: Introduce /proc/efi/memreserve to tell the persistent pages drivers/firmware/efi/efi.c | 93 +++++++++++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-)