Module agesa

Source
Expand description

Utilities for finding the AGESA version in physical memory (on AMD Zen).

§AGESA

AGESA is a procedure library by AMD embedded into the UEFI firmware of AMD platforms up to and including Zen 5. It performs Platform Initialization, so it is responsible for CPU startup, memory training, I/O (including PCIe) configuration, and more.

Because of AGESA’s importance for stability and security, one may want to inspect its version, ideally from user space on a running system. Alas, the Linux kernel does not provide a straightforward interface for this; however, AGESA’s version marker is generally located somewhere in extended memory and can thus be obtained via a brute-force search as implemented by this module.

Per coreboot, there are two documented iterations of AGESA:

  • v5 (or Arch2008) for CPU families before Zen (< 17h)
  • v9 for Zen and later (≥ 17h)

This module supports both, but v5 was not yet comprehensively tested.

Structs§

AgesaVersion
An AGESA version found in physical memory.

Enums§

SearchError

Functions§

find_agesa_version
Search for the AGESA version within all Reserved memory regions.
find_agesa_version_in_memory_region
Search for the AGESA version within the given memory region.
find_agesa_version_in_reader
Search for the AGESA version within the given buffered reader.
get_reserved_regions_in_extended_memory
Find and return all Reserved regions in extended memory (> 1 MiB).

Type Aliases§

SearchResult