[PATCH v3 0/5] Add pmem node for preserving distro ISO's

Ilias Apalodimas ilias.apalodimas at linaro.org
Fri Jan 24 12:39:45 CET 2025


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.ganu at 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
>
>


More information about the U-Boot mailing list