Hi Aristo,

On Fri, 24 Jul 2026 at 03:40, Aristo Chen <[email protected]> wrote:
>
> The efi and efidebug commands each carried their own code for printing
> the EFI memory map, with separate tables of memory type and attribute
> names. The copies had drifted: efidebug knew EFI_PERSISTENT_MEMORY_TYPE
> while 'efi mem' printed it as '<invalid>', neither table knew
> EFI_UNACCEPTED_MEMORY_TYPE, and the 'efi mem' printer had misaligned
> column headers, a broken '<gap>' line and a superfluous Virtual column:
> the map is identity mapped before SetVirtualAddressMap() is called, so
> the field carries no information at the time the command can run.
>
> Move the printing loop of 'efidebug memmap' into efi_common.c as
> efi_show_memmap(), which is linked into both commands, and use it from
> both. The second copy in 'efi mem' is deleted together with
> efi_print_mem_table() and the private sorting and merging code,
> including the 'all' argument.
>
> The memory type names follow the UEFI specification with the leading
> 'Efi' and the trailing 'Type' stripped, for example ConventionalMemory
> for EfiConventionalMemory, and the missing name for unaccepted memory
> is added. The type column is widened to fit the longest name,
> MemoryMappedIOPortSpace.
>
> The shared function iterates the map with the descriptor size reported
> by the firmware instead of assuming sizeof(struct efi_mem_desc). This
> matters for 'efi mem' under EDK II based firmware, which reports a
> descriptor size of 0x30. The memory map key, which was printed
> uninitialized on the payload path, is now initialized. The command
> documentation is updated with output captured from the app running
> under OVMF, and documents why virtual addresses are not shown.
>
> Suggested-by: Heinrich Schuchardt <[email protected]>
> Signed-off-by: Aristo Chen <[email protected]>
> ---
> Changes in v2:
> - Supersedes v1's table-only unification: the whole printer is now
>   shared, the type names follow the UEFI specification, the Virtual
>   column is dropped and the map is iterated with the firmware-reported
>   descriptor size
>
>  cmd/efi.c             | 221 +-----------------------------
>  cmd/efi_common.c      | 121 +++++++++++++++++
>  cmd/efidebug.c        |  96 +------------
>  doc/usage/cmd/efi.rst | 306 ++++++++++++++++++++----------------------
>  include/efi.h         |  18 +++
>  5 files changed, 292 insertions(+), 470 deletions(-)

I'm not seeing this one in patchwork - could you please check and send
a link if I am missing it?

Regards,
SImon

Reply via email to