summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* OvmfPkg: Update ubuntu VM image to 24.04pipeline_gen_updateMichael Kubacki10 days1-1/+1
| | | | | | Update to the latest 24.04 image from 22.04. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* EmulatorPkg: Update ubuntu VM image to 24.04Michael Kubacki10 days1-1/+1
| | | | | | Update to the latest 24.04 image from 22.04. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* ArmVirtPkg: Update ubuntu VM image to 24.04Michael Kubacki10 days1-1/+1
| | | | | | Update to the latest 24.04 image from 22.04. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* .azurepipelines: Update ubuntu VM image to 24.04Michael Kubacki10 days1-1/+1
| | | | | | Update to the latest 24.04 image from 22.04. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* .pytool: Update pipeline filename instructionsMichael Kubacki10 days1-1/+1
| | | | | | | Updates the readme file for the current naming convention used for pipeline files. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* OvmfPkg: Update pipeline filenamesMichael Kubacki10 days2-2/+2
| | | | | | | | | | | | | | Details about a particular pipeline change over time - such as the specific Linux distro or toolchain version. At the same time, the pipeline files are directly referenced in Azure Pipelines to run the pipeline and few users have access to change those details. To make the files less likely to refer to outdated information over time and reduce the need for an Azure Pipeline administrator to get involved, the files are updated to drop specific details apart from the host OS environment used in the pipeline. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* EmulatorPkg: Update pipeline filenamesMichael Kubacki10 days2-2/+2
| | | | | | | | | | | | | | Details about a particular pipeline change over time - such as the specific Linux distro or toolchain version. At the same time, the pipeline files are directly referenced in Azure Pipelines to run the pipeline and few users have access to change those details. To make the files less likely to refer to outdated information over time and reduce the need for an Azure Pipeline administrator to get involved, the files are updated to drop specific details apart from the host OS environment used in the pipeline. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* ArmVirtPkg: Rename Linux pipeline fileMichael Kubacki10 days1-1/+1
| | | | | | | | | | | | | | Details about a particular pipeline change over time - such as the specific Linux distro or toolchain version. At the same time, the pipeline files are directly referenced in Azure Pipelines to run the pipeline and few users have access to change those details. To make the files less likely to refer to outdated information over time and reduce the need for an Azure Pipeline administrator to get involved, the files are updated to drop specific details apart from the host OS environment used in the pipeline. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* .azurepipelines: Update pipeline filenamesMichael Kubacki10 days3-3/+6
| | | | | | | | | | | | | | Details about a particular pipeline change over time - such as the specific Linux distro or toolchain version. At the same time, the pipeline files are directly referenced in Azure Pipelines to run the pipeline and few users have access to change those details. To make the files less likely to refer to outdated information over time and reduce the need for an Azure Pipeline administrator to get involved, the files are updated to drop specific details apart from the host OS environment used in the pipeline. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
* ArmPkg,ArmVirtPkg,UefiPayloadPkg: make PcdVFPEnabled ARM-onlyLeif Lindholm10 days8-26/+7
| | | | | | | | AArch64 no longer uses PcdVFPEnabled, so make the definition ARM-specific and stop explicitly setting it for AArch64 platforms. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
* ArmPkg/CpuDxe: drop unused PcdVFPEnabled declarationLeif Lindholm10 days1-1/+0
| | | | | | | CpuDxe no longer uses PcdVFPEnabled, so drop the dependency declaration before turning that Pcd ARM-only. Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
* ArmPlatformPkg/Sec: clean up FP enabling codeLeif Lindholm10 days8-16/+22
| | | | | | | | | | | UEFI defines that FP support is required on AArch64, whereas many platforms enable it anyway on Arm. But when it's enabled, C code can generate instructions targeting FP registers, so: - move ArmEnableVFP call to asm - make it unconditional on AArch64 Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
* ArmVirtPkg: clean up FP enabling codeLeif Lindholm10 days3-6/+6
| | | | | | | | | | | UEFI defines that FP support is required on AArch64, whereas ArmVirtPkg enables it anyway on Arm. But when it's enabled, C code can generate instructions targeting FP registers, so: - move ArmEnableVFP call to asm - make it unconditional on AArch64 Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
* ArmPkg/ArmLib: don't check for FP support on AArch64Leif Lindholm10 days1-11/+2
| | | | | | | UEFI defines that FP support is required, so skip the runtime check in ArmEnableVFP(). Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
* MdeModulePkg/BootManagerUiLib: hide UiApp from boot entriesLuigi Leonardi11 days1-0/+30
| | | | | | | | | | | | After d433b4c8e4a6 ("OvmfPkg/PlatformBootManagerLib: Register UiApp as an optional boot option") UiApp can be found among the boot options without the LOAD_OPTION_HIDDEN flag set. This means that it can appear in the list of available entries. This can be confusing. Starting from the UiApp guid, add a check on the Device Path on all the available entries, if it matches, skip the entry. Signed-off-by: Luigi Leonardi <leonardi@redhat.com>
* BaseTools: Fix FMMT Compress wrong behaviorYuwei Chen11 days1-1/+1
| | | | | | | | | | | | | | | | When using the replace function, if the replaced file located in a compress section, then the tool will re-build the section. As the compress status set in the wrong place, in some situation, the compress will do twice times which is a wrong behavior. This patch is used to fix this issue. Cc: Rebecca Cran <rebecca@bsdio.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Bob Feng <bob.c.feng@intel.com> Cc: Ashraf Ali S <ashraf.ali.s@intel.com> Signed-off-by: Yuwei Chen <yuwei.chen@intel.com>
* MdeModulePkg: ArmFfaLib: Move Rx/Tx hob definition to Include/Guid folderKun Qin11 days5-17/+36
| | | | | | | | | | | | Currently, ArmFfaLib uses an internally defined Guided HOB to pass information about the Rx/Tx buffer set up by the first executing agent. However, the GUID definition is solely specified in the DEC file, which is inconsistent with other GUID definitions in MdeModulePkg. This change relocates the GUID definition to the Include/Guid folder to ensure consistency across the package. Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmFfaLib: Move ArmFfaLib implementation to MdeModulePkgKun Qin11 days16-36/+51
| | | | | | | | | | | | | | ArmFfaLib is an implementation of an industry specification-defined interface with UEFI specific method of handling Rx/Tx buffer sharing across multiple boot phases, which is more appropriately placed in MdeModulePkg. This update relocates the implementation of ArmFfaLib to MdeModulePkg, thereby supporting the FFA call primitives for all other packages that depend on this interface. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmFfaLib.h: Move to MdePkgKun Qin11 days3-4/+4
| | | | | | | | | | | | As a set of definitions from an industry specification-defined interface, ArmFfaLib.h is more appropriately placed in MdePkg. This update relocates both the header definition of ArmFfaLib to MdePkg, thereby supporting the monitor call primitives for all other packages that depend on this interface. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmSvcLib: Move ArmSvcLib to MdePkgKun Qin11 days9-8/+7
| | | | | | | | | | | | As an implementation of an industry specification-defined interface, ArmSvcLib is more appropriately placed in MdePkg. This update relocates both the header definition and the implementation of ArmSvcLib to MdePkg, thereby supporting the supervisor call primitives for all other packages that depend on this interface. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmSmcLibNull: Move ArmSmcLibNull to MdePkgKun Qin11 days4-2/+1
| | | | | | | | | | | | ArmSmcLibNull is a null implementation of an industry specification- defined interface, which is defined in MdePkg. This update relocates the null implementation of ArmSmcLib to MdePkg, thereby supporting the monitor call primitives for ARM platforms that does not have SMC capabilities. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmSmcLib: Move ArmSmcLib to MdePkgKun Qin11 days13-11/+10
| | | | | | | | | | | | As an implementation of an industry specification-defined interface, ArmSmcLib is more appropriately placed in MdePkg. This update relocates both the header definition and the implementation of ArmSmcLib to MdePkg, thereby supporting the monitor call primitives for all other packages that depend on this interface. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: FF-A headers: Move to MdePkgKun Qin11 days3-0/+0
| | | | | | | | | | | | ArmFfaBootInfo.h, ArmFfaPartInfo.h and ArmFfaSvc.h comprise a set of definitions established by industry standard specifications: https://developer.arm.com/documentation/den0077/latest This update relocates the header definitions from ArmPkg to MdePkg to maintain consistency within the EDK2 layout. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* ArmPkg: ArmStdSmc.h: Move to MdePkgKun Qin11 days1-0/+0
| | | | | | | | | | | | ArmStdSmc.h comprises a set of definitions established by an industry standard specification: https://developer.arm.com/documentation/den0028/latest/ This update relocates the header definition from ArmPkg to MdePkg to maintain consistency within the EDK2 repo layout. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
* MdeModulePkg/DisplayEngineDxe:Fix typos in comments.Gao Qihang11 days2-14/+14
| | | | | | | | | | opton -> option attribut -> attribute mwnu -> menu highlith/hilight -> highlight repain -> repaint Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
* UefiPayloadPkg: Add support for Firmware Volume Block ProtocolSean Rhodes12 days6-4/+1329
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for FVB in order to support a platform-independent non-volatile variable store on UefiPayloadPkg. The variable store makes use of the SmmStoreLib to provide an unauthenticated variable store. Since commit bc744f5893fc4d53275ed26dd8d968011c6a09c1 coreboot supports the SMMSTORE v2 feature. It implements an SMI handler that is able to write, read and erase pages in the boot media (SPI flash). The communication is done using a fixed communication buffer that is allocated in CBMEM. The existence of this optional feature is advertised by a coreboot table. When the SMMSTORE feature is not available, the variable emulation is used by setting PcdEmuVariableNvModeEnable to TRUE. The DXE component provides runtime services and takes care of virtual to physical mapping the communication buffers between SMM and OS. The contents of the variable store can be accessed and modified by any privileged application. As authentication is done by runtime services only the store shouldn't be used to store authenticated variables. Tested on Linux and Windows on a variety of real hardware. This can also be tested in QEMU starting with coreboot 24.12 using qemu-q35 board. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Signed-off-by: Sean Rhodes <sean@starlabs.systems> Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
* UefiPayloadPkg: Add SmmStoreLibPatrick Rudolph12 days6-0/+765
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement all of the FVB protocol functions on top of the SmmStore as a library. The library consumes the introduced gEfiSmmStoreInfoHobGuid. The SMI handler uses a fixed communication buffer in reserved DRAM. To initiate a transaction you must write to the I/O APM_CNT port. Tests on Intel(R) Xeon(R) E-2288G CPU @ 3.70G showed that the SMI isn't triggered with a probability of 1:40 of all cases when called in a tight loop. The CPU continues running and the SMI is triggered asynchronously a few clock cycles later. coreboot only handles synchronous APM request and does nothing on asynchronous APM triggers. As there's no livesign from SMM it's impossible to tell if the handler has run. Just wait a bit and try again to trigger a synchronous SMI. Tests confirmed that out of 5 million tries the SMI is now always handled. When a synchronous SMI happens with the correct write to the APM_CNT port, the ebx register is checked first that it doesn't point to SMRAM. If it doesn't it's used to read in the arguments that define an SmmStore transaction. The SMI handler will only operate on a predefined and memory mapped region in the boot media. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
* UefiPayloadPkg: Add SmmStoreInfoGuidPatrick Rudolph12 days8-0/+134
| | | | | | | | | | | Add a new InfoHob that contains the SmmStore information passed from coreboot tables when the SMMSTOREV2 feature is enabled. This will be used to implement the FVB on top of the SMI installed by coreboot. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
* UefiPayloadPkg/Include/Coreboot: Add definitions for SMMSTOREv2 tablePatrick Rudolph12 days1-0/+14
| | | | | | | | | | | | | Since commit bc744f5893fc4d53275ed26dd8d968011c6a09c1 coreboot supports the SMMSTORE v2 feature. It implements an SMI handler that is able to write, read and erase pages in the boot media (SPI flash). The existence of this optional feature is advertised by a coreboot table. Add the tag and header definition to be able to parse the table. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
* Increase FVMAIN Size for Compatibility with 2MB Size LimitRichard Lyu12 days1-3/+3
| | | | | | | | | | | | | In edk2-stable202502, the increase in code space caused an increase in size, leading to build failures for OVMF under the 2MB size limit due to insufficient space, because FVMAIN_COMPACT had insufficient space. This patch adjusts the memory layout by reducing SEVFV size by 0x10000, as its usage is below 50%, and reallocates the freed 0x10000 space to FVMAIN_COMPACT. This ensures sufficient space to accommodate all code within the FD_SIZE_2MB. Signed-off-by: Richard Lyu <richard.lyu@suse.com>
* StandaloneMmPkg/Core: Performance logging for MM driver load and startWei6 Xu12 days4-1/+41
| | | | | | | | | | Include PerformanceLib for StandaloneMmCore, add performance logging for MM driver loading and starting. Add FV_FILEPATH_DEVICE_PATH into Loaded Image protocol for MM driver, then StandaloneMmCorePerformanceLib can get the FILE_GUID from the device path. Signed-off-by: Wei6 Xu <wei6.xu@intel.com>
* UefiPayloadPkg: Drop SmbiosVersionLib for SmbiosDxe on AArch64Ajan Zhong13 days1-4/+1
| | | | | | | | OVMF SmbiosVersionLib applies to QEMU SMBIOS only, it does not work on Bare Metal platform. Drop SmbiosVersionLib dependency for SmbiosDxe on AArch64 architecture. Signed-off-by: Ajan Zhong <ajan.zhong@newfw.com>
* SecurityPkg: Update SecurityFixes.yaml for CVE-2024-38797Doug Flick13 days1-0/+15
| | | | | | | This commit updates the SecurityFixes.yaml file to include information about the CVE-2024-38797 vulnerability. Signed-off-by: Doug Flick <DougFlick@microsoft.com>
* SecurityPkg: Improving SecureBootConfigImpl:HashPeImageByType () logicDoug Flick13 days1-16/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | Namely: (1) The TWO_BYTE_ENCODE check is independent of Index. If it evalutes to TRUE for Index==0, then it will evaluate to TRUE for all other Index values as well. As a result, the (Index == HASHALG_MAX) condition will fire after the loop, and we'll return EFI_UNSUPPORTED. While this is correct, functionally speaking, it is wasteful to keep re-checking TWO_BYTE_ENCODE in the loop body. The check should be made at the top of the function, and EFI_UNSUPPORTED should be returned at once, if appropriate. (2) If the hash algorithm selected by Index has such a large OID that the OID comparison cannot even be performed (because AuthDataSize is not large enough for containing the OID in question, starting at offset 32), then the function returns EFI_UNSUPPORTED at once. This is bogus; this case should simply be treated as an OID mismatch, and the loop should advance to the next Index value / hash algorithm candidate. A remaining hash algo may have a shorter OID and yield an OID match. Signed-off-by: Doug Flick <DougFlick@microsoft.com>
* SecurityPkg: Improving HashPeImageByType () logicDoug Flick13 days1-18/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | Namely: (1) The TWO_BYTE_ENCODE check is independent of Index. If it evalutes to TRUE for Index==0, then it will evaluate to TRUE for all other Index values as well. As a result, the (Index == HASHALG_MAX) condition will fire after the loop, and we'll return EFI_UNSUPPORTED. While this is correct, functionally speaking, it is wasteful to keep re-checking TWO_BYTE_ENCODE in the loop body. The check should be made at the top of the function, and EFI_UNSUPPORTED should be returned at once, if appropriate. (2) If the hash algorithm selected by Index has such a large OID that the OID comparison cannot even be performed (because AuthDataSize is not large enough for containing the OID in question, starting at offset 32), then the function returns EFI_UNSUPPORTED at once. This is bogus; this case should simply be treated as an OID mismatch, and the loop should advance to the next Index value / hash algorithm candidate. A remaining hash algo may have a shorter OID and yield an OID match. Signed-off-by: Doug Flick <DougFlick@microsoft.com>
* SecurityPkg: Out of bound read in HashPeImageByType()Doug Flick13 days1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In HashPeImageByType(), the hash of PE/COFF image is calculated. This function may get untrusted input. Inside this function, the following code verifies the loaded image has the correct format, by reading the second byte of the buffer. ```c if ((*(AuthData + 1) & TWO_BYTE_ENCODE) != TWO_BYTE_ENCODE) { ... } ``` The input image is not trusted and that may not have the second byte to read. So this poses an out of bound read error. With below fix we are assuring that we don't do out of bound read. i.e, we make sure that AuthDataSize is greater than 1. ```c if (AuthDataSize > 1 && (*(AuthData + 1) & TWO_BYTE_ENCODE) != TWO_BYTE_ENCODE){ ... } ``` AuthDataSize size is verified before reading the second byte. So if AuthDataSize is less than 2, the second byte will not be read, and the out of bound read situation won't occur. Tested the patch on real platform with and without TPM connected and verified image is booting fine. Authored-by: Raj AlwinX Selvaraj <Alw...@intel.com> Signed-off-by: Doug Flick <DougFlick@microsoft.com>
* ShellPkg: Added ArmV9 processors support for SmbiosView commandpraveensankarn13 days1-0/+4
| | | | | | | | | Added switch case for ArmV9 processor family inside function DisplayProcessorFamily2 in PrintInfo.c to avoid inappropriate data shown while accessing Type 4 Smbios table. ArmV9 processor family is added in Smbios Spec 3.8 which should be noted. Signed-off-by: Praveen Sankar N <praveensankarn@ami.com>
* BaseTools: Dump library dependency chain on build failureRay Ni13 days1-2/+14
| | | | | | | | | | | | | | | | | | | | | When a module M depends on L1, which depends on L2, which depends on L3, the build fails when the library instance of L3 cannot be found according to the library class-instance mapping configuration specified in the DSC file. When such failure happens, the build tool only prints that the instance of L3 required by module M cannot be found. But it does not tell how L3 is required by M. The change enhances build tool to print the entire dependency chain when such failure happens. With the change, the new error message will be as follows: <dsc-path>(...): error 4000: Instance of library class [L3] is not found for module [M], [L3] is: consumed by <instance of L2> consumed by <instance of L1> Signed-off-by: Ray Ni <ray.ni@intel.com>
* UefiPayloadPkg: UefiPayloadEntry: Don't use reserved DRAMPatrick Rudolph13 days2-11/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | Recent AMD platforms reserve parts of the lower DRAM where UefiPayload is being loaded to and since UefiPayloadEntry doesn't care, it uses the reserved memory for HOB and memory allocation. The bootloader cannot prevent this, as it can only place the UEFI FV in usable DRAM, but it has no control over EfiBootService memory allocations. This issue prevents boot on those platforms without any specific error message. It's not vendor specific and can happen on every platform. Add the same logic as used on UniversalPayload and do the following: - Walk bootloader provided memory information - Skip everything that's not marked as usable DRAM - Align entries to 1MiB boundary - Don't use memory above 4GiB on x86_32 - Skip memory ranges too small - Don't use memory currently occupied by the UEFI FV itself Once a useable memory range is found pass it to HobConstructor(). TEST: Fixes boot on AMD/glinda, that reserved memory at 2000000h. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
* GitHub Action: Bump actions/create-github-app-token from 1 to 2dependabot[bot]2025-04-071-1/+1
| | | | | | | | | | | | | | | Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 1 to 2. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/v1...v2) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: '2' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* StandaloneMmPkg: MmCommunicationDxe: Add EFI_MM_COMMUNICATION3_PROTOCOLKun Qin2025-04-073-5/+94
| | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change added support of installing `EFI_MM_COMMUNICATION3_PROTOCOL`. MmCommunicate v3 routine will no longer need to supply buffer length in the input parameters but instead inference from the returned communicate buffer. Signed-off-by: Kun Qin <kuqin12@gmail.com>
* StandaloneMmPkg: StandaloneMmIplPei: Add EFI_PEI_MM_COMMUNICATION3_PPIKun Qin2025-04-073-7/+150
| | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change added support of installing `EFI_PEI_MM_COMMUNICATION3_PPI`. MmCommunicate v3 routine will no longer need to supply buffer length in the input parameters but instead inference from the returned communicate buffer. Signed-off-by: Kun Qin <kuqin12@gmail.com>
* MdeModulePkg: PiSmmIpl: Update MessageLength calculation for MmCommunicateKun Qin2025-04-072-14/+114
| | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change added support of installing `EFI_MM_COMMUNICATION3_PROTOCOL`. MmCommunicate v3 routine that calculates message length is also updated to remove ambiguity in contrast to v1 routine. Signed-off-by: Kun Qin <kuqin12@gmail.com>
* StandaloneMmPkg: StandaloneMmCore: Parsing new MM communicate headerKun Qin2025-04-072-16/+34
| | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 MM communicate protocols are expanded with EFI_MM_COMMUNICATE_HEADER_V3 structure that cooperates with updated field types and flexible array. The PiSmmCore implementation is updated to detect and process incoming data accordingly. Two checks are also performed to prevent legacy communicate data or unsupported data is fed into MM core under agreed header guid. Signed-off-by: Kun Qin <kuqin12@gmail.com>
* MdeModulePkg: PiSmmCore: Added parser of new MM communicate headerKun Qin2025-04-072-19/+46
| | | | | | | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 MM communicate protocols are expanded with EFI_MM_COMMUNICATE_HEADER_V3 structure that cooperates with updated field types and flexible array. The PiSmmCore implementation is updated to detect and process incoming data accordingly. Two checks are also performed to prevent legacy communicate data or unsupported data is fed into MM core under agreed header guid. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Kun Qin <kuqin12@gmail.com>
* MdePkg: MmCommunication: Introduce EFI_PEI_MM_COMMUNICATION3_PPI to MdePkgKun Qin2025-04-072-0/+57
| | | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change introduces a new definition for MM communicate PPI v3. This PPI will be installed under a new GUID in contrast to exisiting EFI_PEI_MM_COMMUNICATION_PPI. Data communicated to MM through EFI_PEI_MM_COMMUNICATION3_PPI should always start with EFI_MM_COMMUNICATE_HEADER_V3 with its HeaderGuid, Signature and Version fields properly populated. Signed-off-by: Kun Qin <kuqin12@gmail.com>
* MdePkg: MmCommunication: Introduce EFI_MM_COMMUNICATION3_PROTOCOL to MdePkgKun Qin2025-04-072-0/+67
| | | | | | | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change introduces a new definition for MM communicate protocol v3. This protocol will be installed under a new GUID in contrast to exisiting EFI_MM_COMMUNICATION_PROTOCOL. Data communicated to MM through EFI_MM_COMMUNICATION3_PROTOCOL should always start with EFI_MM_COMMUNICATE_HEADER_V3 with its HeaderGuid, Signature and Version fields properly populated. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Kun Qin <kuqin12@gmail.com>
* MdePkg: MmCommunication: Introduce EFI_MM_COMMUNICATE_HEADER_V3 to MdePkgKun Qin2025-04-072-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3430 This change introduces a new definition for MM communicate header structure, intending to provide better portability between different architectures (IA32 & X64) and adapt to flexible array supported by modern compilers. The original MessageLength field of EFI_MM_COMMUNICATE_HEADER, as a generic definition, was used for both PEI and DXE MM communication. On a system that supports PEI MM launch, but operates PEI in 32bit mode and MM foundation in 64bit, the current EFI_MM_COMMUNICATE_HEADER definition will cause structure parse error due to UINTN used. This introduction removes the architecture dependent field by defining this field as UINT64. The new signature could help identifying whether the data received is compiliant with this new data structure, which will help for binary release modules to identify usage of legacy data structure. BufferSize field is also added to indicate the full range of communicate region available to the SMI handler. The data field of MM communicate message is replaced with flexible array to allow users not having to consume extra data during communicate and author code more intrinsically. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Kun Qin <kuqin12@gmail.com>
* ShellPkg/SmbiosView: Decode for InterfaceTypeSpecificData of SMBIOS type42edhay2025-04-021-1/+36
| | | | | | | | | ShellPkg/SmbiosView tool changes for InterfaceTypeSpecificData decode and print Previously, the InterfaceTypeSpecificData of SMBIOS type42 table was dumped as hex in the SmbiosView tool output This commit adds decode, interpretation and print as per SMBIOS spec version 3.8.0 Signed-off-by: G Edhaya Chandran <edhaya.chandran@arm.com>
* MdePkg/IndustryStandard: Define enums of MCTPHostInterface from DSP0239edhay2025-04-021-0/+16
| | | | | | | Enums for MCTPHostInterface are defined from Management Component Transport Protocol (MCTP) IDs and Codes specification (DSP0239) These are referenced for the decode of InterfaceTypeSpecificData of SMBIOS table 42 by ShellPkg/SmbiosView Signed-off-by: G Edhaya Chandran <edhaya.chandran@arm.com>