Add AMD firmware parser

Based on the open source AMDFWTOOL available here:
https://github.com/coreboot/coreboot/tree/main/util/amdfwtool

TODO:
- Merge duplicated regions
  There can be multiple L2 directory tables, for A/B recovery or
  to support different SoC SKUs. They point to the same regions,
  causing the same area to be shown multiple times in the parsed
  image.
- Better quirks support
  PSP hardcodes certain sizes and address types for some files.
  The parser might thus fail, even though it works on real hardware.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
This commit is contained in:
Patrick Rudolph 2025-01-29 08:40:38 +01:00
parent 3aefe281c4
commit 432340352c
12 changed files with 1366 additions and 11 deletions

View file

@ -114,7 +114,12 @@ USTATUS FfsParser::performFirstPass(const UByteArray & buffer, UModelIndex & ind
if (buffer.isEmpty()) {
return U_INVALID_PARAMETER;
}
// Try parsing as AMD image
if (U_SUCCESS == parseAMDImage(buffer, 0, UModelIndex(), index)) {
return U_SUCCESS;
}
// Try parsing as UEFI Capsule
if (U_SUCCESS == parseCapsule(buffer, 0, UModelIndex(), index)) {
return U_SUCCESS;