Heinrich, Tobias There's a slight problem that I forgot when commenting v2.
Heinrich's idea of plugging this into blkmap is eventually the right thing to do. However, when I started coding this I only added the pmem memory as 'reserved' in the DT hoping that would work. Unfortunately, this depends on a kernel config option. I've managed to track down the problem here[0], but I haven't found time to test it properly and send it upstream. So for this feature to work reliably we *need* to remove the memory map we hand over to the OS. Since using EFI memmap function into the blkmap code makes no sense, can we perhaps merge v2 (or a variant of it), which only targets EFI, with an explanation of *why* while I try to sort out the kernel issue? [0] https://git.linaro.org/people/ilias.apalodimas/net-next.git/commit/?h=main Thanks /Ilias On Mon, 20 Jan 2025 at 12:51, Sughosh Ganu <sughosh.g...@linaro.org> wrote: > > > When installing a distro via EFI HTTP boot some OS installers expect > the .iso image to be preserved and treat it as a "CDROM" to install > packages. > > This is problematic in EFI, since U-Boot mounts the image, starts the > installer, and eventually calls ExitBootServices. At that point the > image U-Boot mounted disappears. Some distros don't care and download > the missing packages from a web archive, while others halt the > installation complaining they can't find certain packages. > > If the firmware uses ACPI, this is supported by using NFIT which > provides NVDIMM ramdisks to the OS and preserves the image. > We don't have anything in place for Device Trees though. Since DT > supports persistent memory nodes (pmem) use those and preserve the > .iso for installers. > > The issue can be reproduced by attempting an EFI HTTP boot with Ubuntu > live server ISO, or a Rocky Linux ISO. The installation would fail > with the failure to locate certain packages. > > The earlier version had aligned the addition of pmem nodes with the > EFI HTTP boot feature. This has been changed, based on a review > comment from Heinrich to instead be done by looping through the memory > based blkmamp devices. > > Changes since V2: > * Fix a checkpatch error for putting a blank line after a function > * Use blkmap device based scanning for adding the pmem nodes > > > > Ilias Apalodimas (2): > efi_loader: add a function to remove memory from the EFI map > efi_loader: preserve installer images in pmem > > Masahisa Kojima (1): > fdt: add support for adding pmem nodes > > Sughosh Ganu (2): > blkmap: store type of blkmap device in corresponding structure > blkmap: add pmem nodes for blkmap mem mapping devices > > boot/fdt_support.c | 40 ++++++++++++- > boot/image-fdt.c | 9 +++ > cmd/blkmap.c | 16 ++++-- > drivers/block/blkmap.c | 90 +++-------------------------- > drivers/block/blkmap_helper.c | 47 +++++++++++++++- > include/blkmap.h | 103 +++++++++++++++++++++++++++++++++- > include/efi_loader.h | 11 ++-- > include/fdt_support.h | 13 +++++ > lib/efi_loader/efi_bootmgr.c | 22 ++++++-- > lib/efi_loader/efi_memory.c | 51 ++++++++++++----- > lib/lmb.c | 4 +- > test/dm/blkmap.c | 16 +++--- > 12 files changed, 302 insertions(+), 120 deletions(-) > > -- > 2.34.1 > >