VirtualBox

Ignore:
Timestamp:
Aug 14, 2024 1:16:30 PM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164367
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable-202405 and make it build on aarch64, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
10 added
59 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Guid/FileInfo.h

    r99404 r105670  
    4848  ///
    4949  /// The Null-terminated name of the file.
     50  /// For a root directory, the name is an empty string.
    5051  ///
    5152  CHAR16      FileName[1];
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Guid/GlobalVariable.h

    r99404 r105670  
    22  GUID for EFI (NVRAM) Variables.
    33
    4   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
     4  Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.<BR>
    55  SPDX-License-Identifier: BSD-2-Clause-Patent
    66
     
    184184#define EFI_VENDOR_KEYS_VARIABLE_NAME  L"VendorKeys"
    185185
     186///
     187/// Whether the platform firmware is operating in device authentication boot mode (1) or not (0).
     188/// The content is UINT8.
     189///
     190#define EFI_DEVICE_AUTH_BOOT_MODE_NAME  L"devAuthBoot"
     191
    186192#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Guid/ImageAuthentication.h

    r99404 r105670  
    22  Image signature database are defined for the signed image validation.
    33
    4   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
     4  Copyright (c) 2009 - 2024, Intel Corporation. All rights reserved.<BR>
    55  SPDX-License-Identifier: BSD-2-Clause-Patent
    66
     
    4141#define SETUP_MODE  1
    4242#define USER_MODE   0
     43
     44#define DEVICE_AUTH_BOOT_MODE_ENABLE   1
     45#define DEVICE_AUTH_BOOT_MODE_DISABLE  0
    4346
    4447// ***********************************************************************
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi30.h

    r99404 r105670  
    1717
    1818#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR  0x8B
     19
     20///
     21/// C-state Coordination Types
     22/// See s8.4.2.2 _CSD (C-State Dependency)
     23///
     24#define ACPI_AML_COORD_TYPE_SW_ALL  0xFC
     25#define ACPI_AML_COORD_TYPE_SW_ANY  0xFD
     26#define ACPI_AML_COORD_TYPE_HW_ALL  0xFE
     27
     28///
     29/// _PSD Revision for ACPI 3.0
     30// See s8.4.4.5 _PSD (P-State Dependency)
     31///
     32#define EFI_ACPI_3_0_AML_PSD_REVISION  0
    1933
    2034//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi40.h

    r99404 r105670  
    1010
    1111#include <IndustryStandard/Acpi30.h>
     12
     13///
     14/// _PSD Revision for ACPI 4.0
     15///
     16#define EFI_ACPI_4_0_AML_PSD_REVISION  0
    1217
    1318//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi50.h

    r99404 r105670  
    2323#define ACPI_GPIO_CONNECTION_DESCRIPTOR                0x8C
    2424#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR  0x8E
     25
     26///
     27/// _PSD Revision for ACPI 5.0
     28///
     29#define EFI_ACPI_5_0_AML_PSD_REVISION  0
     30
     31///
     32/// _CPC Revision for ACPI 5.0
     33///
     34#define EFI_ACPI_5_0_AML_CPC_REVISION  1
    2535
    2636#pragma pack(1)
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi51.h

    r99404 r105670  
    1313
    1414#include <IndustryStandard/Acpi50.h>
     15
     16///
     17/// _PSD Revision for ACPI 5.1
     18///
     19#define EFI_ACPI_5_1_AML_PSD_REVISION  0
     20
     21///
     22/// _CPC Revision for ACPI 5.1
     23///
     24#define EFI_ACPI_5_1_AML_CPC_REVISION  2
    1525
    1626//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi60.h

    r99404 r105670  
    1212
    1313#include <IndustryStandard/Acpi51.h>
     14
     15///
     16/// _PSD Revision for ACPI 6.0
     17///
     18#define EFI_ACPI_6_0_AML_PSD_REVISION  0
     19
     20///
     21/// _CPC Revision for ACPI 6.0
     22///
     23#define EFI_ACPI_6_0_AML_CPC_REVISION  2
    1424
    1525//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi61.h

    r99404 r105670  
    1212
    1313#include <IndustryStandard/Acpi60.h>
     14
     15///
     16/// _PSD Revision for ACPI 6.1
     17///
     18#define EFI_ACPI_6_1_AML_PSD_REVISION  0
     19
     20///
     21/// _CPC Revision for ACPI 6.1
     22///
     23#define EFI_ACPI_6_1_AML_CPC_REVISION  2
    1424
    1525//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi62.h

    r99404 r105670  
    2929#define ACPI_PIN_GROUP_FUNCTION_DESCRIPTOR       0x91
    3030#define ACPI_PIN_GROUP_CONFIGURATION_DESCRIPTOR  0x92
     31
     32///
     33/// _PSD Revision for ACPI 6.2
     34///
     35#define EFI_ACPI_6_2_AML_PSD_REVISION  0
     36
     37///
     38/// _CPC Revision for ACPI 6.2
     39///
     40#define EFI_ACPI_6_2_AML_CPC_REVISION  3
    3141
    3242#pragma pack(1)
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi63.h

    r99404 r105670  
    1212
    1313#include <IndustryStandard/Acpi62.h>
     14
     15///
     16/// _PSD Revision for ACPI 6.3
     17///
     18#define EFI_ACPI_6_3_AML_PSD_REVISION  0
     19
     20///
     21/// _CPC Revision for ACPI 6.3
     22///
     23#define EFI_ACPI_6_3_AML_CPC_REVISION  3
    1424
    1525//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi64.h

    r99404 r105670  
    1212
    1313#include <IndustryStandard/Acpi63.h>
     14
     15///
     16/// _PSD Revision for ACPI 6.4
     17///
     18#define EFI_ACPI_6_4_AML_PSD_REVISION  0
     19
     20///
     21/// _CPC Revision for ACPI 6.4
     22///
     23#define EFI_ACPI_6_4_AML_CPC_REVISION  3
    1424
    1525//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi65.h

    r101291 r105670  
    33
    44  Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR>
    5   Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR>
     5  Copyright (c) 2019 - 2023, ARM Ltd. All rights reserved.<BR>
    66  Copyright (c) 2023, Loongson Technology Corporation Limited. All rights reserved.<BR>
    77
     
    1818//
    1919#pragma pack(1)
     20
     21///
     22/// _PSD Revision for ACPI 6.5
     23///
     24#define EFI_ACPI_6_5_AML_PSD_REVISION  0
     25
     26///
     27/// _CPC Revision for ACPI 6.5
     28///
     29#define EFI_ACPI_6_5_AML_CPC_REVISION  3
    2030
    2131///
     
    4454#define EFI_ACPI_6_5_GENERIC_SERIAL_BUS              0x09
    4555#define EFI_ACPI_6_5_PLATFORM_COMMUNICATION_CHANNEL  0x0A
     56#define EFI_ACPI_6_5_PLATFORM_RUNTIME_MECHANISM      0x0B
    4657#define EFI_ACPI_6_5_FUNCTIONAL_FIXED_HARDWARE       0x7F
    4758
     
    526537  UINT8     Reserved2;
    527538  UINT16    SpeOverflowInterrupt;
     539  UINT16    TrbeInterrupt;
    528540} EFI_ACPI_6_5_GIC_STRUCTURE;
    529541
     
    534546#define EFI_ACPI_6_5_PERFORMANCE_INTERRUPT_MODEL            BIT1
    535547#define EFI_ACPI_6_5_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS  BIT2
     548#define EFI_ACPI_6_5_GIC_ONLINE_CAPABLE                     BIT3
    536549
    537550///
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Cxl.h

    r99404 r105670  
    1313#define _CXL_MAIN_H_
    1414
    15 #include <IndustryStandard/Cxl11.h>
     15#include <IndustryStandard/Cxl30.h>
    1616//
    1717// CXL assigned new Vendor ID
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h

    r101291 r105670  
    10941094
    10951095//
     1096// Response of interface capability of SSIF/KCS/SMIC.
     1097//
     1098typedef union {
     1099  IPMI_GET_SYSTEM_INTERFACE_SSIF_CAPABILITIES_RESPONSE        *InterfaceSsifCapability;
     1100  IPMI_GET_SYSTEM_INTERFACE_KCS_SMIC_CAPABILITIES_RESPONSE    *InterfaceKcsSmicCapability;
     1101} IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_RESPONSE;
     1102
     1103//
    10961104//  Definitions for Get System Interface Capabilities command SSIF transaction support
    10971105//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Mctp.h

    r101291 r105670  
    112112    UINT32    Reserved              : 4; ///< Reserved for future definitions.
    113113    UINT32    DestinationEndpointId : 8; ///< Destination endpoint Id (EID).
    114     UINT32    SourceEndpointIdId    : 8; ///< Source endpoint Id (EID)
     114    UINT32    SourceEndpointId      : 8; ///< Source endpoint Id (EID)
    115115    UINT32    MessageTag            : 3; ///< Check the MCTP Base specification for the
    116116                                         ///< usages.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Nvme.h

    r99404 r105670  
    11/** @file
    2   Definitions based on NVMe spec. version 1.1.
     2  Definitions based on NVMe spec. version 2.0c.
    33
    44  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
     
    1010  NVMe Specification 1.4
    1111  NVMe Specification 2.0
     12  NVMe Specification 2.0c
    1213
    1314**/
     
    355356} NVME_PSDESCRIPTOR;
    356357
     358typedef struct {
     359  UINT32    Ces     : 1;    /* Crypto Erase Supported */
     360  UINT32    Bes     : 1;    /* Block Erase Supported */
     361  UINT32    Ows     : 1;    /* Overwrite Supported */
     362  UINT32    Rsvd1   : 26;   /* Reserved as of NVM Express 2.0c Spec */
     363  UINT32    Ndi     : 1;    /* No-Deallocate Inhibited */
     364  UINT32    Nodmmas : 2;    /* No-Deallocate Modifies Media After Sanitize */
     365} NVME_SANICAP;
     366
    357367//
    358368//  Identify Controller Data
     
    404414  UINT8                Dsto;        /* Device Self-test Options  */
    405415  UINT8                Fwug;        /* Firmware Update Granularity */
    406   UINT8                Rsvd2[192];  /* Reserved as of Nvm Express 1.4 Spec */
     416  UINT16               Kas;         /* Keep Alive Support */
     417  UINT16               Hctma;       /* Host Controlled Thermal Management Attributes */
     418  UINT16               Mntmt;       /* Minimum Thermal Management Temperature */
     419  UINT16               Mxtmt;       /* Maximum Thermal Management Temperature */
     420  NVME_SANICAP         Sanicap;     /* Sanitize Capabilities */
     421  UINT8                Rsvd2[180];  /* Reserved as of Nvm Express 1.4 Spec */
    407422  //
    408423  // NVM Command Set Attributes
     
    688703  //
    689704  UINT32    Lid   : 8;        /* Log Page Identifier */
    690   #define LID_ERROR_INFO    0x1
    691   #define LID_SMART_INFO    0x2
    692   #define LID_FW_SLOT_INFO  0x3
    693   #define LID_BP_INFO       0x15
     705  #define LID_ERROR_INFO            0x1
     706  #define LID_SMART_INFO            0x2
     707  #define LID_FW_SLOT_INFO          0x3
     708  #define LID_BP_INFO               0x15
     709  #define LID_SANITIZE_STATUS_INFO  0x81
    694710  UINT32    Rsvd1 : 8;
    695711  UINT32    Numd  : 12;       /* Number of Dwords */
     
    708724  UINT32    Sv    : 1;        /* Save */
    709725} NVME_ADMIN_SET_FEATURES;
     726
     727//
     728// NvmExpress Admin Sanitize Command
     729//
     730typedef struct {
     731  //
     732  // CDW 10
     733  //
     734  UINT32    Sanact : 3;       /* Sanitize Action */
     735  UINT32    Ause   : 1;       /* Allow Unrestricted Sanitize Exit */
     736  UINT32    Owpass : 4;       /* Overwrite Pass Count */
     737  UINT32    Oipbp  : 1;       /* Overwrite Invert Pattern Between Passes */
     738  UINT32    Nodas  : 1;       /* No-Deallocate After Sanitize */
     739  UINT32    Rsvd1  : 22;
     740  //
     741  // CDW 11
     742  //
     743  UINT32    Ovrpat;           /* Overwrite Pattern */
     744} NVME_ADMIN_SANITIZE;
     745
     746#define SANITIZE_ACTION_NO_ACTION          0x0
     747#define SANITIZE_ACTION_EXIT_FAILURE_MODE  0x1
     748#define SANITIZE_ACTION_BLOCK_ERASE        0x2
     749#define SANITIZE_ACTION_OVERWRITE          0x3
     750#define SANITIZE_ACTION_CRYPTO_ERASE       0x4
    710751
    711752//
     
    771812  NVME_ADMIN_SECURITY_RECEIVE           SecurityReceive;
    772813  NVME_ADMIN_SECURITY_SEND              SecuritySend;
     814  NVME_ADMIN_SANITIZE                   Sanitize;
    773815} NVME_ADMIN_CMD;
    774816
     
    873915#define NVME_ADMIN_SECURITY_SEND_CMD        0x81
    874916#define NVME_ADMIN_SECURITY_RECEIVE_CMD     0x82
     917#define NVME_ADMIN_SANITIZE_CMD             0x84
    875918
    876919#define NVME_IO_FLUSH_OPC  0
     
    895938  FormatNvmOpcode               = NVME_ADMIN_FORMAT_NVM_CMD,
    896939  SecuritySendOpcode            = NVME_ADMIN_SECURITY_SEND_CMD,
    897   SecurityReceiveOpcode         = NVME_ADMIN_SECURITY_RECEIVE_CMD
     940  SecurityReceiveOpcode         = NVME_ADMIN_SECURITY_RECEIVE_CMD,
     941  SanitizeOpcode                = NVME_ADMIN_SANITIZE_CMD
    898942} NVME_ADMIN_COMMAND_OPCODE;
    899943
     
    935979//
    936980// Get Log Page ? Log Page Identifiers
    937 // (ref. spec. v1.1 Figure 73).
     981// (ref. spec. v2.0c Figure 202).
    938982//
    939983typedef enum {
    940   ErrorInfoLogID        = LID_ERROR_INFO,
    941   SmartHealthInfoLogID  = LID_SMART_INFO,
    942   FirmwareSlotInfoLogID = LID_FW_SLOT_INFO
     984  ErrorInfoLogID          = LID_ERROR_INFO,
     985  SmartHealthInfoLogID    = LID_SMART_INFO,
     986  FirmwareSlotInfoLogID   = LID_FW_SLOT_INFO,
     987  BootPartitionInfoLogID  = LID_BP_INFO,
     988  SanitizeStatusInfoLogID = LID_SANITIZE_STATUS_INFO
    943989} NVME_LOG_ID;
    944990
     
    10631109} NVME_SMART_HEALTH_INFO_LOG;
    10641110
     1111//
     1112// Sanitize Status (Log Identifier 81h)
     1113// (ref. spec. v2.0c 5.16.1.25).
     1114//
     1115typedef struct {
     1116  //
     1117  // Indicates the fraction complete of the sanitize operation. (SPROG)
     1118  //
     1119  UINT16    SanitizeProgress;
     1120  //
     1121  // Indicates the status associated with the most recent sanitize operation. (SSTAT)
     1122  //
     1123  UINT16    SanitizeStatus                   : 3;
     1124  UINT16    OverwriteSanitizeCompletedNumber : 5;
     1125  UINT16    GlobalDataErased                 : 1;
     1126  UINT16    SanitizeStatusRsvd               : 7;
     1127  //
     1128  // Contains the value of the Command Dword 10 field of the Sanitize command that started the sanitize operation whose status is reported in the SSTAT field. (SCDW10)
     1129  //
     1130  UINT32    SanitizeCmdDw10Info;
     1131  //
     1132  // Indicates the number of seconds required to complete an Overwrite sanitize operation with 16 passes in the background when the No-Deallocate Modifies Media After Sanitize field is not set to 10b.
     1133  //
     1134  UINT32    OverwriteEstimatedTime;
     1135  //
     1136  // Indicates the number of seconds required to complete a Block Erase sanitize operation in the background when the No-Deallocate Modifies Media After Sanitize field is not set to 10b.
     1137  //
     1138  UINT32    BlockEraseEstimatedTime;
     1139  //
     1140  // Indicates the number of seconds required to complete a Crypto Erase sanitize operation in the background when the No-Deallocate Modifies Media After Sanitize field is not set to 10b.
     1141  //
     1142  UINT32    CryptoEraseEstimatedTime;
     1143  //
     1144  // Indicates the number of seconds required to complete an Overwrite sanitize operation and the associated additional media modification after the Overwrite sanitize operation in the background.
     1145  // The No-Deallocate After Sanitize bit was set to ?1? in the Sanitize command that requested the Overwrite sanitize operation.
     1146  // The No-Deallocate Modifies Media After Sanitize field is set to 10b.
     1147  //
     1148  UINT32    OverwriteEstimatedTimeWithNodmm;
     1149  //
     1150  // Indicates the number of seconds required to complete a Block Erase sanitize operation and the associated additional media modification after the Block Erase sanitize operation in the background.
     1151  // The No-Deallocate After Sanitize bit was set to ?1? in the Sanitize command that requested the Block Erase sanitize operation.
     1152  // The No-Deallocate Modifies Media After Sanitize field is set to 10b.
     1153  //
     1154  UINT32    BlockEraseEstimatedTimeWithNodmm;
     1155  //
     1156  // Indicates  the number of seconds required to complete a Crypto Erase sanitize operation and the associated additional media modification after the Crypto Erase sanitize operation in the background.
     1157  // The No-Deallocate After Sanitize bit was set to ?1? in the Sanitize command that requested the Crypto Erase sanitize operation.
     1158  // The No-Deallocate Modifies Media After Sanitize field is set to 10b.
     1159  //
     1160  UINT32    CryptoEraseEstimatedTimeWithNodmm;
     1161  UINT8     Reserved[480];
     1162} NVME_SANITIZE_STATUS_INFO_LOG;
     1163
    10651164#pragma pack()
    10661165
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/PeImage.h

    r101296 r105670  
    55
    66  This file is coded to the Visual Studio, Microsoft Portable Executable and
    7   Common Object File Format Specification, Revision 8.3 - February 6, 2013.
     7  Common Object File Format Specification, Revision 9.3 - December 29, 2015.
    88  This file also includes some definitions in PI Specification, Revision 1.0.
    99
     
    270270#define EFI_IMAGE_SUBSYSTEM_POSIX_CUI    7
    271271
     272//
     273// DLL Characteristics
     274//
     275#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA        0x0020
     276#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE           0x0040
     277#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY        0x0080
     278#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT              0x0100
     279#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION           0x0200
     280#define IMAGE_DLLCHARACTERISTICS_NO_SEH                 0x0400
     281#define IMAGE_DLLCHARACTERISTICS_NO_BIND                0x0800
     282#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER           0x1000
     283#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER             0x2000
     284#define IMAGE_DLLCHARACTERISTICS_GUARD_CF               0x4000
     285#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE  0x8000
     286
    272287///
    273288/// Length of ShortName.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Pldm.h

    r101291 r105670  
    4141
    4242#define PLDM_MESSAGE_HEADER_IS_REQUEST        1
     43#define PLDM_MESSAGE_HEADER_IS_RESPONSE       0
    4344#define PLDM_MESSAGE_HEADER_IS_DATAGRAM       1
    4445#define PLDM_MESSAGE_HEADER_INSTANCE_ID_MASK  0x1f
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/SerialPortConsoleRedirectionTable.h

    r99404 r105670  
    2424#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION  0x02
    2525
     26#define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION  0x04
    2627///
    2728/// Serial Port Console Redirection Table Format
     
    5152} EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE;
    5253
     54///
     55/// Serial Port Console Redirection Table Format Revision 4
     56///
     57typedef struct {
     58  EFI_ACPI_DESCRIPTION_HEADER               Header;
     59  UINT8                                     InterfaceType;
     60  UINT8                                     Reserved1[3];
     61  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    BaseAddress;
     62  UINT8                                     InterruptType;
     63  UINT8                                     Irq;
     64  UINT32                                    GlobalSystemInterrupt;
     65  UINT8                                     BaudRate;
     66  UINT8                                     Parity;
     67  UINT8                                     StopBits;
     68  UINT8                                     FlowControl;
     69  UINT8                                     TerminalType;
     70  UINT8                                     Reserved2;
     71  UINT16                                    PciDeviceId;
     72  UINT16                                    PciVendorId;
     73  UINT8                                     PciBusNumber;
     74  UINT8                                     PciDeviceNumber;
     75  UINT8                                     PciFunctionNumber;
     76  UINT32                                    PciFlags;
     77  UINT8                                     PciSegment;
     78  UINT32                                    UartClockFrequency;
     79  UINT32                                    PreciseBaudRate;
     80  UINT16                                    NameSpaceStrLength;
     81  UINT16                                    NameSpaceStrOffset;
     82  CHAR8                                     NameSpaceString[0];
     83} EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE;
     84
    5385#pragma pack()
    5486
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/SmBios.h

    r101291 r105670  
    11/** @file
    2   Industry Standard Definitions of SMBIOS Table Specification v3.6.0.
    3 
    4 Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
     2  Industry Standard Definitions of SMBIOS Table Specification v3.8.0.
     3
     4Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.<BR>
    55(C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
    66(C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR>
     
    555555  ProcessorFamilyIntelCeleronM                   = 0x14,
    556556  ProcessorFamilyIntelPentium4Ht                 = 0x15,
     557  ProcessorFamilyIntel                           = 0x16,
    557558  ProcessorFamilyAmdDuron                        = 0x18,
    558559  ProcessorFamilyK5                              = 0x19,
     
    774775  ProcessorFamilyMultiCoreLoongson3B = 0x026F,
    775776  ProcessorFamilyMultiCoreLoongson3C = 0x0270,
    776   ProcessorFamilyMultiCoreLoongson3D = 0x0271
     777  ProcessorFamilyMultiCoreLoongson3D = 0x0271,
     778  ProcessorFamilyIntelCore3          = 0x0300,
     779  ProcessorFamilyIntelCore5          = 0x0301,
     780  ProcessorFamilyIntelCore7          = 0x0302,
     781  ProcessorFamilyIntelCore9          = 0x0303,
     782  ProcessorFamilyIntelCoreUltra3     = 0x0304,
     783  ProcessorFamilyIntelCoreUltra5     = 0x0305,
     784  ProcessorFamilyIntelCoreUltra7     = 0x0306,
     785  ProcessorFamilyIntelCoreUltra9     = 0x0307
    777786} PROCESSOR_FAMILY2_DATA;
    778787
     
    864873  ProcessorUpgradeSocketLGA2422   = 0x46,
    865874  ProcessorUpgradeSocketLGA5773   = 0x47,
    866   ProcessorUpgradeSocketBGA5773   = 0x48
     875  ProcessorUpgradeSocketBGA5773   = 0x48,
     876  ProcessorUpgradeSocketAM5       = 0x49,
     877  ProcessorUpgradeSocketSP5       = 0x4A,
     878  ProcessorUpgradeSocketSP6       = 0x4B,
     879  ProcessorUpgradeSocketBGA883    = 0x4C,
     880  ProcessorUpgradeSocketBGA1190   = 0x4D,
     881  ProcessorUpgradeSocketBGA4129   = 0x4E,
     882  ProcessorUpgradeSocketLGA4710   = 0x4F,
     883  ProcessorUpgradeSocketLGA7529   = 0x50,
     884  ProcessorUpgradeSocketBGA1964   = 0x51,
     885  ProcessorUpgradeSocketBGA1792   = 0x52,
     886  ProcessorUpgradeSocketBGA2049   = 0x53,
     887  ProcessorUpgradeSocketBGA2551   = 0x54,
     888  ProcessorUpgradeSocketLGA1851   = 0x55,
     889  ProcessorUpgradeSocketBGA2114   = 0x56,
     890  ProcessorUpgradeSocketBGA2833   = 0x57
    867891} PROCESSOR_UPGRADE;
    868892
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Spdm.h

    r99404 r105670  
    11/** @file
    2   Definitions of Security Protocol & Data Model Specification (SPDM)
    3   version 1.0.0 in Distributed Management Task Force (DMTF).
    4 
    5 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
     2  Definitions of DSP0274 Security Protocol & Data Model Specification (SPDM)
     3  version 1.2.0 in Distributed Management Task Force (DMTF).
     4
     5Copyright (c) 2019 - 2024, Intel Corporation. All rights reserved.<BR>
    66SPDX-License-Identifier: BSD-2-Clause-Patent
    77
     
    1313#pragma pack(1)
    1414
    15 ///
    16 /// SPDM response code
    17 ///
    18 #define SPDM_DIGESTS            0x01
    19 #define SPDM_CERTIFICATE        0x02
    20 #define SPDM_CHALLENGE_AUTH     0x03
    21 #define SPDM_VERSION            0x04
    22 #define SPDM_MEASUREMENTS       0x60
    23 #define SPDM_CAPABILITIES       0x61
    24 #define SPDM_SET_CERT_RESPONSE  0x62
    25 #define SPDM_ALGORITHMS         0x63
    26 #define SPDM_ERROR              0x7F
    27 ///
    28 /// SPDM request code
    29 ///
    30 #define SPDM_GET_DIGESTS           0x81
    31 #define SPDM_GET_CERTIFICATE       0x82
    32 #define SPDM_CHALLENGE             0x83
    33 #define SPDM_GET_VERSION           0x84
    34 #define SPDM_GET_MEASUREMENTS      0xE0
    35 #define SPDM_GET_CAPABILITIES      0xE1
    36 #define SPDM_NEGOTIATE_ALGORITHMS  0xE3
    37 #define SPDM_RESPOND_IF_READY      0xFF
     15#define SPDM_MAX_SLOT_COUNT        8
     16#define SPDM_MAX_OPAQUE_DATA_SIZE  1024
     17#define SPDM_NONCE_SIZE            32
     18#define SPDM_RANDOM_DATA_SIZE      32
     19///
     20/// SPDM response code (1.0)
     21///
     22#define SPDM_DIGESTS                  0x01
     23#define SPDM_CERTIFICATE              0x02
     24#define SPDM_CHALLENGE_AUTH           0x03
     25#define SPDM_VERSION                  0x04
     26#define SPDM_MEASUREMENTS             0x60
     27#define SPDM_CAPABILITIES             0x61
     28#define SPDM_ALGORITHMS               0x63
     29#define SPDM_VENDOR_DEFINED_RESPONSE  0x7E
     30#define SPDM_ERROR                    0x7F
     31///
     32/// SPDM response code (1.1)
     33///
     34#define SPDM_KEY_EXCHANGE_RSP           0x64
     35#define SPDM_FINISH_RSP                 0x65
     36#define SPDM_PSK_EXCHANGE_RSP           0x66
     37#define SPDM_PSK_FINISH_RSP             0x67
     38#define SPDM_HEARTBEAT_ACK              0x68
     39#define SPDM_KEY_UPDATE_ACK             0x69
     40#define SPDM_ENCAPSULATED_REQUEST       0x6A
     41#define SPDM_ENCAPSULATED_RESPONSE_ACK  0x6B
     42#define SPDM_END_SESSION_ACK            0x6C
     43///
     44/// SPDM response code (1.2)
     45///
     46#define SPDM_CSR                  0x6D
     47#define SPDM_SET_CERTIFICATE_RSP  0x6E
     48#define SPDM_CHUNK_SEND_ACK       0x05
     49#define SPDM_CHUNK_RESPONSE       0x06
     50///
     51/// SPDM request code (1.0)
     52///
     53#define SPDM_GET_DIGESTS             0x81
     54#define SPDM_GET_CERTIFICATE         0x82
     55#define SPDM_CHALLENGE               0x83
     56#define SPDM_GET_VERSION             0x84
     57#define SPDM_GET_MEASUREMENTS        0xE0
     58#define SPDM_GET_CAPABILITIES        0xE1
     59#define SPDM_NEGOTIATE_ALGORITHMS    0xE3
     60#define SPDM_VENDOR_DEFINED_REQUEST  0xFE
     61#define SPDM_RESPOND_IF_READY        0xFF
     62///
     63/// SPDM request code (1.1)
     64///
     65#define SPDM_KEY_EXCHANGE                   0xE4
     66#define SPDM_FINISH                         0xE5
     67#define SPDM_PSK_EXCHANGE                   0xE6
     68#define SPDM_PSK_FINISH                     0xE7
     69#define SPDM_HEARTBEAT                      0xE8
     70#define SPDM_KEY_UPDATE                     0xE9
     71#define SPDM_GET_ENCAPSULATED_REQUEST       0xEA
     72#define SPDM_DELIVER_ENCAPSULATED_RESPONSE  0xEB
     73#define SPDM_END_SESSION                    0xEC
     74///
     75/// SPDM request code (1.2)
     76///
     77#define SPDM_GET_CSR          0xED
     78#define SPDM_SET_CERTIFICATE  0xEE
     79#define SPDM_CHUNK_SEND       0x85
     80#define SPDM_CHUNK_GET        0x86
    3881
    3982///
     
    4790} SPDM_MESSAGE_HEADER;
    4891
    49 #define SPDM_MESSAGE_VERSION  0x10
     92#define SPDM_MESSAGE_VERSION_10  0x10
     93#define SPDM_MESSAGE_VERSION_11  0x11
     94#define SPDM_MESSAGE_VERSION_12  0x12
     95#define SPDM_MESSAGE_VERSION     SPDM_MESSAGE_VERSION_10
    5096
    5197///
     
    54100typedef struct {
    55101  SPDM_MESSAGE_HEADER    Header;
     102  // Param1 == RSVD
     103  // Param2 == RSVD
    56104} SPDM_GET_VERSION_REQUEST;
    57105
     
    61109typedef struct {
    62110  SPDM_MESSAGE_HEADER    Header;
     111  // Param1 == RSVD
     112  // Param2 == RSVD
    63113  UINT8                  Reserved;
    64114  UINT8                  VersionNumberEntryCount;
     
    69119/// SPDM VERSION structure
    70120///
    71 typedef struct {
    72   UINT16    Alpha               : 4;
    73   UINT16    UpdateVersionNumber : 4;
    74   UINT16    MinorVersion        : 4;
    75   UINT16    MajorVersion        : 4;
    76 } SPDM_VERSION_NUMBER;
    77 
     121/// bit[15:12] major_version
     122/// bit[11:8]  minor_version
     123/// bit[7:4]   update_version_number
     124/// bit[3:0]   alpha
     125typedef UINT16 SPDM_VERSION_NUMBER;
     126#define SPDM_VERSION_NUMBER_SHIFT_BIT  8
     127
     128#define SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT  "dmtf-spdm-v1.2.*"
     129#define SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT_SIZE \
     130    (sizeof(SPDM_VERSION_1_2_SIGNING_PREFIX_CONTEXT) - 1)
     131#define SPDM_VERSION_1_2_SIGNING_CONTEXT_SIZE  100
    78132///
    79133/// SPDM GET_CAPABILITIES request
     
    81135typedef struct {
    82136  SPDM_MESSAGE_HEADER    Header;
    83 } SPDM_GET_CAPABILITIES_REQUEST;
    84 
    85 ///
    86 /// SPDM GET_CAPABILITIES response
    87 ///
    88 typedef struct {
    89   SPDM_MESSAGE_HEADER    Header;
     137  // Param1 == RSVD
     138  // Param2 == RSVD
     139  // Below field is added in 1.1.
    90140  UINT8                  Reserved;
    91141  UINT8                  CTExponent;
    92142  UINT16                 Reserved2;
    93143  UINT32                 Flags;
     144  // Below field is added in 1.2.
     145  UINT32                 DataTransferSize;
     146  UINT32                 MaxSpdmMsgSize;
     147} SPDM_GET_CAPABILITIES_REQUEST;
     148
     149///
     150/// SPDM GET_CAPABILITIES response
     151///
     152typedef struct {
     153  SPDM_MESSAGE_HEADER    Header;
     154  // Param1 == RSVD
     155  // Param2 == RSVD
     156  UINT8                  Reserved;
     157  UINT8                  CTExponent;
     158  UINT16                 Reserved2;
     159  UINT32                 Flags;
     160  // Below field is added in 1.2.
     161  UINT32                 DataTransferSize;
     162  UINT32                 MaxSpdmMsgSize;
    94163} SPDM_CAPABILITIES_RESPONSE;
    95164
    96 ///
    97 /// SPDM GET_CAPABILITIES response Flags
     165#define SPDM_MIN_DATA_TRANSFER_SIZE_VERSION_12  42
     166
     167///
     168/// SPDM GET_CAPABILITIES request Flags (1.1)
     169///
     170#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP                    BIT1
     171#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP                    BIT2
     172#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP                 BIT6
     173#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP                     BIT7
     174#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP                BIT8
     175#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP                  BIT9
     176#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP                     (BIT10 | BIT11)
     177#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP_REQUESTER           BIT10
     178#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP                   BIT12
     179#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP                   BIT13
     180#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP                 BIT14
     181#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP  BIT15
     182#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP              BIT16
     183#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_11_MASK                     (\
     184        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP | \
     185        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP | \
     186        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP | \
     187        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP | \
     188        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP | \
     189        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_EX_CAP | \
     190        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP | \
     191        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP | \
     192        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP | \
     193        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP | \
     194        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP | \
     195        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP)
     196
     197///
     198/// SPDM GET_CAPABILITIES request Flags (1.2)
     199///
     200#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP  BIT17
     201#define SPDM_GET_CAPABILITIES_REQUEST_FLAGS_12_MASK    (\
     202        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_11_MASK | \
     203        SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP)
     204///
     205/// SPDM GET_CAPABILITIES response Flags (1.0)
    98206///
    99207#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP        BIT0
     
    104212#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG     BIT4
    105213#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP   BIT5
    106 
     214#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_10_MASK          (\
     215        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CACHE_CAP | \
     216        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP | \
     217        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP | \
     218        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP | \
     219        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_FRESH_CAP)
     220///
     221/// SPDM GET_CAPABILITIES response Flags (1.1)
     222///
     223#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP                     BIT6
     224#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP                         BIT7
     225#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP                    BIT8
     226#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP                      BIT9
     227#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP                         (BIT10 | BIT11)
     228#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER               BIT10
     229#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP_RESPONDER_WITH_CONTEXT  BIT11
     230#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP                       BIT12
     231#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP                       BIT13
     232#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP                     BIT14
     233#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP      BIT15
     234#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP                  BIT16
     235#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_11_MASK                         (\
     236        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_10_MASK | \
     237        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP | \
     238        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MAC_CAP | \
     239        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MUT_AUTH_CAP | \
     240        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_EX_CAP | \
     241        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP | \
     242        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP | \
     243        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HBEAT_CAP | \
     244        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP | \
     245        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_HANDSHAKE_IN_THE_CLEAR_CAP | \
     246        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP)
     247///
     248/// SPDM GET_CAPABILITIES response Flags (1.2)
     249///
     250#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP       BIT17
     251#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP  BIT18
     252
     253///
     254/// SPDM GET_CAPABILITIES response Flags (1.2.1)
     255///
     256#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP            BIT19
     257#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CSR_CAP                 BIT20
     258#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_INSTALL_RESET_CAP  BIT21
     259#define SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_12_MASK                 (\
     260        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_11_MASK | \
     261        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP | \
     262        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP | \
     263        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP | \
     264        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CSR_CAP | \
     265        SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_INSTALL_RESET_CAP)
    107266///
    108267/// SPDM NEGOTIATE_ALGORITHMS request
     
    110269typedef struct {
    111270  SPDM_MESSAGE_HEADER    Header;
     271  // Param1 == Number of Algorithms Structure Tables
     272  // Param2 == RSVD
    112273  UINT16                 Length;
    113274  UINT8                  MeasurementSpecification;
    114   UINT8                  Reserved;
     275
     276  // OtherParamsSupport is added in 1.2.
     277  // BIT[0:3]=opaque_data_format support
     278  // BIT[4:7]=Reserved
     279  UINT8                  OtherParamsSupport;
    115280  UINT32                 BaseAsymAlgo;
    116281  UINT32                 BaseHashAlgo;
     
    119284  UINT8                  ExtHashCount;
    120285  UINT16                 Reserved3;
    121   // UINT32               ExtAsym[ExtAsymCount];
    122   // UINT32               ExtHash[ExtHashCount];
     286  // SPDM_EXTENDED_ALGORITHM                 ExtAsym[ExtAsymCount];
     287  // SPDM_EXTENDED_ALGORITHM                 ExtHash[ExtHashCount];
     288  // Below field is added in 1.1.
     289  // SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE  AlgStruct[Param1];
    123290} SPDM_NEGOTIATE_ALGORITHMS_REQUEST;
    124291
    125 ///
    126 /// SPDM NEGOTIATE_ALGORITHMS request BaseAsymAlgo
     292#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_10         BIT6
     293#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_11         BIT7
     294#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_LENGTH_VERSION_12         BIT7
     295#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_10  BIT3
     296#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_11  (BIT4 | BIT2)
     297#define SPDM_NEGOTIATE_ALGORITHMS_REQUEST_MAX_EXT_ALG_COUNT_VERSION_12  (BIT4 | BIT2)
     298
     299typedef struct {
     300  UINT8    AlgType;
     301  UINT8    AlgCount;             // BIT[0:3]=ExtAlgCount, BIT[4:7]=FixedAlgByteCount
     302  // UINT8                AlgSupported[FixedAlgByteCount];
     303  // UINT32               AlgExternal[ExtAlgCount];
     304} SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE;
     305
     306typedef struct {
     307  UINT8    ExtAlgCount       : 4;
     308  UINT8    FixedAlgByteCount : 4;
     309} SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_COUNT;
     310
     311#define SPDM_NEGOTIATE_ALGORITHMS_MAX_NUM_STRUCT_TABLE_ALG  4
     312
     313#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_DHE                2
     314#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_AEAD               3
     315#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_REQ_BASE_ASYM_ALG  4
     316#define SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE_ALG_TYPE_KEY_SCHEDULE       5
     317
     318typedef struct {
     319  UINT8     AlgType;
     320  UINT8     AlgCount;
     321  UINT16    AlgSupported;
     322} SPDM_NEGOTIATE_ALGORITHMS_COMMON_STRUCT_TABLE;
     323
     324///
     325/// SPDM NEGOTIATE_ALGORITHMS request BaseAsymAlgo/REQ_BASE_ASYM_ALG
    127326///
    128327#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048          BIT0
     
    137336
    138337///
     338/// SPDM NEGOTIATE_ALGORITHMS request base_asym_algo/REQ_BASE_ASYM_ALG (1.2)
     339///
     340#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_SM2_ECC_SM2_P256  BIT9
     341#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED25519             BIT10
     342#define SPDM_ALGORITHMS_BASE_ASYM_ALGO_EDDSA_ED448               BIT11
     343
     344///
    139345/// SPDM NEGOTIATE_ALGORITHMS request BaseHashAlgo
    140346///
     
    147353
    148354///
     355/// SPDM NEGOTIATE_ALGORITHMS request base_hash_algo (1.2)
     356///
     357#define SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SM3_256  BIT6
     358
     359///
     360/// SPDM NEGOTIATE_ALGORITHMS request DHE
     361///
     362#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_2048   BIT0
     363#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_3072   BIT1
     364#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_FFDHE_4096   BIT2
     365#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_256_R1  BIT3
     366#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_384_R1  BIT4
     367#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SECP_521_R1  BIT5
     368
     369///
     370/// SPDM NEGOTIATE_ALGORITHMS request DHE (1.2)
     371///
     372#define SPDM_ALGORITHMS_DHE_NAMED_GROUP_SM2_P256  BIT6
     373
     374///
     375/// SPDM NEGOTIATE_ALGORITHMS request AEAD
     376///
     377#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_128_GCM        BIT0
     378#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AES_256_GCM        BIT1
     379#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_CHACHA20_POLY1305  BIT2
     380
     381///
     382/// SPDM NEGOTIATE_ALGORITHMS request AEAD (1.2)
     383///
     384#define SPDM_ALGORITHMS_AEAD_CIPHER_SUITE_AEAD_SM4_GCM  BIT3
     385///
     386/// SPDM NEGOTIATE_ALGORITHMS request KEY_SCHEDULE
     387///
     388#define SPDM_ALGORITHMS_KEY_SCHEDULE_HMAC_HASH  BIT0
     389
     390///
    149391/// SPDM NEGOTIATE_ALGORITHMS response
    150392///
    151393typedef struct {
    152394  SPDM_MESSAGE_HEADER    Header;
     395  // Param1 == Number of Algorithms Structure Tables
     396  // Param2 == RSVD
    153397  UINT16                 Length;
    154398  UINT8                  MeasurementSpecificationSel;
    155   UINT8                  Reserved;
     399
     400  // OtherParamsSelection is added in 1.2.
     401  // BIT[0:3]=opaque_data_format select,
     402  // BIT[4:7]=Reserved
     403  UINT8                  OtherParamsSelection;
    156404  UINT32                 MeasurementHashAlgo;
    157405  UINT32                 BaseAsymSel;
     
    161409  UINT8                  ExtHashSelCount;
    162410  UINT16                 Reserved3;
    163   // UINT32               ExtAsymSel[ExtAsymSelCount];
    164   // UINT32               ExtHashSel[ExtHashSelCount];
     411  // SPDM_EXTENDED_ALGORITHM                 ExtAsymSel[ExtAsymSelCount];
     412  // SPDM_EXTENDED_ALGORITHM                 ExtHashSel[ExtHashSelCount];
     413  // Below field is added in 1.1.
     414  // SPDM_NEGOTIATE_ALGORITHMS_STRUCT_TABLE  AlgStruct[Param1];
    165415} SPDM_ALGORITHMS_RESPONSE;
    166416
     
    177427
    178428///
     429/// SPDM NEGOTIATE_ALGORITHMS response measurement_hash_algo (1.2)
     430///
     431#define SPDM_ALGORITHMS_MEASUREMENT_HASH_ALGO_TPM_ALG_SM3_256  BIT7
     432
     433///
     434/// SPDM Opaque Data Format (1.2)
     435///
     436#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_NONE  0x0
     437#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_0     0x1
     438#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1     0x2
     439#define SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_MASK  0xF
     440
     441///
     442/// SPDM Opaque Data Format 1 (1.2)
     443///
     444typedef struct {
     445  UINT8    TotalElements;
     446  UINT8    Reserved[3];
     447  // opaque_element_table_t  opaque_list[];
     448} SPDM_GENERAL_OPAQUE_DATA_TABLE_HEADER;
     449
     450///
     451/// SPDM extended algorithm
     452///
     453typedef struct {
     454  UINT8     RegistryID;
     455  UINT8     Reserved;
     456  UINT16    AlgorithmID;
     457} SPDM_EXTENDED_ALGORITHM;
     458
     459///
     460/// SPDM RegistryID
     461///
     462#define SPDM_REGISTRY_ID_DMTF     0
     463#define SPDM_REGISTRY_ID_TCG      1
     464#define SPDM_REGISTRY_ID_USB      2
     465#define SPDM_REGISTRY_ID_PCISIG   3
     466#define SPDM_REGISTRY_ID_IANA     4
     467#define SPDM_REGISTRY_ID_HDBASET  5
     468#define SPDM_REGISTRY_ID_MIPI     6
     469#define SPDM_REGISTRY_ID_CXL      7
     470#define SPDM_REGISTRY_ID_JEDEC    8
     471
     472///
    179473/// SPDM GET_DIGESTS request
    180474///
    181475typedef struct {
    182476  SPDM_MESSAGE_HEADER    Header;
     477  // Param1 == RSVD
     478  // Param2 == RSVD
    183479} SPDM_GET_DIGESTS_REQUEST;
    184480
     
    188484typedef struct {
    189485  SPDM_MESSAGE_HEADER    Header;
    190   // UINT8                Digest[DigestSize];
     486  // Param1 == RSVD
     487  // Param2 == SlotMask
     488  // UINT8                Digest[DigestSize][SlotCount];
    191489} SPDM_DIGESTS_RESPONSE;
    192490
    193491///
    194 /// SPDM GET_DIGESTS request
    195 ///
    196 typedef struct {
    197   SPDM_MESSAGE_HEADER    Header;
     492/// SPDM GET_CERTIFICATE request
     493///
     494typedef struct {
     495  SPDM_MESSAGE_HEADER    Header;
     496  // Param1 == SlotNum
     497  // Param2 == RSVD
    198498  UINT16                 Offset;
    199499  UINT16                 Length;
    200500} SPDM_GET_CERTIFICATE_REQUEST;
    201501
    202 ///
    203 /// SPDM GET_DIGESTS response
    204 ///
    205 typedef struct {
    206   SPDM_MESSAGE_HEADER    Header;
     502#define SPDM_GET_CERTIFICATE_REQUEST_SLOT_ID_MASK  0xF
     503///
     504/// SPDM GET_CERTIFICATE response
     505///
     506typedef struct {
     507  SPDM_MESSAGE_HEADER    Header;
     508  // Param1 == SlotNum
     509  // Param2 == RSVD
    207510  UINT16                 PortionLength;
    208511  UINT16                 RemainderLength;
    209   // UINT8                CertChain[CertChainSize];
     512  // UINT8                CertChain[PortionLength];
    210513} SPDM_CERTIFICATE_RESPONSE;
    211514
     515#define SPDM_CERTIFICATE_RESPONSE_SLOT_ID_MASK  0xF
     516
     517typedef struct {
     518  //
     519  // Total length of the certificate chain, in bytes,
     520  // including all fields in this table.
     521  //
     522  UINT16    Length;
     523  UINT16    Reserved;
     524  //
     525  // Digest of the Root Certificate.
     526  // Note that Root Certificate is ASN.1 DER-encoded for this digest.
     527  // The hash size is determined by the SPDM device.
     528  //
     529  // UINT8    RootHash[HashSize];
     530  //
     531  // One or more ASN.1 DER-encoded X509v3 certificates where the first certificate is signed by the Root
     532  // Certificate or is the Root Certificate itself and each subsequent certificate is signed by the preceding
     533  // certificate. The last certificate is the Leaf Certificate.
     534  //
     535  // UINT8    Certificates[Length - 4 - HashSize];
     536} SPDM_CERT_CHAIN;
     537
     538///
     539/// Maximum size, in bytes, of a certificate chain.
     540///
     541#define SPDM_MAX_CERTIFICATE_CHAIN_SIZE  65535
    212542///
    213543/// SPDM CHALLENGE request
     
    215545typedef struct {
    216546  SPDM_MESSAGE_HEADER    Header;
     547  // Param1 == SlotNum
     548  // Param2 == HashType
    217549  UINT8                  Nonce[32];
    218550} SPDM_CHALLENGE_REQUEST;
     
    223555typedef struct {
    224556  SPDM_MESSAGE_HEADER    Header;
     557  // Param1 == ResponseAttribute
     558  // Param2 == SlotMask
    225559  // UINT8                CertChainHash[DigestSize];
    226560  // UINT8                Nonce[32];
     
    232566
    233567///
     568/// SPDM generic request measurement summary HashType
     569///
     570#define SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH     0
     571#define SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH  1
     572#define SPDM_REQUEST_ALL_MEASUREMENTS_HASH           0xFF
     573
     574///
     575/// SPDM CHALLENGE request measurement summary HashType
     576///
     577#define SPDM_CHALLENGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH  SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
     578#define SPDM_CHALLENGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
     579    SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
     580#define SPDM_CHALLENGE_REQUEST_ALL_MEASUREMENTS_HASH  SPDM_REQUEST_ALL_MEASUREMENTS_HASH
     581
     582#define SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE_SLOT_ID_MASK  0xF
     583
     584typedef struct {
     585  UINT8    SlotNum         : 4;
     586  UINT8    Reserved        : 3;
     587  UINT8    BasicMutAuthReq : 1;
     588} SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE;
     589
     590///
     591/// Deprecated in SPDM 1.2
     592///
     593#define SPDM_CHALLENGE_AUTH_RESPONSE_ATTRIBUTE_BASIC_MUT_AUTH_REQ  BIT7
     594
     595#define SPDM_CHALLENGE_AUTH_SIGN_CONTEXT           "responder-challenge_auth signing"
     596#define SPDM_CHALLENGE_AUTH_SIGN_CONTEXT_SIZE      (sizeof(SPDM_CHALLENGE_AUTH_SIGN_CONTEXT) - 1)
     597#define SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT       "requester-challenge_auth signing"
     598#define SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT_SIZE  (sizeof(SPDM_MUT_CHALLENGE_AUTH_SIGN_CONTEXT) - 1)
     599
     600///
    234601/// SPDM GET_MEASUREMENTS request
    235602///
    236603typedef struct {
    237604  SPDM_MESSAGE_HEADER    Header;
     605  // Param1 == Attributes
     606  // Param2 == MeasurementOperation
    238607  UINT8                  Nonce[32];
     608  // Below field is added in 1.1.
     609  UINT8                  SlotIDParam; // BIT[0:3]=SlotNum, BIT[4:7]=Reserved
    239610} SPDM_GET_MEASUREMENTS_REQUEST;
     611
     612typedef struct {
     613  UINT8    SlotNum  : 4;
     614  UINT8    Reserved : 4;
     615} SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_PARAMETER;
     616
     617#define SPDM_GET_MEASUREMENTS_REQUEST_SLOT_ID_MASK  0xF
     618
     619///
     620/// SPDM GET_MEASUREMENTS request Attributes
     621///
     622#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_GENERATE_SIGNATURE         BIT0
     623#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_RAW_BIT_STREAM_REQUESTED   BIT1
     624#define SPDM_GET_MEASUREMENTS_REQUEST_ATTRIBUTES_NEW_MEASUREMENT_REQUESTED  BIT2
     625
     626///
     627/// SPDM GET_MEASUREMENTS request MeasurementOperation
     628///
     629#define SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_TOTAL_NUMBER_OF_MEASUREMENTS  0
     630
     631///
     632/// SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_INDEX
     633///
     634#define SPDM_GET_MEASUREMENTS_REQUEST_MEASUREMENT_OPERATION_ALL_MEASUREMENTS  0xFF
    240635
    241636///
     
    260655} SPDM_MEASUREMENT_BLOCK_DMTF_HEADER;
    261656
     657typedef struct {
     658  SPDM_MEASUREMENT_BLOCK_COMMON_HEADER    MeasurementBlockCommonHeader;
     659  SPDM_MEASUREMENT_BLOCK_DMTF_HEADER      MeasurementBlockDmtfHeader;
     660  // UINT8                                 HashValue[HashSize];
     661} SPDM_MEASUREMENT_BLOCK_DMTF;
     662
     663typedef struct {
     664  UINT8    Content      : 7;
     665  UINT8    Presentation : 1;
     666} SPDM_MEASUREMENTS_BLOCK_MEASUREMENT_TYPE;
     667
    262668///
    263669/// SPDM MEASUREMENTS block MeasurementValueType
     
    267673#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_HARDWARE_CONFIGURATION  2
    268674#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_FIRMWARE_CONFIGURATION  3
     675#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_MEASUREMENT_MANIFEST    4
     676#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_DEVICE_MODE             5
     677#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_VERSION                 6
     678#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_SECURE_VERSION_NUMBER   7
     679#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_MASK                    0x7
    269680#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_TYPE_RAW_BIT_STREAM          BIT7
    270681
    271682///
     683/// SPDM MEASUREMENTS block index
     684///
     685#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_INDEX_MEASUREMENT_MANIFEST  0xFD
     686#define SPDM_MEASUREMENT_BLOCK_MEASUREMENT_INDEX_DEVICE_MODE           0xFE
     687
     688///
     689/// SPDM MEASUREMENTS device mode
     690///
     691typedef struct {
     692  UINT32    OperationalModeCapabilities;
     693  UINT32    OperationalModeState;
     694  UINT32    DeviceModeCapabilities;
     695  UINT32    DeviceModeState;
     696} SPDM_MEASUREMENT_DEVICE_MODE;
     697
     698#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_MANUFACTURING_MODE   BIT0
     699#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_VALIDATION_MODE      BIT1
     700#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_NORMAL_MODE          BIT2
     701#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_RECOVERY_MODE        BIT3
     702#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_RMA_MODE             BIT4
     703#define SPDM_MEASUREMENT_DEVICE_OPERATION_MODE_DECOMMISSIONED_MODE  BIT5
     704
     705#define SPDM_MEASUREMENT_DEVICE_MODE_NON_INVASIVE_DEBUG_MODE_IS_ACTIVE              BIT0
     706#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_IS_ACTIVE                  BIT1
     707#define SPDM_MEASUREMENT_DEVICE_MODE_NON_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE        BIT2
     708#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE            BIT3
     709#define SPDM_MEASUREMENT_DEVICE_MODE_INVASIVE_DEBUG_MODE_HAS_BEEN_ACTIVE_AFTER_MFG  BIT4
     710
     711///
     712/// SPDM MEASUREMENTS SVN
     713///
     714typedef UINT64 SPDM_MEASUREMENTS_SECURE_VERSION_NUMBER;
     715
     716///
    272717/// SPDM GET_MEASUREMENTS response
    273718///
    274719typedef struct {
    275720  SPDM_MESSAGE_HEADER    Header;
     721  // Param1 == TotalNumberOfMeasurement/RSVD
     722  // Param2 == SlotNum
    276723  UINT8                  NumberOfBlocks;
    277724  UINT8                  MeasurementRecordLength[3];
     
    283730} SPDM_MEASUREMENTS_RESPONSE;
    284731
     732#define SPDM_MEASUREMENTS_RESPONSE_SLOT_ID_MASK  0xF
     733
     734///
     735/// SPDM MEASUREMENTS content changed
     736///
     737#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_MASK          0x30
     738#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_NO_DETECTION  0x00
     739#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_CHANGE_DETECTED      0x10
     740#define SPDM_MEASUREMENTS_RESPONSE_CONTENT_NO_CHANGE_DETECTED   0x20
     741
     742#define SPDM_MEASUREMENTS_SIGN_CONTEXT       "responder-measurements signing"
     743#define SPDM_MEASUREMENTS_SIGN_CONTEXT_SIZE  (sizeof(SPDM_MEASUREMENTS_SIGN_CONTEXT) - 1)
     744
     745#define SPDM_MEL_SPECIFICATION_DMTF  BIT0
     746
    285747///
    286748/// SPDM ERROR response
     
    293755} SPDM_ERROR_RESPONSE;
    294756
     757#define SPDM_EXTENDED_ERROR_DATA_MAX_SIZE  32
     758
    295759///
    296760/// SPDM error code
    297761///
    298 #define SPDM_ERROR_CODE_INVALID_REQUEST         0x01
    299 #define SPDM_ERROR_CODE_BUSY                    0x03
    300 #define SPDM_ERROR_CODE_UNEXPECTED_REQUEST      0x04
    301 #define SPDM_ERROR_CODE_UNSPECIFIED             0x05
    302 #define SPDM_ERROR_CODE_UNSUPPORTED_REQUEST     0x07
    303 #define SPDM_ERROR_CODE_MAJOR_VERSION_MISMATCH  0x41
    304 #define SPDM_ERROR_CODE_RESPONSE_NOT_READY      0x42
    305 #define SPDM_ERROR_CODE_REQUEST_RESYNCH         0x43
     762#define SPDM_ERROR_CODE_INVALID_REQUEST      0x01
     763#define SPDM_ERROR_CODE_BUSY                 0x03
     764#define SPDM_ERROR_CODE_UNEXPECTED_REQUEST   0x04
     765#define SPDM_ERROR_CODE_UNSPECIFIED          0x05
     766#define SPDM_ERROR_CODE_UNSUPPORTED_REQUEST  0x07
     767#define SPDM_ERROR_CODE_VERSION_MISMATCH     0x41
     768#define SPDM_ERROR_CODE_RESPONSE_NOT_READY   0x42
     769#define SPDM_ERROR_CODE_REQUEST_RESYNCH      0x43
     770#define SPDM_ERROR_CODE_VENDOR_DEFINED       0xFF
     771///
     772/// SPDM error code (1.1)
     773///
     774#define SPDM_ERROR_CODE_DECRYPT_ERROR           0x06
     775#define SPDM_ERROR_CODE_REQUEST_IN_FLIGHT       0x08
     776#define SPDM_ERROR_CODE_INVALID_RESPONSE_CODE   0x09
     777#define SPDM_ERROR_CODE_SESSION_LIMIT_EXCEEDED  0x0A
     778
     779///
     780/// SPDM error code (1.2)
     781///
     782#define SPDM_ERROR_CODE_SESSION_REQUIRED    0x0B
     783#define SPDM_ERROR_CODE_RESET_REQUIRED      0x0C
     784#define SPDM_ERROR_CODE_RESPONSE_TOO_LARGE  0x0D
     785#define SPDM_ERROR_CODE_REQUEST_TOO_LARGE   0x0E
     786#define SPDM_ERROR_CODE_LARGE_RESPONSE      0x0F
     787#define SPDM_ERROR_CODE_MESSAGE_LOST        0x10
     788///
     789/// SPDM ResponseNotReady extended data
     790///
     791typedef struct {
     792  UINT8    RDTExponent;
     793  UINT8    RequestCode;
     794  UINT8    Token;
     795  UINT8    Rdtm;
     796} SPDM_ERROR_DATA_RESPONSE_NOT_READY;
     797
     798typedef struct {
     799  SPDM_MESSAGE_HEADER                   Header;
     800  // Param1 == Error Code
     801  // Param2 == Error Data
     802  SPDM_ERROR_DATA_RESPONSE_NOT_READY    ExtendErrorData;
     803} SPDM_ERROR_RESPONSE_DATA_RESPONSE_NOT_READY;
     804
     805///
     806/// SPDM LargeResponse extended data
     807///
     808typedef struct {
     809  UINT8    Handle;
     810} SPDM_ERROR_DATA_LARGE_RESPONSE;
     811
     812typedef struct {
     813  SPDM_MESSAGE_HEADER               Header;
     814
     815  // param1 == Error Code
     816  // param2 == Error data
     817  //
     818  SPDM_ERROR_DATA_LARGE_RESPONSE    ExtendErrorData;
     819} SPDM_ERROR_RESPONSE_LARGE_RESPONSE;
    306820
    307821///
     
    314828} SPDM_RESPONSE_IF_READY_REQUEST;
    315829
     830///
     831/// Maximum size of a vendor defined message data length
     832/// limited by the length field size which is 2 bytes
     833///
     834#define SPDM_MAX_VENDOR_DEFINED_DATA_LEN  65535
     835
     836///
     837/// Maximum size of a vendor defined vendor id length
     838/// limited by the length field size which is 1 byte
     839///
     840#define SPDM_MAX_VENDOR_ID_LENGTH  255
     841
     842///
     843/// SPDM VENDOR_DEFINED request
     844///
     845typedef struct {
     846  SPDM_MESSAGE_HEADER    Header;
     847  // Param1 == RSVD
     848  // Param2 == RSVD
     849  UINT16                 StandardID;
     850  UINT8                  Len;
     851  // UINT8                VendorID[Len];
     852  // UINT16               PayloadLength;
     853  // UINT8                VendorDefinedPayload[PayloadLength];
     854} SPDM_VENDOR_DEFINED_REQUEST_MSG;
     855
     856///
     857/// SPDM VENDOR_DEFINED response
     858///
     859typedef struct {
     860  SPDM_MESSAGE_HEADER    Header;
     861  // Param1 == RSVD
     862  // Param2 == RSVD
     863  UINT16                 StandardID;
     864  UINT8                  Len;
     865  // UINT8                VendorID[Len];
     866  // UINT16               PayloadLength;
     867  // UINT8                VendorDefinedPayload[PayloadLength];
     868} SPDM_VENDOR_DEFINED_RESPONSE_MSG;
     869
     870//
     871// Below command is defined in SPDM 1.1
     872//
     873
     874///
     875/// SPDM KEY_EXCHANGE request
     876///
     877typedef struct {
     878  SPDM_MESSAGE_HEADER    Header;
     879  // Param1 == HashType
     880  // Param2 == SlotNum
     881  UINT16                 ReqSessionID;
     882  UINT16                 Reserved;
     883  UINT8                  RandomData[32];
     884  // UINT8                ExchangeData[D];
     885  // UINT16               OpaqueLength;
     886  // UINT8                OpaqueData[OpaqueLength];
     887} SPDM_KEY_EXCHANGE_REQUEST;
     888
     889///
     890/// SPDM KEY_EXCHANGE request session_policy
     891///
     892#define SPDM_KEY_EXCHANGE_REQUEST_SESSION_POLICY_TERMINATION_POLICY_RUNTIME_UPDATE  BIT0
     893
     894///
     895/// SPDM KEY_EXCHANGE request measurement summary HashType
     896///
     897#define SPDM_KEY_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH \
     898    SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
     899#define SPDM_KEY_EXCHANGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
     900    SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
     901#define SPDM_KEY_EXCHANGE_REQUEST_ALL_MEASUREMENTS_HASH  SPDM_REQUEST_ALL_MEASUREMENTS_HASH
     902
     903///
     904/// SPDM KEY_EXCHANGE response
     905///
     906typedef struct {
     907  SPDM_MESSAGE_HEADER    Header;
     908  // Param1 == HeartbeatPeriod
     909  // Param2 == RSVD
     910  UINT16                 RspSessionID;
     911  UINT8                  MutAuthRequested;
     912  UINT8                  ReqSlotIDParam;
     913  UINT8                  RandomData[32];
     914  // UINT8                ExchangeData[D];
     915  // UINT8                MeasurementSummaryHash[DigestSize];
     916  // UINT16               OpaqueLength;
     917  // UINT8                OpaqueData[OpaqueLength];
     918  // UINT8                Signature[S];
     919  // UINT8                ResponderVerifyData[H];
     920} SPDM_KEY_EXCHANGE_RESPONSE;
     921
     922///
     923/// SPDM KEY_EXCHANGE response MutAuthRequested
     924///
     925#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED                     BIT0
     926#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_ENCAP_REQUEST  BIT1
     927#define SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_GET_DIGESTS    BIT2
     928
     929#define SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT  "responder-key_exchange_rsp signing"
     930#define SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT_SIZE \
     931    (sizeof(SPDM_KEY_EXCHANGE_RESPONSE_SIGN_CONTEXT) - 1)
     932
     933#define SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT  "Requester-KEP-dmtf-spdm-v1.2"
     934#define SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT_SIZE \
     935    (sizeof(SPDM_VERSION_1_2_KEY_EXCHANGE_REQUESTER_CONTEXT) - 1)
     936
     937#define SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT  "Responder-KEP-dmtf-spdm-v1.2"
     938#define SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT_SIZE \
     939    (sizeof(SPDM_VERSION_1_2_KEY_EXCHANGE_RESPONDER_CONTEXT) - 1)
     940
     941///
     942/// SPDM FINISH request
     943///
     944typedef struct {
     945  SPDM_MESSAGE_HEADER    Header;
     946  // Param1 == SignatureIncluded
     947  // Param2 == ReqSlotNum
     948  // UINT8                Signature[S];
     949  // UINT8                RequesterVerifyData[H];
     950} SPDM_FINISH_REQUEST;
     951
     952///
     953/// SPDM FINISH request SignatureIncluded
     954///
     955#define SPDM_FINISH_REQUEST_ATTRIBUTES_SIGNATURE_INCLUDED  BIT0
     956
     957///
     958/// SPDM FINISH response
     959///
     960typedef struct {
     961  SPDM_MESSAGE_HEADER    Header;
     962  // Param1 == RSVD
     963  // Param2 == RSVD
     964  // UINT8                ResponderVerifyData[H];
     965} SPDM_FINISH_RESPONSE;
     966
     967#define SPDM_FINISH_SIGN_CONTEXT       "requester-finish signing"
     968#define SPDM_FINISH_SIGN_CONTEXT_SIZE  (sizeof(SPDM_FINISH_SIGN_CONTEXT) - 1)
     969
     970///
     971/// SPDM PSK_EXCHANGE request
     972///
     973typedef struct {
     974  SPDM_MESSAGE_HEADER    Header;
     975  // Param1 == HashType
     976  // Param2 == RSVD/session_policy (1.2)
     977  UINT16                 ReqSessionID;
     978  UINT16                 PSKHintLength;
     979  UINT16                 RequesterContextLength;
     980  UINT16                 OpaqueLength;
     981  // UINT8                PSKHint[PSKHintLength];
     982  // UINT8                RequesterContext[RequesterContextLength];
     983  // UINT8                OpaqueData[OpaqueLength];
     984} SPDM_PSK_EXCHANGE_REQUEST;
     985
     986///
     987/// SPDM PSK_EXCHANGE request measurement summary HashType
     988///
     989#define SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH \
     990    SPDM_REQUEST_NO_MEASUREMENT_SUMMARY_HASH
     991#define SPDM_PSK_EXCHANGE_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH \
     992    SPDM_REQUEST_TCB_COMPONENT_MEASUREMENT_HASH
     993#define SPDM_PSK_EXCHANGE_REQUEST_ALL_MEASUREMENTS_HASH  SPDM_REQUEST_ALL_MEASUREMENTS_HASH
     994
     995///
     996/// SPDM PSK_EXCHANGE response
     997///
     998typedef struct {
     999  SPDM_MESSAGE_HEADER    Header;
     1000  // Param1 == HeartbeatPeriod
     1001  // Param2 == RSVD
     1002  UINT16                 RspSessionID;
     1003  UINT16                 Reserved;
     1004  UINT16                 ResponderContextLength;
     1005  UINT16                 OpaqueLength;
     1006  // UINT8                MeasurementSummaryHash[DigestSize];
     1007  // UINT8                ResponderContext[ResponderContextLength];
     1008  // UINT8                OpaqueData[OpaqueLength];
     1009  // UINT8                ResponderVerifyData[H];
     1010} SPDM_PSK_EXCHANGE_RESPONSE;
     1011
     1012///
     1013/// SPDM PSK_FINISH request
     1014///
     1015typedef struct {
     1016  SPDM_MESSAGE_HEADER    Header;
     1017  // Param1 == RSVD
     1018  // Param2 == RSVD
     1019  // UINT8                RequesterVerifyData[H];
     1020} SPDM_PSK_FINISH_REQUEST;
     1021
     1022///
     1023/// SPDM PSK_FINISH response
     1024///
     1025typedef struct {
     1026  SPDM_MESSAGE_HEADER    Header;
     1027  // Param1 == RSVD
     1028  // Param2 == RSVD
     1029} SPDM_PSK_FINISH_RESPONSE;
     1030
     1031///
     1032/// SPDM HEARTBEAT request
     1033///
     1034typedef struct {
     1035  SPDM_MESSAGE_HEADER    Header;
     1036  // Param1 == RSVD
     1037  // Param2 == RSVD
     1038} SPDM_HEARTBEAT_REQUEST;
     1039
     1040///
     1041/// SPDM HEARTBEAT response
     1042///
     1043typedef struct {
     1044  SPDM_MESSAGE_HEADER    Header;
     1045  // Param1 == RSVD
     1046  // Param2 == RSVD
     1047} SPDM_HEARTBEAT_RESPONSE;
     1048
     1049///
     1050/// SPDM KEY_UPDATE request
     1051///
     1052typedef struct {
     1053  SPDM_MESSAGE_HEADER    Header;
     1054  // Param1 == KeyOperation
     1055  // Param2 == Tag
     1056} SPDM_KEY_UPDATE_REQUEST;
     1057
     1058///
     1059/// SPDM KEY_UPDATE Operations Table
     1060///
     1061#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_KEY       1
     1062#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_UPDATE_ALL_KEYS  2
     1063#define SPDM_KEY_UPDATE_OPERATIONS_TABLE_VERIFY_NEW_KEY   3
     1064
     1065///
     1066/// SPDM KEY_UPDATE response
     1067///
     1068typedef struct {
     1069  SPDM_MESSAGE_HEADER    Header;
     1070  // Param1 == KeyOperation
     1071  // Param2 == Tag
     1072} SPDM_KEY_UPDATE_RESPONSE;
     1073
     1074///
     1075/// SPDM GET_ENCAPSULATED_REQUEST request
     1076///
     1077typedef struct {
     1078  SPDM_MESSAGE_HEADER    Header;
     1079  // Param1 == RSVD
     1080  // Param2 == RSVD
     1081} SPDM_GET_ENCAPSULATED_REQUEST_REQUEST;
     1082
     1083///
     1084/// SPDM ENCAPSULATED_REQUEST response
     1085///
     1086typedef struct {
     1087  SPDM_MESSAGE_HEADER    Header;
     1088  // Param1 == RequestID
     1089  // Param2 == RSVD
     1090  // UINT8                EncapsulatedRequest[];
     1091} SPDM_ENCAPSULATED_REQUEST_RESPONSE;
     1092
     1093///
     1094/// SPDM DELIVER_ENCAPSULATED_RESPONSE request
     1095///
     1096typedef struct {
     1097  SPDM_MESSAGE_HEADER    Header;
     1098  // Param1 == RequestID
     1099  // Param2 == RSVD
     1100  // UINT8                EncapsulatedResponse[];
     1101} SPDM_DELIVER_ENCAPSULATED_RESPONSE_REQUEST;
     1102
     1103///
     1104/// SPDM ENCAPSULATED_RESPONSE_ACK response
     1105///
     1106typedef struct {
     1107  SPDM_MESSAGE_HEADER    Header;
     1108  // Param1 == RequestID
     1109  // Param2 == PayloadType
     1110  // below 4 bytes are added in 1.2.
     1111  UINT8                  AckRequestId;
     1112  UINT8                  Reserved[3];
     1113  // UINT8                EncapsulatedRequest[];
     1114} SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE;
     1115
     1116///
     1117/// SPDM ENCAPSULATED_RESPONSE_ACK_RESPONSE Payload Type
     1118///
     1119#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_ABSENT           0
     1120#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_PRESENT          1
     1121#define SPDM_ENCAPSULATED_RESPONSE_ACK_RESPONSE_PAYLOAD_TYPE_REQ_SLOT_NUMBER  2
     1122
     1123///
     1124/// SPDM END_SESSION request
     1125///
     1126typedef struct {
     1127  SPDM_MESSAGE_HEADER    Header;
     1128  // Param1 == EndSessionRequestAttributes
     1129  // Param2 == RSVD
     1130} SPDM_END_SESSION_REQUEST;
     1131
     1132///
     1133/// SPDM END_SESSION request Attributes
     1134///
     1135#define SPDM_END_SESSION_REQUEST_ATTRIBUTES_PRESERVE_NEGOTIATED_STATE_CLEAR  BIT0
     1136
     1137///
     1138/// SPDM END_SESSION response
     1139///
     1140typedef struct {
     1141  SPDM_MESSAGE_HEADER    Header;
     1142  // Param1 == RSVD
     1143  // Param2 == RSVD
     1144} SPDM_END_SESSION_RESPONSE;
     1145
     1146//
     1147// Below command is defined in SPDM 1.2
     1148//
     1149
     1150///
     1151/// SPDM SET_CERTIFICATE request
     1152///
     1153typedef struct {
     1154  SPDM_MESSAGE_HEADER    Header;
     1155
     1156  // param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD
     1157  // param2 == RSVD
     1158  // param1 and param2 are updated in 1.3
     1159  // param1 == Request attributes, BIT[0:3]=slot_id, BIT[4:6]=SetCertModel, BIT[7]=Erase
     1160  // param2 == KeyPairID
     1161  // void * CertChain
     1162} SPDM_SET_CERTIFICATE_REQUEST;
     1163
     1164#define SPDM_SET_CERTIFICATE_REQUEST_SLOT_ID_MASK  0xF
     1165
     1166///
     1167/// SPDM SET_CERTIFICATE request Attributes
     1168///
     1169#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_CERT_MODEL_MASK    0x70
     1170#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_CERT_MODEL_OFFSET  4
     1171#define SPDM_SET_CERTIFICATE_REQUEST_ATTRIBUTES_ERASE              0x80
     1172
     1173///
     1174/// SPDM SET_CERTIFICATE_RSP response
     1175///
     1176typedef struct {
     1177  SPDM_MESSAGE_HEADER    Header;
     1178
     1179  // param1 == BIT[0:3]=slot_id, BIT[4:7]=RSVD
     1180  // param2 == RSVD
     1181} SPDM_SET_CERTIFICATE_RESPONSE;
     1182
     1183#define SPDM_SET_CERTIFICATE_RESPONSE_SLOT_ID_MASK  0xF
     1184
     1185///
     1186/// SPDM GET_CSR request
     1187///
     1188typedef struct {
     1189  SPDM_MESSAGE_HEADER    Header;
     1190  UINT16                 RequesterInfoLength;
     1191  UINT16                 OpaqueDataLength;
     1192
     1193  // UINT8 RequesterInfo[RequesterInfoLength];
     1194  // UINT8 OpaqueData[OpaqueDataLength];
     1195} SPDM_GET_CSR_REQUEST;
     1196
     1197///
     1198/// SPDM GET_CSR request Attributes
     1199///
     1200#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CERT_MODEL_MASK          0x07
     1201#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CSR_TRACKING_TAG_MASK    0x38
     1202#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_CSR_TRACKING_TAG_OFFSET  3
     1203#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_OVERWRITE                0x80
     1204#define SPDM_GET_CSR_REQUEST_ATTRIBUTES_MAX_CSR_CERT_MODEL       4
     1205
     1206///
     1207/// Maximum size, in bytes, of a CSR.
     1208///
     1209#define SPDM_MAX_CSR_SIZE  65535
     1210
     1211///
     1212/// SPDM CSR response
     1213///
     1214typedef struct {
     1215  SPDM_MESSAGE_HEADER    Header;
     1216
     1217  // param1 == RSVD
     1218  // param2 == RSVD
     1219  UINT16                 CsrLength;
     1220  UINT16                 Reserved;
     1221} SPDM_CSR_RESPONSE;
     1222
     1223///
     1224/// SPDM CHUNK_SEND request
     1225///
     1226typedef struct {
     1227  SPDM_MESSAGE_HEADER    Header;
     1228
     1229  // param1 - Request Attributes
     1230  // param2 - Handle
     1231  UINT16                 ChunkSeqNo;
     1232  UINT16                 Reserved;
     1233  UINT32                 ChunkSize;
     1234
     1235  // UINT32 LargeMessageSize;
     1236  // UINT8  SpdmChunk[ChunkSize];
     1237} SPDM_CHUNK_SEND_REQUEST;
     1238
     1239#define SPDM_CHUNK_SEND_REQUEST_ATTRIBUTE_LAST_CHUNK  (1 << 0)
     1240
     1241///
     1242/// SPDM CHUNK_SEND_ACK response
     1243///
     1244typedef struct {
     1245  SPDM_MESSAGE_HEADER    Header;
     1246
     1247  // param1 - Response Attributes
     1248  // param2 - Handle
     1249  UINT16                 ChunkSeqNo;
     1250  // UINT8 response_to_large_request[variable]
     1251} SPDM_CHUNK_SEND_ACK_RESPONSE;
     1252
     1253#define SPDM_CHUNK_SEND_ACK_RESPONSE_ATTRIBUTE_EARLY_ERROR_DETECTED  (1 << 0)
     1254
     1255///
     1256/// SPDM CHUNK_GET request
     1257///
     1258typedef struct {
     1259  SPDM_MESSAGE_HEADER    Header;
     1260
     1261  // param1 - Reserved
     1262  // param2 - Handle
     1263  UINT16                 ChunkSeqNo;
     1264} SPDM_CHUNK_GET_REQUEST;
     1265
     1266///
     1267/// SPDM CHUNK_RESPONSE response
     1268///
     1269typedef struct {
     1270  SPDM_MESSAGE_HEADER    Header;
     1271
     1272  // param1 - Response Attributes
     1273  // param2 - Handle
     1274  UINT16                 ChunkSeqNo;
     1275  UINT16                 Reserved;
     1276  UINT32                 ChunkSize;
     1277
     1278  // UINT32 LargeMessageSize;
     1279  // UINT8  SpdmChunk[ChunkSize];
     1280} SPDM_CHUNK_RESPONSE_RESPONSE;
     1281
     1282#define SPDM_CHUNK_GET_RESPONSE_ATTRIBUTE_LAST_CHUNK  (1 << 0)
    3161283#pragma pack()
    3171284
     1285#define SPDM_VERSION_1_1_BIN_CONCAT_LABEL  "spdm1.1 "
     1286#define SPDM_VERSION_1_2_BIN_CONCAT_LABEL  "spdm1.2 "
     1287#define SPDM_BIN_STR_0_LABEL               "derived"
     1288#define SPDM_BIN_STR_1_LABEL               "req hs data"
     1289#define SPDM_BIN_STR_2_LABEL               "rsp hs data"
     1290#define SPDM_BIN_STR_3_LABEL               "req app data"
     1291#define SPDM_BIN_STR_4_LABEL               "rsp app data"
     1292#define SPDM_BIN_STR_5_LABEL               "key"
     1293#define SPDM_BIN_STR_6_LABEL               "iv"
     1294#define SPDM_BIN_STR_7_LABEL               "finished"
     1295#define SPDM_BIN_STR_8_LABEL               "exp master"
     1296#define SPDM_BIN_STR_9_LABEL               "traffic upd"
     1297
     1298///
     1299/// The maximum amount of time in microseconds the Responder has to provide a response
     1300/// to requests that do not require cryptographic processing.
     1301///
     1302#define SPDM_ST1_VALUE_US  100000
     1303
     1304///
     1305/// id-DMTF 1.3.6.1.4.1.412.
     1306/// These OID are defiend in ANNEX C (informative) OID reference section from the DMTF SPDM spec.
     1307/// https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.2.2.pdf
     1308///
     1309#define SPDM_OID_DMTF \
     1310    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C }
     1311// id-DMTF-spdm, { id-DMTF 274 }, 1.3.6.1.4.1.412.274
     1312#define SPDM_OID_DMTF_SPDM \
     1313    {0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12 }
     1314// id-DMTF-device-info, { id-DMTF-spdm 1 }, 1.3.6.1.4.1.412.274.1
     1315#define SPDM_OID_DMTF_DEVICE_INFO \
     1316    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x01 }
     1317// id-DMTF-hardware-identity, { id-DMTF-spdm 2 }, 1.3.6.1.4.1.412.274.2
     1318#define SPDM_OID_DMTF_HARDWARE_IDENTITY \
     1319    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x02 }
     1320// id-DMTF-eku-responder-auth, { id-DMTF-spdm 3 }, 1.3.6.1.4.1.412.274.3
     1321#define SPDM_OID_DMTF_EKU_RESPONDER_AUTH \
     1322    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x03 }
     1323// id-DMTF-eku-requester-auth, { id-DMTF-spdm 4 }, 1.3.6.1.4.1.412.274.4
     1324#define SPDM_OID_DMTF_EKU_REQUESTER_AUTH \
     1325    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x04 }
     1326// id-DMTF-mutable-certificate, { id-DMTF-spdm 5 }, 1.3.6.1.4.1.412.274.5
     1327#define SPDM_OID_DMTF_MUTABLE_CERTIFICATE \
     1328    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x05 }
     1329// id-DMTF-SPDM-extension, { id-DMTF-spdm 6 }, 1.3.6.1.4.1.412.274.6
     1330#define SPDM_OID_DMTF_SPDM_EXTENSION \
     1331    {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1C, 0x82, 0x12, 0x06 }
    3181332#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Tdx.h

    r99404 r105670  
    104104#define TDVMCALL_SETUP_EVENT_NOTIFY  0x10004
    105105
     106#define TDVMCALL_STATUS_RETRY  0x1
     107
    106108#pragma pack(1)
    107109typedef struct {
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/UefiTcgPlatform.h

    r99404 r105670  
    11/** @file
    22  TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final and
    3   TCG PC Client Platform Firmware Profile Specification, Revision 1.05
    4 
    5   Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
     3  TCG PC Client Platform Firmware Profile Specification, Revision 1.06
     4
     5  Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.<BR>
    66  SPDX-License-Identifier: BSD-2-Clause-Patent
    77
     
    5454#define EV_EFI_SPDM_FIRMWARE_BLOB         (EV_EFI_EVENT_BASE + 0xE1)
    5555#define EV_EFI_SPDM_FIRMWARE_CONFIG       (EV_EFI_EVENT_BASE + 0xE2)
     56#define EV_EFI_SPDM_DEVICE_BLOB           EV_EFI_SPDM_FIRMWARE_BLOB
     57#define EV_EFI_SPDM_DEVICE_CONFIG         EV_EFI_SPDM_FIRMWARE_CONFIG
     58//
     59// The SPDM policy database for SPDM verification.
     60// It goes to PCR7
     61//
     62#define EV_EFI_SPDM_DEVICE_POLICY  (EV_EFI_EVENT_BASE + 0xE3)
     63//
     64// The SPDM policy authority for SPDM verification for the signature
     65// of GET_MEASUREMENT or CHALLENGE_AUTH. It goes to PCR7.
     66//
     67#define EV_EFI_SPDM_DEVICE_AUTHORITY  (EV_EFI_EVENT_BASE + 0xE4)
    5668
    5769#define EFI_CALLING_EFI_APPLICATION         \
     
    375387#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2          0
    376388#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105  105
     389#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_106  106
    377390
    378391typedef struct {
     
    439452#define TCG_Sp800_155_PlatformId_Event_SIGNATURE   "SP800-155 Event"
    440453#define TCG_Sp800_155_PlatformId_Event2_SIGNATURE  "SP800-155 Event2"
     454#define TCG_Sp800_155_PlatformId_Event3_SIGNATURE  "SP800-155 Event3"
    441455
    442456typedef struct tdTCG_Sp800_155_PlatformId_Event2 {
     
    466480  // UINT32              FirmwareManufacturerId;
    467481  // UINT8               FirmwareVersion;
    468   // UINT8               FirmwareVersion[FirmwareVersionSize]];
     482  // UINT8               FirmwareVersion[FirmwareVersionSize];
    469483} TCG_Sp800_155_PlatformId_Event2;
     484
     485typedef struct tdTCG_Sp800_155_PlatformId_Event3 {
     486  UINT8       Signature[16];
     487  //
     488  // Where Vendor ID is an integer defined
     489  // at http://www.iana.org/assignments/enterprisenumbers
     490  //
     491  UINT32      VendorId;
     492  //
     493  // 16-byte identifier of a given platform's static configuration of code
     494  //
     495  EFI_GUID    ReferenceManifestGuid;
     496  // UINT8               PlatformManufacturerStrSize;
     497  // UINT8               PlatformManufacturerStr[PlatformManufacturerStrSize];
     498  // UINT8               PlatformModelSize;
     499  // UINT8               PlatformModel[PlatformModelSize];
     500  // UINT8               PlatformVersionSize;
     501  // UINT8               PlatformVersion[PlatformVersionSize];
     502  // UINT8               PlatformModelSize;
     503  // UINT8               PlatformModel[PlatformModelSize];
     504  // UINT8               FirmwareManufacturerStrSize;
     505  // UINT8               FirmwareManufacturerStr[FirmwareManufacturerStrSize];
     506  // UINT32              FirmwareManufacturerId;
     507  // UINT8               FirmwareVersion;
     508  // UINT8               FirmwareVersion[FirmwareVersionSize];
     509  //
     510  // Below structure is newly added in TCG_Sp800_155_PlatformId_Event3
     511  //
     512  // UINT32              RimLocatorType;
     513  // UINT32              RimLocatorLength;
     514  // UINT8               RimLocator[RimLocatorLength];
     515  // UINT32              PlatformCertLocatorType;
     516  // UINT32              PlatformCertLocatorLength;
     517  // UINT8               PlatformCertLocator[PlatformCertLocatorLength];
     518} TCG_Sp800_155_PlatformId_Event3;
    470519
    471520#define TCG_EfiStartupLocalityEvent_SIGNATURE  "StartupLocality"
     
    493542#pragma pack ()
    494543
     544//
     545// ======================================================================================================================
     546// Event Type                    PCR  Event Log                                   Usage
     547// ======================================================================================================================
     548// EV_EFI_SPDM_DEVICE_BLOB       2    SPDM_MEASUREMENT_BLOCK (subtype)            MEASUREMENT from device
     549// EV_EFI_SPDM_DEVICE_CONFIG     3    SPDM_MEASUREMENT_BLOCK (subtype)            MEASUREMENT from device
     550// EV_EFI_SPDM_DEVICE_BLOB       2    SPDM_MEASUREMENT_SUMMARY_HASH.TCB (subtype) SUMMARY_HASH from device
     551
     552// EV_EFI_SPDM_DEVICE_POLICY     7    UEFI_VARIABLE_DATA with EFI_SIGNATURE_LIST  Provisioned device public cert.
     553// EV_EFI_SPDM_DEVICE_AUTHORITY  7    UEFI_VARIABLE_DATA with EFI_SIGNATURE_DATA  CHALLENGE_AUTH signature verification
     554// ======================================================================================================================
     555//
     556
     557#define PCR_INDEX_FOR_SIGNATURE_DB  7
     558
     559#pragma pack(1)
     560
     561#define TCG_DEVICE_SECURITY_EVENT_DATA_VERSION_1    1
     562#define TCG_DEVICE_SECURITY_EVENT_DATA_VERSION_2    2
     563#define TCG_DEVICE_SECURITY_EVENT_DATA_SIGNATURE_2  "SPDM Device Sec2"
     564
     565typedef struct {
     566  UINT8     Signature[16];
     567  UINT16    Version;
     568  UINT8     AuthState;
     569  UINT8     Reserved;
     570  UINT32    Length;                      // Length in bytes for all following structures.
     571  UINT32    DeviceType;
     572  UINT32    SubHeaderType;
     573  UINT32    SubHeaderLength;                      // Length in bytes of the sub header followed by.
     574  UINT64    SubHeaderUID;                         // Universal identifier assigned by the event log creator. It can be used to bind two sub header structure together.
     575  // UINT64                         DevicePathLength;
     576  // UINT8                          DevicePath[DevicePathLength];
     577} TCG_DEVICE_SECURITY_EVENT_DATA_HEADER2;
     578
     579#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_SUCCESS       0
     580#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_NO_AUTH       1
     581#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_NO_BINDING    2
     582#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_FAIL_NO_SIG   3
     583#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_FAIL_INVALID  4
     584#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_AUTH_STATE_NO_SPDM       0xFF
     585
     586#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_SUB_HEADER_TYPE_SPDM_MEASUREMENT_BLOCK  0
     587#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_SUB_HEADER_TYPE_SPDM_CERT_CHAIN         1
     588
     589typedef struct {
     590  UINT16    SpdmVersion;
     591  UINT8     SpdmMeasurementBlockCount;
     592  UINT8     Reserved;
     593  UINT32    SpdmMeasurementHashAlgo;
     594  // SPDM_MEASUREMENT_BLOCK         SpdmMeasurementBlock;
     595} TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK;
     596
     597typedef struct {
     598  UINT16    SpdmVersion;
     599  UINT8     SpdmSlotId;
     600  UINT8     Reserved;
     601  UINT32    SpdmHashAlgo;
     602  // SPDM_CERT_CHAIN                SpdmCertChain;
     603} TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN;
     604
     605typedef struct {
     606  UINT32    Type;
     607  UINT32    Length;
     608  UINT8     Value[1];
     609} TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_OEM_MEASUREMENT;
     610
     611typedef union {
     612  TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_MEASUREMENT_BLOCK    SpdmMeasurementBlock;
     613  TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_SPDM_CERT_CHAIN           SpdmCertChain;
     614  TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER_OEM_MEASUREMENT           OemMeasurement;
     615} TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER;
     616
     617typedef union {
     618  TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT    Pci;
     619  TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT    Usb;
     620} TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT;
     621
     622typedef struct {
     623  TCG_DEVICE_SECURITY_EVENT_DATA_HEADER2           EventDataHeader;
     624  TCG_DEVICE_SECURITY_EVENT_DATA_SUB_HEADER        EventDataSubHeader;
     625  TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT    DeviceContext;
     626} TCG_DEVICE_SECURITY_EVENT_DATA2;
     627
     628#pragma pack()
     629
     630//
     631// EventType:EV_NO_ACTION
     632// ======================================================================================================================
     633// NVIndex Name                                PCR/NvIndex  Event Log                            Usage
     634// ======================================================================================================================
     635// NV_EXTEND_INDEX_FOR_INSTANCE                0x01C40200   NV_INDEX_INSTANCE_EVENT_LOG_STRUCT   NV Extend Record for instance data (CertChain)
     636// NV_EXTEND_INDEX_FOR_DYNAMIC                 0x01C40201   NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT    NV Extend Record for dynamic data  (Nonce)
     637
     638// EVENT_LOG_INTEGRITY_NV_INDEX_EXIT_PM_AUTH   0x01C40202   EVENT_LOG_INTEGRITY_NV_INDEX_STRUCT  Event Log Integrity for ExitPmAuth
     639// EVENT_LOG_INTEGRITY_NV_INDEX_READY_TO_BOOT  0x01C40203   EVENT_LOG_INTEGRITY_NV_INDEX_STRUCT  Event Log Integrity for ReadyToBoot
     640// ======================================================================================================================
     641//
     642
     643#define TCG_NV_EXTEND_INDEX_FOR_INSTANCE                0x01C40200
     644#define TCG_NV_EXTEND_INDEX_FOR_DYNAMIC                 0x01C40201
     645#define TCG_EVENT_LOG_INTEGRITY_NV_INDEX_EXIT_PM_AUTH   0x01C40202
     646#define TCG_EVENT_LOG_INTEGRITY_NV_INDEX_READY_TO_BOOT  0x01C40203
     647
     648#pragma pack(1)
     649
     650#define TCG_NV_EXTEND_INDEX_FOR_INSTANCE_SIGNATURE      "NvIndexInstance"
     651#define TCG_NV_INDEX_INSTANCE_EVENT_LOG_STRUCT_VERSION  1
     652
     653typedef struct {
     654  UINT8     Signature[16];
     655  UINT16    Version;
     656  UINT8     Reserved[6];
     657  // TCG_DEVICE_SECURITY_EVENT_DATA2  Data;
     658} TCG_NV_INDEX_INSTANCE_EVENT_LOG_STRUCT;
     659
     660#define TCG_NV_EXTEND_INDEX_FOR_DYNAMIC_SIGNATURE      "NvIndexDynamic "
     661#define TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT_VERSION  1
     662
     663#define TCG_SPDM_CHALLENGE_DESCRIPTION         "SPDM CHALLENGE"
     664#define TCG_SPDM_CHALLENGE_AUTH_DESCRIPTION    "SPDM CHALLENGE_AUTH"
     665#define TCG_SPDM_GET_MEASUREMENTS_DESCRIPTION  "SPDM GET_MEASUREMENTS"
     666#define TCG_SPDM_MEASUREMENTS_DESCRIPTION      "SPDM MEASUREMENTS"
     667
     668typedef struct {
     669  UINT8     Signature[16];
     670  UINT16    Version;
     671  UINT8     Reserved[6];
     672  UINT64    Uid;
     673  // UINT16                           DescriptionSize;
     674  // UINT8                            Description[DescriptionSize];
     675  // UINT16                           DataSize;
     676  // UINT8                            Data[DataSize];
     677} TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT;
     678
     679typedef struct {
     680  TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT    Header;
     681  UINT16                                   DescriptionSize;
     682  UINT8                                    Description[sizeof (TCG_SPDM_CHALLENGE_DESCRIPTION)];
     683  UINT16                                   DataSize;
     684  UINT8                                    Data[32];
     685} TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT_SPDM_CHALLENGE;
     686
     687typedef struct {
     688  TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT    Header;
     689  UINT16                                   DescriptionSize;
     690  UINT8                                    Description[sizeof (TCG_SPDM_CHALLENGE_AUTH_DESCRIPTION)];
     691  UINT16                                   DataSize;
     692  UINT8                                    Data[32];
     693} TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT_SPDM_CHALLENGE_AUTH;
     694
     695typedef struct {
     696  TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT    Header;
     697  UINT16                                   DescriptionSize;
     698  UINT8                                    Description[sizeof (TCG_SPDM_GET_MEASUREMENTS_DESCRIPTION)];
     699  UINT16                                   DataSize;
     700  UINT8                                    Data[32];
     701} TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT_SPDM_GET_MEASUREMENTS;
     702
     703typedef struct {
     704  TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT    Header;
     705  UINT16                                   DescriptionSize;
     706  UINT8                                    Description[sizeof (TCG_SPDM_MEASUREMENTS_DESCRIPTION)];
     707  UINT16                                   DataSize;
     708  UINT8                                    Data[32];
     709} TCG_NV_INDEX_DYNAMIC_EVENT_LOG_STRUCT_SPDM_MEASUREMENTS;
     710
     711#pragma pack()
     712
    495713#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/BaseLib.h

    r101291 r105670  
    193193
    194194VOID
     195RiscVSetSupervisorTimeCompareRegister (
     196  IN UINT64
     197  );
     198
     199VOID
    195200RiscVEnableTimerInterrupt (
    196201  VOID
     
    205210RiscVClearPendingTimerInterrupt (
    206211  VOID
     212  );
     213
     214/**
     215  RISC-V invalidate instruction cache.
     216
     217**/
     218VOID
     219EFIAPI
     220RiscVInvalidateInstCacheFenceAsm (
     221  VOID
     222  );
     223
     224/**
     225  RISC-V invalidate data cache.
     226
     227**/
     228VOID
     229EFIAPI
     230RiscVInvalidateDataCacheFenceAsm (
     231  VOID
     232  );
     233
     234/**
     235  RISC-V flush cache block. Atomically perform a clean operation
     236  followed by an invalidate operation
     237
     238**/
     239VOID
     240EFIAPI
     241RiscVCpuCacheFlushCmoAsm (
     242  IN UINTN
     243  );
     244
     245/**
     246Perform a write transfer to another cache or to memory if the
     247data in the copy of the cache block have been modified by a store
     248operation
     249
     250**/
     251VOID
     252EFIAPI
     253RiscVCpuCacheCleanCmoAsm (
     254  IN UINTN
     255  );
     256
     257/**
     258Deallocate the copy of the cache block
     259
     260**/
     261VOID
     262EFIAPI
     263RiscVCpuCacheInvalCmoAsm (
     264  IN UINTN
    207265  );
    208266
     
    230288#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
    231289
     290/*
     291 * Set the exception base address for LoongArch.
     292 *
     293 * @param  ExceptionBaseAddress   The exception base address, must be aligned greater than or qeual to 4K .
     294 */
     295VOID
     296SetExceptionBaseAddress (
     297  IN UINT64
     298  );
     299
     300/*
     301 * Set the TlbRebase address for LoongArch.
     302 *
     303 * @param  TlbRebaseAddress   The TlbRebase address, must be aligned greater than or qeual to 4K .
     304 */
     305VOID
     306SetTlbRebaseAddress (
     307  IN UINT64
     308  );
     309
     310/**
     311  Enables local CPU interrupts.
     312
     313  @param  Needs to enable local interrupt bit.
     314**/
     315VOID
     316EnableLocalInterrupts (
     317  IN UINT16
     318  );
     319
     320/**
     321  Disables local CPU interrupts.
     322
     323  @param  Needs to disable local interrupt bit.
     324**/
     325VOID
     326DisableLocalInterrupts (
     327  IN UINT16
     328  );
     329
     330/**
     331  Read CPUCFG register.
     332
     333  @param  Index  Specifies the register number of the CPUCFG to read the data.
     334  @param  Data   A pointer to the variable used to store the CPUCFG register value.
     335**/
     336VOID
     337AsmCpucfg (
     338  IN  UINT32  Index,
     339  OUT UINT32  *Data
     340  );
     341
     342/**
     343  Gets the timer count value.
     344
     345  @param[] VOID
     346  @retval  timer count value.
     347
     348**/
     349UINTN
     350AsmReadStableCounter (
     351  VOID
     352  );
     353
     354/**
     355  CSR read operation.
     356
     357  @param[in]  Select   CSR read instruction select values.
     358
     359  @return     The return value of csrrd instruction, return -1 means no CSR instruction
     360              is found.
     361**/
     362UINTN
     363CsrRead (
     364  IN UINT16  Select
     365  );
     366
     367/**
     368  CSR write operation.
     369
     370  @param[in]  Select   CSR write instruction select values.
     371  @param[in]  Value    The csrwr will write the value.
     372
     373  @return     The return value of csrwr instruction, that is, store the old value of
     374              the register, return -1 means no CSR instruction is found.
     375**/
     376UINTN
     377CsrWrite (
     378  IN UINT16  Select,
     379  IN UINTN   Value
     380  );
     381
     382/**
     383  CSR exchange operation.
     384
     385  @param[in]  Select   CSR exchange instruction select values.
     386  @param[in]  Value    The csrxchg will write the value.
     387  @param[in]  Mask     The csrxchg mask value.
     388
     389  @return     The return value of csrxchg instruction, that is, store the old value of
     390              the register, return -1 means no CSR instruction is found.
     391**/
     392UINTN
     393CsrXChg (
     394  IN UINT16  Select,
     395  IN UINTN   Value,
     396  IN UINTN   Mask
     397  );
     398
     399/**
     400  IO CSR read byte operation.
     401
     402  @param[in]  Select   IO CSR read instruction select values.
     403
     404  @return     The return value of iocsrrd.b instruction.
     405
     406**/
     407UINT8
     408IoCsrRead8 (
     409  IN UINTN  Select
     410  );
     411
     412/**
     413  IO CSR read half word operation.
     414
     415  @param[in]  Select   IO CSR read instruction select values.
     416
     417  @return     The return value of iocsrrd.h instruction.
     418
     419**/
     420UINT16
     421IoCsrRead16 (
     422  IN UINTN  Select
     423  );
     424
     425/**
     426  IO CSR read word operation.
     427
     428  @param[in]  Select   IO CSR read instruction select values.
     429
     430  @return     The return value of iocsrrd.w instruction.
     431
     432**/
     433UINT32
     434IoCsrRead32 (
     435  IN UINTN  Select
     436  );
     437
     438/**
     439  IO CSR read double word operation. Only for LoongArch64.
     440
     441  @param[in]  Select   IO CSR read instruction select values.
     442
     443  @return     The return value of iocsrrd.d instruction.
     444
     445**/
     446UINT64
     447IoCsrRead64 (
     448  IN UINTN  Select
     449  );
     450
     451/**
     452  IO CSR write byte operation.
     453
     454  @param[in]  Select   IO CSR write instruction select values.
     455  @param[in]  Value    The iocsrwr.b will write the value.
     456
     457  @return     VOID.
     458
     459**/
     460VOID
     461IoCsrWrite8 (
     462  IN UINTN  Select,
     463  IN UINT8  Value
     464  );
     465
     466/**
     467  IO CSR write half word operation.
     468
     469  @param[in]  Select   IO CSR write instruction select values.
     470  @param[in]  Value    The iocsrwr.h will write the value.
     471
     472  @return     VOID.
     473
     474**/
     475VOID
     476IoCsrWrite16 (
     477  IN UINTN   Select,
     478  IN UINT16  Value
     479  );
     480
     481/**
     482  IO CSR write word operation.
     483
     484  @param[in]  Select   IO CSR write instruction select values.
     485  @param[in]  Value    The iocsrwr.w will write the value.
     486
     487  @return     VOID.
     488
     489**/
     490VOID
     491IoCsrWrite32 (
     492  IN UINTN   Select,
     493  IN UINT32  Value
     494  );
     495
     496/**
     497  IO CSR write double word operation. Only for LoongArch64.
     498
     499  @param[in]  Select   IO CSR write instruction select values.
     500  @param[in]  Value    The iocsrwr.d will write the value.
     501
     502  @return     VOID.
     503
     504**/
     505VOID
     506IoCsrWrite64 (
     507  IN UINTN   Select,
     508  IN UINT64  Value
     509  );
     510
    232511#endif // defined (MDE_CPU_LOONGARCH64)
    233512
     
    45994878  IN  UINT16      InitialValue
    46004879  );
     4880
     4881//
     4882// Initial value for the CRC16-ANSI algorithm, when no prior checksum has been calculated.
     4883//
     4884#define CRC16ANSI_INIT  0xffff
    46014885
    46024886/**
     
    75937877  );
    75947878
     7879///
     7880/// The structure used to supply and return data to and from the SVSM.
     7881///
     7882typedef struct {
     7883  VOID      *Caa;
     7884  UINT64    RaxIn;
     7885  UINT64    RcxIn;
     7886  UINT64    RdxIn;
     7887  UINT64    R8In;
     7888  UINT64    R9In;
     7889  UINT64    RaxOut;
     7890  UINT64    RcxOut;
     7891  UINT64    RdxOut;
     7892  UINT64    R8Out;
     7893  UINT64    R9Out;
     7894  UINT8     *CallPending;
     7895} SVSM_CALL_DATA;
     7896
     7897/**
     7898  Executes a VMGEXIT instruction (VMMCALL with a REP prefix) with arguments
     7899  and return code
     7900
     7901  Executes a VMGEXIT instruction placing the specified arguments in the
     7902  corresponding registers before invocation. Upon return an XCHG is done to
     7903  atomically clear and retrieve the SVSM call pending value. The returned RAX
     7904  register value becomes the function return code. This function is intended
     7905  for use with an SVSM. This function is only available on IA-32 and x64.
     7906
     7907  @param[in,out]  SvsmCallPending  Pointer to the location of the SVSM call data
     7908
     7909  @return                          Value of the RAX register on return
     7910
     7911**/
     7912UINT32
     7913EFIAPI
     7914AsmVmgExitSvsm (
     7915  IN OUT SVSM_CALL_DATA  *SvsmCallData
     7916  );
     7917
    75957918/**
    75967919  Patch the immediate operand of an IA32 or X64 instruction such that the byte,
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/CpuLib.h

    r101291 r105670  
    99
    1010Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
     11Copyright (c) 2024, Loongson Technology Corporation Limited. All rights reserved.<BR>
    1112SPDX-License-Identifier: BSD-2-Clause-Patent
    1213
     
    4243  );
    4344
    44 #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
     45#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) || defined (MDE_CPU_LOONGARCH64)
    4546
    4647/**
     48  Initialize the CPU floating point units.
     49
    4750  Initializes floating point units for requirement of UEFI specification.
    48   This function initializes floating-point control word to 0x027F (all exceptions
    49   masked,double-precision, round-to-nearest) and multimedia-extensions control word
    50   (if supported) to 0x1F80 (all exceptions masked, round-to-nearest, flush to zero
    51   for masked underflow).
     51  For IA32 and X64, this function initializes floating-point control word to 0x027F
     52  (all exceptions masked,double-precision, round-to-nearest) and multimedia-extensions
     53  control word (if supported) to 0x1F80 (all exceptions masked, round-to-nearest,
     54  flush to zero for masked underflow).
    5255**/
    5356VOID
     
    5659  VOID
    5760  );
     61
     62#endif
     63
     64#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
    5865
    5966/**
     
    9097#endif
    9198
     99#if defined (MDE_CPU_LOONGARCH64)
     100
     101/**
     102  Enable the CPU floating point units.
     103
     104  Enable the CPU floating point units.
     105**/
     106VOID
     107EFIAPI
     108EnableFloatingPointUnits (
     109  VOID
     110  );
     111
     112/**
     113  Disable the CPU floating point units.
     114
     115  Disable the CPU floating point units.
     116**/
     117VOID
     118EFIAPI
     119DisableFloatingPointUnits (
     120  VOID
     121  );
     122
    92123#endif
     124
     125#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/DebugLib.h

    r101291 r105670  
    4949#define DEBUG_VERBOSE   0x00400000       // Detailed debug messages that may
    5050                                         // significantly impact boot performance
    51 #define DEBUG_MANAGEABILITY  0x00800000  // Detailed debug and payload message of manageability
    52                                          // related modules, such Redfish, IPMI, MCTP and etc.
     51#define DEBUG_MANAGEABILITY  0x00800000  // Detailed debug and payload manageability messages
     52                                         // related to modules such as Redfish, IPMI, MCTP etc.
    5353#define DEBUG_ERROR  0x80000000          // Error
    5454
     
    376376      }                                              \
    377377    } while (FALSE)
    378 #define _DEBUG(Expression)  _DEBUG_PRINT Expression
    379 #else
    380 #define _DEBUG(Expression)  DebugPrint Expression
     378#define _DEBUGLIB_DEBUG(Expression)  _DEBUG_PRINT Expression
     379#else
     380#define _DEBUGLIB_DEBUG(Expression)  DebugPrint Expression
    381381#endif
    382382
     
    423423    do {                           \
    424424      if (DebugPrintEnabled ()) {  \
    425         _DEBUG (Expression);       \
     425        _DEBUGLIB_DEBUG (Expression);       \
    426426      }                            \
    427427    } while (FALSE)
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/FdtLib.h

    r101291 r105670  
    399399  );
    400400
     401/**
     402  Returns the name of a given node.
     403
     404  @param[in] Fdt            The pointer to FDT blob.
     405  @param[in] NodeOffse      Offset of node to check.
     406  @param[in] Length         The pointer to an integer variable (will be overwritten) or NULL.
     407
     408  @return The pointer to the node's name.
     409
     410**/
     411CONST CHAR8 *
     412EFIAPI
     413FdtGetName (
     414  IN VOID   *Fdt,
     415  IN INT32  NodeOffset,
     416  IN INT32  *Length
     417  );
     418
     419/**
     420  FdtNodeDepth() finds the depth of a given node.  The root node
     421  has depth 0, its immediate subnodes depth 1 and so forth.
     422
     423  @param[in] Fdt            The pointer to FDT blob.
     424  @param[in] NodeOffset     Offset of node to check.
     425
     426  @return Depth of the node at NodeOffset.
     427**/
     428INT32
     429EFIAPI
     430FdtNodeDepth (
     431  IN CONST VOID  *Fdt,
     432  IN INT32       NodeOffset
     433  );
     434
    401435#endif /* FDT_LIB_H_ */
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/PeiServicesTablePointerLib.h

    r99404 r105670  
    5353  For X64 CPUs, the PEI Services Table pointer is stored in the 8 bytes
    5454  immediately preceding the Interrupt Descriptor Table (IDT) in memory.
    55   For Itanium and ARM CPUs, a the PEI Services Table Pointer is stored in
    56   a dedicated CPU register.  This means that there is no memory storage
    57   associated with storing the PEI Services Table pointer, so no additional
    58   migration actions are required for Itanium or ARM CPUs.
     55  For Itanium, ARM and LoongArch CPUs, a the PEI Services Table Pointer
     56  is stored in a dedicated CPU register.  This means that there is no
     57  memory storage associated with storing the PEI Services Table pointer,
     58  so no additional migration actions are required for Itanium, ARM and
     59  LoongArch CPUs.
    5960
    6061**/
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/RngLib.h

    r99404 r105670  
    22  Provides random number generator services.
    33
     4Copyright (c) 2023, Arm Limited. All rights reserved.<BR>
    45Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
    56SPDX-License-Identifier: BSD-2-Clause-Patent
     
    7879  );
    7980
     81/**
     82  Get a GUID identifying the RNG algorithm implementation.
     83
     84  @param [out] RngGuid  If success, contains the GUID identifying
     85                        the RNG algorithm implementation.
     86
     87  @retval EFI_SUCCESS             Success.
     88  @retval EFI_UNSUPPORTED         Not supported.
     89  @retval EFI_INVALID_PARAMETER   Invalid parameter.
     90**/
     91EFI_STATUS
     92EFIAPI
     93GetRngGuid (
     94  GUID  *RngGuid
     95  );
     96
    8097#endif // __RNG_LIB_H__
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Library/UefiRuntimeLib.h

    r99404 r105670  
    6565  @retval  EFI_INVALID_PARAMETER  Time is NULL.
    6666  @retval  EFI_DEVICE_ERROR       The time could not be retrieved due to a hardware error.
     67  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     68                                  The platform should describe this runtime service as unsupported at runtime
     69                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    6770
    6871**/
     
    9497  @retval  EFI_INVALID_PARAMETER  A time field is out of range.
    9598  @retval  EFI_DEVICE_ERROR       The time could not be set due to a hardware error.
     99  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     100                                  The platform should describe this runtime service as unsupported at runtime
     101                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    96102
    97103**/
     
    120126  @retval  EFI_INVALID_PARAMETER  Time is NULL.
    121127  @retval  EFI_DEVICE_ERROR       The wakeup time could not be retrieved due to a hardware error.
    122   @retval  EFI_UNSUPPORTED        A wakeup timer is not supported on this platform.
     128  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     129                                  The platform should describe this runtime service as unsupported at runtime
     130                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    123131
    124132**/
     
    150158  @retval  EFI_INVALID_PARAMETER  A time field is out of range.
    151159  @retval  EFI_DEVICE_ERROR       The wakeup time could not be set due to a hardware error.
    152   @retval  EFI_UNSUPPORTED        A wakeup timer is not supported on this platform.
     160  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     161                                  The platform should describe this runtime service as unsupported at runtime
     162                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    153163
    154164**/
     
    189199  @retval  EFI_DEVICE_ERROR       The variable could not be retrieved due to a hardware error.
    190200  @retval  EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
     201  @retval  EFI_UNSUPPORTED        After ExitBootServices() has been called, this return code may be returned
     202                                  if no variable storage is supported. The platform should describe this
     203                                  runtime service as unsupported at runtime via an EFI_RT_PROPERTIES_TABLE
     204                                  configuration table.
    191205**/
    192206EFI_STATUS
     
    228242  @retval  EFI_INVALID_PARAMETER VendorGuid is NULL.
    229243  @retval  EFI_DEVICE_ERROR      The variable name could not be retrieved due to a hardware error.
     244  @retval  EFI_UNSUPPORTED       After ExitBootServices() has been called, this return code may be returned
     245                                 if no variable storage is supported. The platform should describe this
     246                                 runtime service as unsupported at runtime via an EFI_RT_PROPERTIES_TABLE
     247                                 configuration table.
    230248
    231249**/
     
    265283                                  out by the firmware.
    266284  @retval  EFI_NOT_FOUND          The variable trying to be updated or deleted was not found.
     285  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     286                                  The platform should describe this runtime service as unsupported at runtime
     287                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    267288
    268289**/
     
    291312  @retval  EFI_DEVICE_ERROR      The device is not functioning properly.
    292313  @retval  EFI_INVALID_PARAMETER HighCount is NULL.
     314  @retval  EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     315                                 The platform should describe this runtime service as unsupported at runtime
     316                                 via an EFI_RT_PROPERTIES_TABLE configuration table.
     317
    293318
    294319**/
     
    351376                                  the current memory map. This is normally fatal.
    352377  @retval  EFI_INVALID_PARAMETER  Address is NULL.
    353   @retval  EFI_INVALID_PARAMETER  *Address is NULL and DebugDispositio
     378  @retval  EFI_INVALID_PARAMETER  *Address is NULL and DebugDisposition does
     379                                  not have the EFI_OPTIONAL_PTR bit set.
     380  @retval  EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     381                                  The platform should describe this runtime service as unsupported at runtime
     382                                  via an EFI_RT_PROPERTIES_TABLE configuration table.
    354383
    355384**/
     
    415444  @retval EFI_NOT_FOUND         A virtual address was supplied for an address that is not found
    416445                                in the memory map.
     446  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     447                                The platform should describe this runtime service as unsupported at runtime
     448                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    417449**/
    418450EFI_STATUS
     
    479511  @retval EFI_UNSUPPORTED       The capsule type is not supported on this platform.
    480512  @retval EFI_OUT_OF_RESOURCES  There were insufficient resources to process the capsule.
     513  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     514                                The platform should describe this runtime service as unsupported at runtime
     515                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    481516
    482517**/
     
    521556                                MaximumCapsuleSize and ResetType are undefined.
    522557  @retval EFI_OUT_OF_RESOURCES  There were insufficient resources to process the query request.
     558  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     559                                The platform should describe this runtime service as unsupported at runtime
     560                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    523561
    524562**/
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Pi/PiDxeCis.h

    r99404 r105670  
    5757  ///
    5858  EfiGcdMemoryTypeMoreReliable,
    59   // ///
    60   // /// A memory region that describes system memory that has not been accepted
    61   // /// by a corresponding call to the underlying isolation architecture.
    62   // ///
    63   // /// Please be noted:
    64   // /// EfiGcdMemoryTypeUnaccepted is defined in PrePiDxeCis.h because it has not been
    65   // /// defined in PI spec.
    66   // EfiGcdMemoryTypeUnaccepted,
     59  ///
     60  /// A memory region that describes system memory that has not been accepted
     61  /// by a corresponding call to the underlying isolation architecture.
     62  ///
     63  EfiGcdMemoryTypeUnaccepted,
    6764  EfiGcdMemoryTypeMaximum = 7
    6865} EFI_GCD_MEMORY_TYPE;
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Pi/PiHob.h

    r99404 r105670  
    233233#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
    234234#define EFI_RESOURCE_IO_RESERVED            0x00000006
    235 //
    236 // BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is defined for unaccepted memory.
    237 // But this defitinion has not been officially in the PI spec. Base
    238 // on the code-first we define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED at
    239 // MdeModulePkg/Include/Pi/PrePiHob.h and update EFI_RESOURCE_MAX_MEMORY_TYPE
    240 // to 8. After BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is officially published
    241 // in PI spec, we will re-visit here.
    242 //
    243 // #define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED      0x00000007
    244 #define EFI_RESOURCE_MAX_MEMORY_TYPE  0x00000008
     235#define EFI_RESOURCE_MEMORY_UNACCEPTED      0x00000007
     236#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000008
    245237
    246238///
     
    298290#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE  0x00080000
    299291
     292#define EFI_RESOURCE_ATTRIBUTE_ENCRYPTED        0x04000000
     293#define EFI_RESOURCE_ATTRIBUTE_SPECIAL_PURPOSE  0x08000000
    300294//
    301295// Physical memory relative reliability attribute. This
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Ppi/DelayedDispatch.h

    r99404 r105670  
    5050  @param Function       Function to call back
    5151  @param Context        Context data
     52  @param UniqueId       UniqueId
    5253  @param Delay          Delay interval
    5354
     
    6364  IN  EFI_DELAYED_DISPATCH_FUNCTION  Function,
    6465  IN  UINT64                     Context,
     66  IN  EFI_GUID                   *UniqueId  OPTIONAL,
    6567  OUT UINT32                     Delay
     68  );
     69
     70/**
     71Function invoked by a PEIM to wait until all specified UniqueId events have been dispatched. The other events
     72will continue to dispatch while this process is being paused
     73
     74  @param This           Pointer to the EFI_DELAYED_DISPATCH_PPI instance
     75  @param UniqueId       Delayed dispatch request ID the caller will wait on
     76
     77  @retval EFI_SUCCESS               Function successfully invoked
     78  @retval EFI_INVALID_PARAMETER     One of the Arguments is not supported
     79
     80**/
     81
     82typedef
     83EFI_STATUS
     84(EFIAPI *EFI_DELAYED_DISPATCH_WAIT_ON_EVENT)(
     85  IN EFI_DELAYED_DISPATCH_PPI  *This,
     86  IN EFI_GUID                  UniqueId
    6687  );
    6788
     
    7394///
    7495struct _EFI_DELAYED_DISPATCH_PPI {
    75   EFI_DELAYED_DISPATCH_REGISTER    Register;
     96  EFI_DELAYED_DISPATCH_REGISTER         Register;
     97  EFI_DELAYED_DISPATCH_WAIT_ON_EVENT    WaitOnEvent;
    7698};
    7799
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/AdapterInformation.h

    r99404 r105670  
    141141  This function returns information of type InformationType from the adapter.
    142142  If an adapter does not support the requested informational type, then
    143   EFI_UNSUPPORTED is returned.
     143  EFI_UNSUPPORTED is returned. If an adapter does not contain Information for
     144  the requested InformationType, it fills InformationBlockSize with 0 and
     145  returns EFI_NOT_FOUND.
    144146
    145147  @param[in]  This                   A pointer to the EFI_ADAPTER_INFORMATION_PROTOCOL instance.
     
    151153  @retval EFI_SUCCESS                The InformationType information was retrieved.
    152154  @retval EFI_UNSUPPORTED            The InformationType is not known.
     155  @retval EFI_NOT_FOUND              Information is not available for the requested information type.
    153156  @retval EFI_DEVICE_ERROR           The device reported an error.
    154157  @retval EFI_OUT_OF_RESOURCES       The request could not be completed due to a lack of resources.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/DebugSupport.h

    r101291 r105670  
    684684// LoongArch processor exception types.
    685685//
     686// The exception types is located in the CSR ESTAT
     687// register offset 16 bits, width 6 bits.
     688//
     689// If you want to register an exception hook, you can
     690// shfit the number left by 16 bits, and the exception
     691// handler will know the types.
     692//
     693// For example:
     694// mCpu->CpuRegisterInterruptHandler (
     695//         mCpu,
     696//         (EXCEPT_LOONGARCH_PPI << CSR_ESTAT_EXC_SHIFT),
     697//         PpiExceptionHandler
     698//         );
     699//
    686700#define EXCEPT_LOONGARCH_INT   0
    687701#define EXCEPT_LOONGARCH_PIL   1
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/DevicePath.h

    r99404 r105670  
    837837  UINT64                      NamespaceUuid;
    838838} NVME_NAMESPACE_DEVICE_PATH;
     839
     840///
     841/// NVMe over Fabric (NVMe-oF) Namespace Device Path SubType.
     842///
     843#define MSG_NVME_OF_NAMESPACE_DP  0x22
     844typedef struct {
     845  EFI_DEVICE_PATH_PROTOCOL    Header;
     846  ///
     847  /// Namespace Identifier Type (NIDT)
     848  ///
     849  UINT8                       NamespaceIdType;
     850  ///
     851  /// Namespace Identifier (NID)
     852  ///
     853  UINT8                       NamespaceId[16];
     854  ///
     855  /// Unique identifier of an NVM subsystem
     856  ///
     857  CHAR8                       SubsystemNqn[];
     858} NVME_OF_NAMESPACE_DEVICE_PATH;
    839859
    840860///
     
    12881308  SASEX_DEVICE_PATH                          SasEx;
    12891309  NVME_NAMESPACE_DEVICE_PATH                 NvmeNamespace;
     1310  NVME_OF_NAMESPACE_DEVICE_PATH              NvmeOfNamespace;
    12901311  DNS_DEVICE_PATH                            Dns;
    12911312  URI_DEVICE_PATH                            Uri;
     
    13441365  SASEX_DEVICE_PATH                          *SasEx;
    13451366  NVME_NAMESPACE_DEVICE_PATH                 *NvmeNamespace;
     1367  NVME_OF_NAMESPACE_DEVICE_PATH              *NvmeOfNamespace;
    13461368  DNS_DEVICE_PATH                            *Dns;
    13471369  URI_DEVICE_PATH                            *Uri;
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/DriverHealth.h

    r99404 r105670  
    138138                              EfiDriverHealthStatusConfigurationRequired.
    139139
    140   @retval EFI_SUCCESS           ControllerHandle is NULL, and all the controllers
    141                                 managed by this driver specified by This have a health
    142                                 status of EfiDriverHealthStatusHealthy with no warning
    143                                 messages to be returned.  The ChildHandle, HealthStatus,
    144                                 MessageList, and FormList parameters are ignored.
    145 
    146   @retval EFI_DEVICE_ERROR      ControllerHandle is NULL, and one or more of the
    147                                 controllers managed by this driver specified by This
    148                                 do not have a health status of EfiDriverHealthStatusHealthy.
    149                                 The ChildHandle, HealthStatus, MessageList, and
    150                                 FormList parameters are ignored.
    151 
    152   @retval EFI_DEVICE_ERROR      ControllerHandle is NULL, and one or more of the
    153                                 controllers managed by this driver specified by This
    154                                 have one or more warning and/or error messages.
    155                                 The ChildHandle, HealthStatus, MessageList, and
    156                                 FormList parameters are ignored.
    157 
    158   @retval EFI_SUCCESS           ControllerHandle is not NULL and the health status
    159                                 of the controller specified by ControllerHandle and
    160                                 ChildHandle was returned in HealthStatus.  A list
    161                                 of warning and error messages may be optionally
    162                                 returned in MessageList, and a list of HII Forms
    163                                 may be optionally returned in FormList.
     140  @retval EFI_SUCCESS           The health status of the controller specified by
     141                                ControllerHandle and ChildHandle was returned in HealthStatus.
     142                                A list of warning and error messages may be optionally
     143                                returned in MessageList, and an HII Form may be optionally
     144                                specified by FormHiiHandle.
    164145
    165146  @retval EFI_UNSUPPORTED       ControllerHandle is not NULL, and the controller
    166147                                specified by ControllerHandle and ChildHandle is not
    167148                                currently being managed by the driver specified by This.
     149
     150  @retval EFI_UNSUPPORTED       ControllerHandle is NULL and there are no devices being
     151                                managed by the driver.
    168152
    169153  @retval EFI_INVALID_PARAMETER HealthStatus is NULL.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/FirmwareManagement.h

    r99404 r105670  
    3131/// Dependency Expression Opcode
    3232///
    33 #define EFI_FMP_DEP_PUSH_GUID     0x00
    34 #define EFI_FMP_DEP_PUSH_VERSION  0x01
    35 #define EFI_FMP_DEP_VERSION_STR   0x02
    36 #define EFI_FMP_DEP_AND           0x03
    37 #define EFI_FMP_DEP_OR            0x04
    38 #define EFI_FMP_DEP_NOT           0x05
    39 #define EFI_FMP_DEP_TRUE          0x06
    40 #define EFI_FMP_DEP_FALSE         0x07
    41 #define EFI_FMP_DEP_EQ            0x08
    42 #define EFI_FMP_DEP_GT            0x09
    43 #define EFI_FMP_DEP_GTE           0x0A
    44 #define EFI_FMP_DEP_LT            0x0B
    45 #define EFI_FMP_DEP_LTE           0x0C
    46 #define EFI_FMP_DEP_END           0x0D
     33#define EFI_FMP_DEP_PUSH_GUID       0x00
     34#define EFI_FMP_DEP_PUSH_VERSION    0x01
     35#define EFI_FMP_DEP_VERSION_STR     0x02
     36#define EFI_FMP_DEP_AND             0x03
     37#define EFI_FMP_DEP_OR              0x04
     38#define EFI_FMP_DEP_NOT             0x05
     39#define EFI_FMP_DEP_TRUE            0x06
     40#define EFI_FMP_DEP_FALSE           0x07
     41#define EFI_FMP_DEP_EQ              0x08
     42#define EFI_FMP_DEP_GT              0x09
     43#define EFI_FMP_DEP_GTE             0x0A
     44#define EFI_FMP_DEP_LT              0x0B
     45#define EFI_FMP_DEP_LTE             0x0C
     46#define EFI_FMP_DEP_END             0x0D
     47#define EFI_FMP_DEP_DECLARE_LENGTH  0x0E
    4748
    4849///
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/FormBrowser2.h

    r99404 r105670  
    5656#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD       7
    5757#define EFI_BROWSER_ACTION_REQUEST_RECONNECT          8
     58#define EFI_BROWSER_ACTION_REQUEST_QUESTION_APPLY     9
    5859
    5960/**
     
    139140                                awaiting distribution.
    140141
    141   @retval EFI_OUT_OF_RESOURCES  The ResultsDataSize specified
     142  @retval EFI_BUFFER_TOO_SMALL  The ResultsDataSize specified
    142143                                was too small to contain the
    143144                                results data.
     145
     146  @retval EFI_UNSUPPORTED       Uncommitted browser state is not available
     147                                at the current stage of execution.
    144148
    145149**/
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/HiiConfigAccess.h

    r99404 r105670  
    103103
    104104  @retval EFI_INVALID_PARAMETER   Unknown name. Progress points
    105                                   to the & before the name in
     105                                  to the "&" before the name in
    106106                                  question.
     107
     108  @retval EFI_INVALID_PARAMETER   If Results or Progress is NULL.
     109
     110  @retval EFI_ACCESS_DENIED       The action violated a system policy.
     111
     112  @retval EFI_DEVICE_ERROR        Failed to extract the current configuration
     113                                  for one or more named elements.
    107114
    108115**/
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/NvdimmLabel.h

    r99404 r105670  
    109109/// When set, the complete label set is local to a single NVDIMM Label Storage Area.
    110110/// When clear, the complete label set is contained on multiple NVDIMM Label Storage Areas.
     111/// If NLabel is 1 then setting this flag is optional and it is implied that the
     112/// EFI_NVDIMM_LABEL_FLAGS_LOCAL flag is set as the complete label set is local to a single NVDIMM Label Storage Area.
    111113///
    112114#define EFI_NVDIMM_LABEL_FLAGS_LOCAL  0x00000002
     
    123125#define EFI_NVDIMM_LABEL_FLAGS_UPDATING  0x00000008
    124126
     127///
     128/// When set, the SPALocationCookie in the namespace label is valid and should match the
     129/// current value in the NFIT SPA Range Structure.
     130///
     131#define EFI_NVDIMM_LABEL_FLAGS_SPACOOKIE_BOUND  0x00000010
     132
    125133typedef struct {
    126134  ///
     
    198206
    199207  ///
     208  /// When creating the label, this value is set to the value from the NFIT SPA Range Structure if the
     209  /// SPALocationCookie flag (bit 2) is set. If EFI_NVDIMM_LABEL_FLAGS_SPACOOKIE_BOUND is set, the SPALocationCookie
     210  /// value stored in the namespace label should match the current value in the NFIT SPA Range Structure.
     211  /// Otherwise, the data may not be read correctly.
     212  ///
     213  UINT64      SPALocationCookie;
     214
     215  ///
    200216  /// Shall be 0.
    201217  ///
    202   UINT8       Reserved1[88];
     218  UINT8       Reserved1[80];
    203219
    204220  ///
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/RestEx.h

    r99404 r105670  
    132132  request to the REST resource identified by RequestMessage.Request.Url. The
    133133  ResponseMessage is the returned HTTP response for that request, including any HTTP
    134   status.
     134  status. It's caller's responsibility to free this ResponseMessage using FreePool().
     135  RestConfigFreeHttpMessage() in RedfishLib is an example to release ResponseMessage structure.
    135136
    136137  @param[in]  This                Pointer to EFI_REST_EX_PROTOCOL instance for a particular
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/Rng.h

    r99404 r105670  
    6767  { \
    6868    0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 } \
     69  }
     70///
     71/// The Arm Architecture states the RNDR that the DRBG algorithm should be compliant
     72/// with NIST SP800-90A, while not mandating a particular algorithm, so as to be
     73/// inclusive of different geographies.
     74///
     75#define EFI_RNG_ALGORITHM_ARM_RNDR \
     76  { \
     77    0x43d2fde3, 0x9d4e, 0x4d79,  {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41} \
    6978  }
    7079
     
    147156extern EFI_GUID  gEfiRngAlgorithmX931AesGuid;
    148157extern EFI_GUID  gEfiRngAlgorithmRaw;
     158extern EFI_GUID  gEfiRngAlgorithmArmRndr;
    149159
    150160#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/SimpleTextIn.h

    r99404 r105670  
    101101  @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
    102102                           hardware errors.
     103  @retval EFI_UNSUPPORTED  The device does not support the ability to read keystroke data.
    103104
    104105**/
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/SimpleTextInEx.h

    r99404 r105670  
    187187  @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
    188188                           hardware errors.
     189  @retval EFI_UNSUPPORTED  The device does not support the ability to read keystroke data.
    189190
    190191
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/SpiConfiguration.h

    r99404 r105670  
    33
    44  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
     5  Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
    56  SPDX-License-Identifier: BSD-2-Clause-Patent
    67
    78  @par Revision Reference:
    8     This Protocol was introduced in UEFI PI Specification 1.6.
     9    This Protocol was introduced in UEFI PI Specification 1.8 A.
    910
    1011**/
     
    170171
    171172///
     173/// Definitions of SPI Part Attributes.
     174///
     175#define SPI_PART_SUPPORTS_2_BIT_DATA_BUS_WIDTH  BIT0
     176#define SPI_PART_SUPPORTS_4_BIT_DATA_BUS_WIDTH  BIT1
     177#define SPI_PART_SUPPORTS_8_BIT_DATA_BUS_WIDTH  BIT2
     178
     179///
    172180/// The EFI_SPI_PERIPHERAL data structure describes how a specific block of
    173181/// logic which is connected to the SPI bus. This data structure also selects
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/SpiHc.h

    r99404 r105670  
    33
    44  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
     5  Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
    56  SPDX-License-Identifier: BSD-2-Clause-Patent
    67
    78  @par Revision Reference:
    8     This Protocol was introduced in UEFI PI Specification 1.6.
     9    This Protocol was introduced in UEFI PI Specification 1.8 A.
    910
    1011**/
     
    122123  );
    123124
     125///
     126/// Definitions of SPI Host Controller Attributes.
     127///
     128#define HC_SUPPORTS_WRITE_ONLY_OPERATIONS       BIT0
     129#define HC_SUPPORTS_READ_ONLY_OPERATIONS        BIT1
     130#define HC_SUPPORTS_WRITE_THEN_READ_OPERATIONS  BIT2
     131#define HC_TX_FRAME_IN_MOST_SIGNIFICANT_BITS    BIT3
     132#define HC_RX_FRAME_IN_MOST_SIGNIFICANT_BITS    BIT4
     133#define HC_SUPPORTS_2_BIT_DATA_BUS_WIDTH        BIT5
     134#define HC_SUPPORTS_4_BIT_DATA_BUS_WIDTH        BIT6
     135#define HC_SUPPORTS_8_BIT_DATA_BUS_WIDTH        BIT7
     136#define HC_TRANSFER_SIZE_INCLUDES_OPCODE        BIT8
     137#define HC_TRANSFER_SIZE_INCLUDES_ADDRESS       BIT9
    124138///
    125139/// Support a SPI data transaction between the SPI controller and a SPI chip.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/SpiIo.h

    r99404 r105670  
    33
    44  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
     5  Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
    56  SPDX-License-Identifier: BSD-2-Clause-Patent
    67
    78  @par Revision Reference:
    8     This Protocol was introduced in UEFI PI Specification 1.6.
     9    This Protocol was introduced in UEFI PI Specification 1.8 A.
    910
    1011**/
     
    225226
    226227///
     228/// Definitions of SPI I/O Attributes.
     229///
     230#define SPI_IO_SUPPORTS_2_BIT_DATA_BUS_WIDTH   BIT0
     231#define SPI_IO_SUPPORTS_4_BIT_DATA_BUS_WIDTH   BIT1
     232#define SPI_IO_SUPPORTS_8_BIT_DATA_BUS_WIDTH   BIT2
     233#define SPI_IO_TRANSFER_SIZE_INCLUDES_OPCODE   BIT3
     234#define SPI_IO_TRANSFER_SIZE_INCLUDES_ADDRESS  BIT4
     235
     236///
    227237/// Support managed SPI data transactions between the SPI controller and a SPI
    228238/// chip.
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/StorageSecurityCommand.h

    r99404 r105670  
    6060
    6161  @param  This                         Indicates a pointer to the calling context.
    62   @param  MediaId                      ID of the medium to receive data from.
     62  @param  MediaId                      ID of the medium to receive data from. If there is no
     63                                       block IO protocol supported by the physical device, the
     64                                       value of MediaId is undefined.
    6365  @param  Timeout                      The timeout, in 100ns units, to use for the execution
    6466                                       of the security protocol command. A Timeout value of 0
     
    139141
    140142  @param  This                         Indicates a pointer to the calling context.
    141   @param  MediaId                      ID of the medium to receive data from.
     143  @param  MediaId                      ID of the medium to receive data from. If there is no
     144                                       block IO protocol supported by the physical device, the
     145                                       value of MediaId is undefined.
    142146  @param  Timeout                      The timeout, in 100ns units, to use for the execution
    143147                                       of the security protocol command. A Timeout value of 0
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/Tcp6.h

    r99404 r105670  
    193193  ///
    194194  /// Set it to TRUE to enable TCP timestamps option as defined in
    195   /// RFC1323. Set to FALSE to disable it.
     195  /// RFC7323. Set to FALSE to disable it.
    196196  ///
    197197  BOOLEAN    EnableTimeStamp;
    198198  ///
    199199  /// Set it to TRUE to enable TCP window scale option as defined in
    200   /// RFC1323. Set it to FALSE to disable it.
     200  /// RFC7323. Set it to FALSE to disable it.
    201201  ///
    202202  BOOLEAN    EnableWindowScaling;
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Register/Amd/Cpuid.h

    r99404 r105670  
    77  not provided for that register.
    88
    9   Copyright (c) 2017, Advanced Micro Devices. All rights reserved.<BR>
     9  Copyright (c) 2017 - 2024, Advanced Micro Devices. All rights reserved.<BR>
    1010
    1111  SPDX-License-Identifier: BSD-2-Clause-Patent
     
    4444
    4545/**
     46  CPUID Extended Topology Enumeration
     47
     48  @note
     49  Reference: AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions,
     50             Revision 3.35 Appendix E,
     51  E.4.24 Function 8000_0026—Extended CPU Topology:
     52    CPUID Fn8000_0026 reports extended topology information for logical processors, including
     53    asymmetric and heterogenous topology descriptions. Individual logical processors may report
     54    different values in systems with asynchronous and heterogeneous topologies.
     55    The topology level is selected by the value passed to the instruction in ECX. To discover the topology
     56    of a system, software should execute CPUID Fn8000_0026 with increasing ECX values, starting with
     57    a value of zero, until the returned hierarchy level type (CPUID Fn8000_0026_ECX[LevelType]) is
     58    equal to zero. It is not guaranteed that all topology level types are present in the system
     59
     60  @param   EAX  AMD_CPUID_EXTENDED_TOPOLOGY   (0x80000026)
     61  @param   ECX  Level number
     62
     63**/
     64#define AMD_CPUID_EXTENDED_TOPOLOGY  0x80000026
     65
     66/**
    4667  CPUID Extended Processor Signature and Features
    4768
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Register/Amd/Fam17Msr.h

    r99404 r105670  
    77  provided for that MSR.
    88
    9   Copyright (c) 2017, Advanced Micro Devices. All rights reserved.<BR>
     9  Copyright (c) 2017 - 2024, Advanced Micro Devices. All rights reserved.<BR>
    1010  SPDX-License-Identifier: BSD-2-Clause-Patent
    1111
     
    7272  } SnpPageStateChangeResponse;
    7373
     74  struct {
     75    UINT64    Function  : 12;
     76    UINT64    Reserved1 : 20;
     77    UINT64    Vmpl      : 8;
     78    UINT64    Reserved2 : 56;
     79  } SnpVmplRequest;
     80
     81  struct {
     82    UINT32    Function : 12;
     83    UINT32    Reserved : 20;
     84    UINT32    ErrorCode;
     85  } SnpVmplResponse;
     86
    7487  VOID      *Ghcb;
    7588
    7689  UINT64    GhcbPhysicalAddress;
     90
     91  UINT64    Uint64;
    7792} MSR_SEV_ES_GHCB_REGISTER;
    7893
     
    85100#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_REQUEST   20
    86101#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_RESPONSE  21
     102#define GHCB_INFO_SNP_VMPL_REQUEST                22
     103#define GHCB_INFO_SNP_VMPL_RESPONSE               23
    87104#define GHCB_HYPERVISOR_FEATURES_REQUEST          128
    88105#define GHCB_HYPERVISOR_FEATURES_RESPONSE         129
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Register/Amd/Ghcb.h

    r99404 r105670  
    55  using the GHCB protocol.
    66
    7   Copyright (C) 2020, Advanced Micro Devices, Inc. All rights reserved.<BR>
     7  Copyright (C) 2020 - 2024, Advanced Micro Devices, Inc. All rights reserved.<BR>
    88  SPDX-License-Identifier: BSD-2-Clause-Patent
    99
     
    5757#define SVM_EXIT_SNP_PAGE_STATE_CHANGE  0x80000010ULL
    5858#define SVM_EXIT_SNP_AP_CREATION        0x80000013ULL
     59#define SVM_EXIT_GET_APIC_IDS           0x80000017ULL
    5960#define SVM_EXIT_HYPERVISOR_FEATURES    0x8000FFFDULL
    6061#define SVM_EXIT_UNSUPPORTED            0x8000FFFFULL
     
    171172#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION        (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2)
    172173#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER  (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3)
     174#define GHCB_HV_FEATURES_APIC_ID_LIST                    BIT4
    173175
    174176//
     
    196198} SNP_PAGE_STATE_HEADER;
    197199
    198 #define SNP_PAGE_STATE_MAX_ENTRY  253
    199 
    200200typedef struct {
    201201  SNP_PAGE_STATE_HEADER    Header;
    202   SNP_PAGE_STATE_ENTRY     Entry[SNP_PAGE_STATE_MAX_ENTRY];
     202  SNP_PAGE_STATE_ENTRY     Entry[];
    203203} SNP_PAGE_STATE_CHANGE_INFO;
     204
     205#define SNP_PAGE_STATE_MAX_ENTRY  \
     206  ((sizeof (((GHCB *)0)->SharedBuffer) - sizeof (SNP_PAGE_STATE_HEADER)) / sizeof (SNP_PAGE_STATE_ENTRY))
     207
     208//
     209// Get APIC IDs
     210//
     211typedef struct {
     212  UINT32    NumEntries;
     213  UINT32    ApicIds[];
     214} GHCB_APIC_IDS;
    204215
    205216//
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Register/Amd/Msr.h

    r85718 r105670  
    77  provided for that MSR.
    88
    9   Copyright (c) 2017 - 2019, Advanced Micro Devices. All rights reserved.<BR>
     9  Copyright (c) 2017 - 2024, Advanced Micro Devices. All rights reserved.<BR>
    1010  SPDX-License-Identifier: BSD-2-Clause-Patent
    1111
     
    2020#include <Register/Intel/ArchitecturalMsr.h>
    2121#include <Register/Amd/Fam17Msr.h>
     22#include <Register/Amd/SvsmMsr.h>
    2223
    2324#endif
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Register/RiscV64/RiscVEncoding.h

    r101291 r105670  
    9797#define CSR_SATP  0x180
    9898
     99/* Sstc extension */
     100#define CSR_STIMECMP  0x14D
     101
    99102/* Trap/Exception Causes */
    100103#define CAUSE_MISALIGNED_FETCH          0x0
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h

    r99404 r105670  
    16971697  EfiKeyPrint,
    16981698  EfiKeySLck,
    1699   EfiKeyPause
     1699  EfiKeyPause,
     1700  EfiKeyIntl0,
     1701  EfiKeyIntl1,
     1702  EfiKeyIntl2,
     1703  EfiKeyIntl3,
     1704  EfiKeyIntl4,
     1705  EfiKeyIntl5,
     1706  EfiKeyIntl6,
     1707  EfiKeyIntl7,
     1708  EfiKeyIntl8,
     1709  EfiKeyIntl9
    17001710} EFI_KEY;
    17011711
  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Uefi/UefiSpec.h

    r99404 r105670  
    110110//
    111111#define EFI_MEMORY_RUNTIME  0x8000000000000000ULL
     112
     113//
     114// If this flag is set, the memory region is
     115// described with additional ISA-specific memory attributes
     116// as specified in EFI_MEMORY_ISA_MASK.
     117//
     118#define EFI_MEMORY_ISA_VALID  0x4000000000000000ULL
     119
     120//
     121// Defines the bits reserved for describing optional ISA-specific cacheability
     122// attributes that are not covered by the standard UEFI Memory Attributes cacheability
     123// bits (EFI_MEMORY_UC, EFI_MEMORY_WC, EFI_MEMORY_WT, EFI_MEMORY_WB and EFI_MEMORY_UCE).
     124// See Calling Conventions for further ISA-specific enumeration of these bits.
     125//
     126#define EFI_MEMORY_ISA_MASK  0x0FFFF00000000000ULL
    112127
    113128//
     
    306321  @retval EFI_NOT_FOUND         A virtual address was supplied for an address that is not found
    307322                                in the memory map.
     323  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     324                                The platform should describe this runtime service as unsupported at runtime
     325                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    308326
    309327**/
     
    396414
    397415  @retval EFI_SUCCESS           The pointer pointed to by Address was modified.
    398   @retval EFI_INVALID_PARAMETER 1) Address is NULL.
    399                                 2) *Address is NULL and DebugDisposition does
    400                                 not have the EFI_OPTIONAL_PTR bit set.
    401416  @retval EFI_NOT_FOUND         The pointer pointed to by Address was not found to be part
    402417                                of the current memory map. This is normally fatal.
     418  @retval EFI_INVALID_PARAMETER Address is NULL.
     419  @retval EFI_INVALID_PARAMETER *Address is NULL and DebugDisposition does
     420                                not have the EFI_OPTIONAL_PTR bit set.
     421  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     422                                The platform should describe this runtime service as unsupported at runtime
     423                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    403424
    404425**/
     
    665686  @retval EFI_DEVICE_ERROR       The variable could not be retrieved due to a hardware error.
    666687  @retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
     688  @retval EFI_UNSUPPORTED        After ExitBootServices() has been called, this return code may be returned
     689                                 if no variable storage is supported. The platform should describe this
     690                                 runtime service as unsupported at runtime via an EFI_RT_PROPERTIES_TABLE
     691                                 configuration table.
    667692
    668693**/
     
    701726                                the input VariableName buffer.
    702727  @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.
     728  @retval EFI_UNSUPPORTED       After ExitBootServices() has been called, this return code may be returned
     729                                if no variable storage is supported. The platform should describe this
     730                                runtime service as unsupported at runtime via an EFI_RT_PROPERTIES_TABLE
     731                                configuration table.
    703732
    704733**/
     
    743772
    744773  @retval EFI_NOT_FOUND          The variable trying to be updated or deleted was not found.
     774  @retval EFI_UNSUPPORTED        This call is not supported by this platform at the time the call is made.
     775                                 The platform should describe this runtime service as unsupported at runtime
     776                                 via an EFI_RT_PROPERTIES_TABLE configuration table.
    745777
    746778**/
     
    795827  @retval EFI_INVALID_PARAMETER Time is NULL.
    796828  @retval EFI_DEVICE_ERROR      The time could not be retrieved due to hardware error.
     829  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     830                                The platform should describe this runtime service as unsupported at runtime
     831                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    797832
    798833**/
     
    812847  @retval EFI_INVALID_PARAMETER A time field is out of range.
    813848  @retval EFI_DEVICE_ERROR      The time could not be set due due to hardware error.
     849  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     850                                The platform should describe this runtime service as unsupported at runtime
     851                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    814852
    815853**/
     
    832870  @retval EFI_INVALID_PARAMETER Time is NULL.
    833871  @retval EFI_DEVICE_ERROR      The wakeup time could not be retrieved due to a hardware error.
    834   @retval EFI_UNSUPPORTED       A wakeup timer is not supported on this platform.
     872  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     873                                The platform should describe this runtime service as unsupported at runtime
     874                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    835875
    836876**/
     
    854894  @retval EFI_INVALID_PARAMETER A time field is out of range.
    855895  @retval EFI_DEVICE_ERROR      The wakeup time could not be set due to a hardware error.
    856   @retval EFI_UNSUPPORTED       A wakeup timer is not supported on this platform.
     896  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     897                                The platform should describe this runtime service as unsupported at runtime
     898                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    857899
    858900**/
     
    899941  IN  BOOLEAN                      BootPolicy,
    900942  IN  EFI_HANDLE                   ParentImageHandle,
    901   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath,
     943  IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath   OPTIONAL,
    902944  IN  VOID                         *SourceBuffer OPTIONAL,
    903945  IN  UINTN                        SourceSize,
     
    10761118  @retval EFI_INVALID_PARAMETER HighCount is NULL.
    10771119  @retval EFI_DEVICE_ERROR      The device is not functioning properly.
     1120  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     1121                                The platform should describe this runtime service as unsupported at runtime
     1122                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    10781123
    10791124**/
     
    16491694  UINT32      Flags;
    16501695  ///
    1651   /// Size in bytes of the capsule.
     1696  /// Size in bytes of the capsule (including capsule header).
    16521697  ///
    16531698  UINT32      CapsuleImageSize;
     
    17021747  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has not been previously called then this error indicates
    17031748                                the capsule is compatible with this platform but there are insufficient resources to process.
     1749  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     1750                                The platform should describe this runtime service as unsupported at runtime
     1751                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    17041752
    17051753**/
     
    17331781  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has not been previously called then this error indicates
    17341782                                the capsule is compatible with this platform but there are insufficient resources to process.
     1783  @retval EFI_UNSUPPORTED       This call is not supported by this platform at the time the call is made.
     1784                                The platform should describe this runtime service as unsupported at runtime
     1785                                via an EFI_RT_PROPERTIES_TABLE configuration table.
    17351786
    17361787**/
     
    19922043  ///
    19932044  /// The handle for the active console input device. This handle must support
    1994   /// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.
     2045  /// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL. If
     2046  /// there is no active console, these protocols must still be present.
    19952047  ///
    19962048  EFI_HANDLE                         ConsoleInHandle;
     
    20012053  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *ConIn;
    20022054  ///
    2003   /// The handle for the active console output device.
     2055  /// The handle for the active console output device. This handle must support the
     2056  /// EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL. If there is no active console, these protocols
     2057  /// must still be present.
    20042058  ///
    20052059  EFI_HANDLE                         ConsoleOutHandle;
     
    20112065  ///
    20122066  /// The handle for the active standard error console device.
    2013   /// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
     2067  /// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL. If there
     2068  /// is no active console, this protocol must still be present.
    20142069  ///
    20152070  EFI_HANDLE                         StandardErrorHandle;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette