Skip to content

Commit 58366f4

Browse files
committed
Add Insyde Flash Device Map parser
1 parent b98edf6 commit 58366f4

28 files changed

Lines changed: 1361 additions & 230 deletions

UEFIExtract/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ SET(PROJECT_SOURCES
4040
../common/generated/edk2_vss2.cpp
4141
../common/generated/edk2_ftw.cpp
4242
../common/generated/insyde_fdc.cpp
43+
../common/generated/insyde_fdm.cpp
4344
../common/generated/phoenix_flm.cpp
45+
../common/generated/phoenix_evsa.cpp
4446
../common/generated/intel_acbp_v1.cpp
4547
../common/generated/intel_acbp_v2.cpp
4648
../common/generated/intel_keym_v1.cpp

UEFIFind/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ SET(PROJECT_SOURCES
3737
../common/generated/edk2_vss2.cpp
3838
../common/generated/edk2_ftw.cpp
3939
../common/generated/insyde_fdc.cpp
40+
../common/generated/insyde_fdm.cpp
4041
../common/generated/phoenix_flm.cpp
42+
../common/generated/phoenix_evsa.cpp
4143
../common/generated/intel_acbp_v1.cpp
4244
../common/generated/intel_acbp_v2.cpp
4345
../common/generated/intel_keym_v1.cpp

UEFITool/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ SET(PROJECT_SOURCES
7373
../common/generated/edk2_vss2.cpp
7474
../common/generated/edk2_ftw.cpp
7575
../common/generated/insyde_fdc.cpp
76+
../common/generated/insyde_fdm.cpp
77+
../common/generated/phoenix_evsa.cpp
7678
../common/generated/phoenix_flm.cpp
7779
../common/generated/intel_acbp_v1.cpp
7880
../common/generated/intel_acbp_v2.cpp

UEFITool/uefitool.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@ void UEFITool::populateUi(const QModelIndex &current)
247247
|| type == Types::VssEntry
248248
|| type == Types::SysFEntry
249249
|| type == Types::EvsaEntry
250-
|| type == Types::FlashMapEntry
250+
|| type == Types::PhoenixFlashMapEntry
251+
|| type == Types::InsydeFlashDeviceMapEntry
251252
|| type == Types::IfwiHeader
252253
|| type == Types::IfwiPartition
253254
|| type == Types::FptPartition
@@ -266,7 +267,8 @@ void UEFITool::populateUi(const QModelIndex &current)
266267
|| type == Types::SysFStore
267268
|| type == Types::EvsaStore
268269
|| type == Types::FtwStore
269-
|| type == Types::FlashMapStore
270+
|| type == Types::PhoenixFlashMapStore
271+
|| type == Types::InsydeFlashDeviceMapStore
270272
|| type == Types::NvarGuidStore
271273
|| type == Types::CmdbStore
272274
|| type == Types::FptStore
@@ -910,7 +912,8 @@ void UEFITool::contextMenuEvent(QContextMenuEvent* event)
910912
case Types::SysFStore:
911913
case Types::EvsaStore:
912914
case Types::FtwStore:
913-
case Types::FlashMapStore:
915+
case Types::PhoenixFlashMapStore:
916+
case Types::InsydeFlashDeviceMapStore:
914917
case Types::NvarGuidStore:
915918
case Types::CmdbStore:
916919
case Types::FptStore:

UEFITool/uefitool.pro

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ HEADERS += uefitool.h \
5656
../common/generated/edk2_vss2.h \
5757
../common/generated/edk2_ftw.h \
5858
../common/generated/insyde_fdc.h \
59+
../common/generated/insyde_fdm.h \
5960
../common/generated/phoenix_flm.h \
61+
../common/generated/phoenix_evsa.h \
6062
../common/generated/intel_acbp_v1.h \
6163
../common/generated/intel_acbp_v2.h \
6264
../common/generated/intel_keym_v1.h \
@@ -129,7 +131,9 @@ SOURCES += uefitool_main.cpp \
129131
../common/generated/edk2_vss2.cpp \
130132
../common/generated/edk2_ftw.cpp \
131133
../common/generated/insyde_fdc.cpp \
134+
../common/generated/insyde_fdm.cpp \
132135
../common/generated/phoenix_flm.cpp \
136+
../common/generated/phoenix_evsa.cpp \
133137
../common/generated/intel_acbp_v1.cpp \
134138
../common/generated/intel_acbp_v2.cpp \
135139
../common/generated/intel_keym_v1.cpp \

common/ffs.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,48 @@ extern const UByteArray EFI_DXE_CORE_GUID // D6A2CB7F-6A18-4E2F-B43B-9920A733700
8585
extern const UByteArray AMD_COMPRESSED_RAW_FILE_GUID //20BC8AC9-94D1-4208-AB28-5D673FD73487
8686
("\xC9\x8A\xBC\x20\xD1\x94\x08\x42\xAB\x28\x5D\x67\x3F\xD7\x34\x87", 16);
8787

88+
// Insyde Flash Device Map GUIDs
89+
extern const UByteArray INSYDE_FLASH_MAP_REGION_BOOT_FV_GUID
90+
("\x56\x6d\xd7\xe3\x8a\x98\x6b\x4d\x89\x13\x64\xf2\xdf\x1d\xf6\xa6", 16);
91+
extern const UByteArray INSYDE_FLASH_MAP_REGION_BVDT_GUID
92+
("\xFC\x5D\x41\x32\x06\xD1\xC7\x48\x9E\xB5\x80\x6C\x11\x4D\xD1\x07", 16);
93+
extern const UByteArray INSYDE_FLASH_MAP_REGION_EC_GUID
94+
("\xBF\xF3\x3E\xA7\xCC\x33\xA9\x43\xB3\x9C\xA9\x12\xC7\x48\x9A\x57", 16);
95+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_BACKUP_GUID
96+
("\xD3\x15\x8E\xB7\xA5\xF0\x48\x42\x8E\x2F\xD3\x15\x7A\xEF\x88\x36", 16);
97+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_STATE_GUID
98+
("\x04\x6E\x41\xC8\x34\x99\x79\x40\xBE\x9A\x39\xF8\xD6\x02\x84\x98", 16);
99+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FV_GUID
100+
("\x58\xE7\xE8\xB5\xE6\xA7\x8B\x4C\xAB\x85\xFF\x2A\x95\x9B\x99\xBA", 16);
101+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FLASH_DEVICE_MAP_GUID
102+
("\xA0\xC1\x78\xF0\x52\xFC\x3F\x4C\xBE\x1F\xD6\x88\x81\x5A\x62\xC0", 16);
103+
extern const UByteArray INSYDE_FLASH_MAP_REGION_LOGO_GUID
104+
("\x69\xAB\xCF\xDA\x77\xF9\x84\x47\x8A\xD8\x77\x24\xA6\xF4\xB4\x40", 16);
105+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MICROCODE_GUID
106+
("\xF8\x66\x98\xB4\xD2\x8C\xE4\x49\xA1\x6D\xB6\x0F\xBE\xC3\x1C\x4B", 16);
107+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MSDM_TABLE_GUID
108+
("\x1A\xEB\x44\xB3\x7E\xF9\x14\x4F\xA1\xE1\x7E\x63\xBC\x40\xC8\xCE", 16);
109+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MULTI_CONFIG_GUID
110+
("\x92\xB5\x94\x59\x14\x2F\xD5\x48\xBB\x40\xBD\x27\x96\x9C\x77\x80", 16);
111+
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_DEFAULT_GUID
112+
("\xA2\xAC\xDD\xD9\x16\x08\xF3\x48\xAD\xED\x6B\x71\x65\x6B\x24\x8A", 16);
113+
extern const UByteArray INSYDE_FLASH_MAP_REGION_SMBIOS_UPDATE_GUID
114+
("\xDC\xFE\x64\x89\xE7\x6F\x1E\x4E\xA5\x5E\xFF\x82\x1D\x71\xFF\xCF", 16);
115+
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_GUID
116+
("\x74\x53\x3C\x77\xD1\x81\x43\x4D\xB2\x93\xF3\xD7\x4F\x18\x1D\x6B", 16);
117+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNKNOWN_GUID
118+
("\xE5\x65\x1D\x20\x23\xBE\x75\x48\x80\xF8\xB1\xD4\x79\x5E\x7E\x08", 16);
119+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNUSED_GUID
120+
("\x20\xB0\xC8\x13\x27\x4F\x3B\x45\x8F\x80\x1B\xFC\xA1\x87\x38\x0F", 16);
121+
extern const UByteArray INSYDE_FLASH_MAP_REGION_USB_OPTION_ROM_GUID
122+
("\x0F\xF3\x7B\x60\x2B\x5F\xA2\x4D\xAE\xED\x56\xF9\xBD\xCD\x2D\x21", 16);
123+
extern const UByteArray INSYDE_FLASH_MAP_REGION_DXE_FV_GUID
124+
("\xCE\xBA\xD0\x1F\x0A\x6F\x85\x40\x90\x1E\xF6\x21\x03\x85\xCB\x6F", 16);
125+
extern const UByteArray INSYDE_FLASH_MAP_REGION_PEI_FV_GUID
126+
("\xC5\x06\x14\xCF\xEC\x3F\xEB\x47\xA6\xC3\xB7\x1A\x3E\xE0\x0B\x95", 16);
127+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNSIGNED_FV_GUID
128+
("\xB6\x16\xA0\xF2\x14\xE8\x2E\x40\xA3\x95\x46\xD3\xCF\x75\x26\x4A", 16);
129+
88130
// GUIDs of GUID-defined sections
89131
extern const UByteArray EFI_GUIDED_SECTION_CRC32 // FC1BCDB0-7D31-49AA-936A-A4600D9DD083
90132
("\xB0\xCD\x1B\xFC\x31\x7D\xAA\x49\x93\x6A\xA4\x60\x0D\x9D\xD0\x83", 16);

common/ffs.h

Lines changed: 77 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -845,22 +845,83 @@ typedef struct PROTECTED_RANGE_VENDOR_HASH_FILE_HEADER_AMI_V3_
845845
//
846846
// AMI ROM Hole files
847847
//
848-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_0; //05CA01FC-0FC1-11DC-9011-00173153EBA8
849-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_1; //05CA01FD-0FC1-11DC-9011-00173153EBA8
850-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_2; //05CA01FE-0FC1-11DC-9011-00173153EBA8
851-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_3; //05CA01FF-0FC1-11DC-9011-00173153EBA8
852-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_4; //05CA0200-0FC1-11DC-9011-00173153EBA8
853-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_5; //05CA0201-0FC1-11DC-9011-00173153EBA8
854-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_6; //05CA0202-0FC1-11DC-9011-00173153EBA8
855-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_7; //05CA0203-0FC1-11DC-9011-00173153EBA8
856-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_8; //05CA0204-0FC1-11DC-9011-00173153EBA8
857-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_9; //05CA0205-0FC1-11DC-9011-00173153EBA8
858-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_10; //05CA0206-0FC1-11DC-9011-00173153EBA8
859-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_11; //05CA0207-0FC1-11DC-9011-00173153EBA8
860-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_12; //05CA0208-0FC1-11DC-9011-00173153EBA8
861-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_13; //05CA0209-0FC1-11DC-9011-00173153EBA8
862-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_14; //05CA020A-0FC1-11DC-9011-00173153EBA8
863-
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_15; //05CA020B-0FC1-11DC-9011-00173153EBA8
848+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_0; // 05CA01FC-0FC1-11DC-9011-00173153EBA8
849+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_1; // 05CA01FD-0FC1-11DC-9011-00173153EBA8
850+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_2; // 05CA01FE-0FC1-11DC-9011-00173153EBA8
851+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_3; // 05CA01FF-0FC1-11DC-9011-00173153EBA8
852+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_4; // 05CA0200-0FC1-11DC-9011-00173153EBA8
853+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_5; // 05CA0201-0FC1-11DC-9011-00173153EBA8
854+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_6; // 05CA0202-0FC1-11DC-9011-00173153EBA8
855+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_7; // 05CA0203-0FC1-11DC-9011-00173153EBA8
856+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_8; // 05CA0204-0FC1-11DC-9011-00173153EBA8
857+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_9; // 05CA0205-0FC1-11DC-9011-00173153EBA8
858+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_10; // 05CA0206-0FC1-11DC-9011-00173153EBA8
859+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_11; // 05CA0207-0FC1-11DC-9011-00173153EBA8
860+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_12; // 05CA0208-0FC1-11DC-9011-00173153EBA8
861+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_13; // 05CA0209-0FC1-11DC-9011-00173153EBA8
862+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_14; // 05CA020A-0FC1-11DC-9011-00173153EBA8
863+
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_15; // 05CA020B-0FC1-11DC-9011-00173153EBA8
864+
865+
//
866+
// Insyde Flash Device Map
867+
//
868+
#define INSYDE_FLASH_DEVICE_MAP_SIGNATURE 0x4D444648 // HFDM
869+
870+
typedef struct _INSYDE_FLASH_DEVICE_MAP_HEADER {
871+
UINT32 Signature;
872+
UINT32 Size;
873+
UINT32 DataOffset;
874+
UINT32 EntrySize;
875+
UINT8 EntryFormat;
876+
UINT8 Revision;
877+
UINT8 ExtensionCount;
878+
UINT8 Checksum;
879+
UINT64 FdBaseAddress;
880+
//INSYDE_FLASH_DEVICE_MAP_EXTENSION Extensions[ExtensionCount];
881+
} INSYDE_FLASH_DEVICE_MAP_HEADER;
882+
883+
typedef struct _INSYDE_FLASH_DEVICE_MAP_EXTENSION {
884+
UINT16 EntryOffset;
885+
UINT16 EntryCount;
886+
} INSYDE_FLASH_DEVICE_MAP_EXTENSION;
887+
888+
typedef struct _INSYDE_FLASH_DEVICE_MAP_ENTRY {
889+
EFI_GUID RegionTypeGuid;
890+
UINT8 RegionId[16];
891+
UINT64 RegionOffset;
892+
UINT64 RegionSize;
893+
UINT32 Attributes;
894+
//UINT8 Hash[]; // Size depends on EntryFormat and EntrySize of the header
895+
} INSYDE_FLASH_DEVICE_MAP_ENTRY;
896+
897+
typedef struct _INSYDE_FLASH_DEVICE_MAP_BOARD_ID_MAP {
898+
UINT32 BoardIdIndex;
899+
UINT32 BoardIdCount;
900+
//UINT64 BoardIds[Count];
901+
} INSYDE_FLASH_DEVICE_MAP_BOARD_ID_MAP;
902+
903+
#define INSYDE_FLASH_DEVICE_MAP_ENTRY_ATTRIBUTE_MODIFIABLE 0x00000001
904+
905+
extern const UByteArray INSYDE_FLASH_MAP_REGION_BOOT_FV_GUID;
906+
extern const UByteArray INSYDE_FLASH_MAP_REGION_BVDT_GUID;
907+
extern const UByteArray INSYDE_FLASH_MAP_REGION_EC_GUID;
908+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_BACKUP_GUID;
909+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_STATE_GUID;
910+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FV_GUID;
911+
extern const UByteArray INSYDE_FLASH_MAP_REGION_FLASH_DEVICE_MAP_GUID;
912+
extern const UByteArray INSYDE_FLASH_MAP_REGION_LOGO_GUID;
913+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MICROCODE_GUID;
914+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MSDM_TABLE_GUID;
915+
extern const UByteArray INSYDE_FLASH_MAP_REGION_MULTI_CONFIG_GUID;
916+
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_DEFAULT_GUID;
917+
extern const UByteArray INSYDE_FLASH_MAP_REGION_SMBIOS_UPDATE_GUID;
918+
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_GUID;
919+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNKNOWN_GUID;
920+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNUSED_GUID;
921+
extern const UByteArray INSYDE_FLASH_MAP_REGION_USB_OPTION_ROM_GUID;
922+
extern const UByteArray INSYDE_FLASH_MAP_REGION_DXE_FV_GUID;
923+
extern const UByteArray INSYDE_FLASH_MAP_REGION_PEI_FV_GUID;
924+
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNSIGNED_FV_GUID;
864925

865926
// Restore previous packing rules
866927
#pragma pack(pop)

0 commit comments

Comments
 (0)