2356 Commits

Author SHA1 Message Date
Mikhail Krichanov
992385e15e SecurePE: Defined new PcdImageProtectionPolicy. 2025-04-07 12:30:28 +03:00
Mikhail Krichanov
48b806f46f UE: Support UE generation and consumption. 2025-04-07 12:24:28 +03:00
Mikhail Krichanov
1fef202932 MdePkg/UefiImageLib: Introduce DebugAddress
Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
2025-04-07 12:24:27 +03:00
Mikhail Krichanov
e46d356fc9 MdePkg/UefiImageLib: Support multi-format and multi-source architecture
Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
2025-04-07 12:24:27 +03:00
Mikhail Krichanov
bc87d7b430 Drop support for the TE format 2025-04-07 12:18:22 +03:00
Mikhail Krichanov
6b652ab025 MdePkg/MemoryAllocationLib: Add Allocate(Aligned)CodePages 2025-04-07 12:16:51 +03:00
Mikhail Krichanov
a52efcc86a MdePkg: Introduce CommonMemoryAllocationLib 2025-04-07 12:13:58 +03:00
Marvin Häuser
78c65024de MdePkg/Base.h: Introduce ALIGN_VALUE_SUBTRAHEND 2025-04-07 12:13:58 +03:00
Marvin Häuser
c4ec3c100b MdePkg/Base.h: Add support for C++ alignof
In preparation of including Base.h in C++ BaseTools programs, support
the C++ 11 alignof operator. The C _Alignof operator is not universally
supported in C++ mode across compiler toolchains and thus the current
definition may lead to compilation errors with said programs.

Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
2025-04-07 12:13:58 +03:00
Marvin Häuser
70dd7f8309 MdePkg/Base.h: Only use C++ static_assert when supported
To support GoogleTest, 933b4c3 added support for C++ static_assert.
However, this is not a mandatory or universally supported C++ feature.
Guard its usage by the __cpp_static_assert support flag.

Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
2025-04-07 12:13:58 +03:00
Mikhail Krichanov
d172035ede MdePkg: Defined DEBUG_RAISE() to facilitate fuzzing. 2025-04-07 12:13:57 +03:00
Mikhail Krichanov
84c6f4ae1a MdePkg: Added BaseOverflowLib library. 2025-04-07 12:13:57 +03:00
Mikhail Krichanov
5d894921a3 BaseTools: Replaced GenFw with ImageTool and MicroTool. 2025-04-07 12:13:57 +03:00
Mikhail Krichanov
09a0c067d0 SecurePE: Replaced old PE loader with Secure one. 2025-04-07 12:12:35 +03:00
Mikhail Krichanov
faeb23843b MdePkg/X64/ProcessorBind.h: Fixes CLANGDWARF X64 compilation
Corrects typedef redefinition, in particular for openssl e_os2.h

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
2025-04-07 12:02:07 +03:00
Oliver Smith-Denny
885bcca649 MdePkg: Add StandaloneMmCoreEntryPoint for X64
Moves StandaloneMmCoreEntryPoint for X64 to MdePkg to live with
the other entry point libs. It does not move the ARM64 version,
as this was just moved to ArmPkg due to its heavy coupling with
ArmPkg code. This will need to be revisited when dynamic stack
cookie support is added to ARM64 StMM.

This commit just adds the library in MdePkg, a separate commit
will remove it from StandaloneMmPkg to make it easier to consume.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-02-07 02:23:11 +00:00
Oliver Smith-Denny
e63cdeebb8 MdePkg: Add StackCheckLib Library Class
StackCheckLib defines the interface between a compiler
and the stack checking code. It is being converted from
a NULL library class to an actual library class to make
it easier to use for a platform and be easier to define
the expected interface with a compiler, so if there is
a compiler change it can be tracked and caught.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-02-07 02:23:11 +00:00
Oliver Smith-Denny
d9715c133f MdePkg: Centralize RNDR Register Definition
RNDR is a standard register defined in the ARM ARM for
AARCH64. Move the definition from BaseRngLib to AArch64.h.

Furthermore, move the inclusion of this register definition
to the ARM specific header file.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-02-07 02:23:11 +00:00
Michael Kubacki
de5c1198c1 MdePkg: Add Random Number Generator (RNG) PPI
REF:https://github.com/tianocore/edk2/issues/10529

Adds a new PPI that serves the same purpose as EFI_RNG_PROTOCOL in
DXE. This PPI can be produced by a PEIM to provide a dynamic interface
to RNG services in PEI.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-02-06 20:29:15 +00:00
Michael Kubacki
7518b93f77 MdePkg: Split RNG protocol definitions
Move the structure definition to a common location that can be shared
with the RNG PPI. Move the algorithms to a common header that can be
referenced independent of the protocol.

Include the algorithm header in the interface header since the
algorithms are directly used in the interface and for compatibility
with existing code.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-02-06 20:29:15 +00:00
Yuquan Wang
074f61e4c6 MdePkg/IndustryStandard: add definitions for CXL CEDT
This adds #defines and struct typedefs for the various structure
types in the CXL Early Discovery Table (CEDT).

Signed-off-by: Yuquan Wang <wangyuquan1236@phytium.com.cn>
2025-02-03 00:34:06 +00:00
INDIA\sachinganesh
09d4e6f7c7 MdePkg: Add Hot pluggable resource attribute
PI 1.9 Specification defines new memory resource attribute for hot plug.

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-31 19:30:28 +00:00
INDIA\sachinganesh
4ec3539e34 MdePkg: Add UEFI 2.11 specification macro
Add macro for UEFI 2.11 Specification support

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-31 19:30:28 +00:00
INDIA\sachinganesh
2e6359a088 MdePkg: Add Confidential Computing Extension for RISC-V AP-TEE
UEFI 2.11 Specification adds RISC-V AP-TEE Confidential Computing
Extension

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-31 19:30:28 +00:00
INDIA\sachinganesh
12ceee664a MdePkg: Add HotPlug Memory Attribute
UEFI 2.11 Specification defines new memory attribute for hot plug.

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-31 19:30:28 +00:00
Liming Gao
7742247d1c MdePkg: Add SM3 crypto algorithm GUID definition
UEFI 2.11 has been published on https://uefi.org/specifications
It defines SM3 crypto algorithm GUID and structure.

Signed-off-by: Liming Gao <gaoliming@byosoft.com.cn>
2025-01-31 03:50:59 +00:00
Ard Biesheuvel
ea2f6c68ee MdePkg/Base: Don't error out on missing compiler CPP macros
STATIC_ASSERT is #define'd to a compiler specific value, based on
built-in macros exposed by those compilers. If none of those are found,
an #error is raised.

This breaks the DTCPP build rule, which relies on the C preprocessor
for header file inclusion and value substitution, but doesn't define any
of the compiler macros we look for.

So drop the error case. If STATIC_ASSERT is used without a definition,
an error will be raised anyway.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2025-01-17 16:39:29 +00:00
Nickle Wang
1301e0b47e MdePkg: Add manageability status code defined in PI 1.9 Spec.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4483

This change introduces EFI_COMPUTING_UNIT_MANAGEABILITY status code.
EFI_COMPUTING_UNIT_MANAGEABILITY is created as one of the subclasses in
computing unit class. EFI_COMPUTING_UNIT_MANAGEABILITY will be used in
edk2 RedfishPkg and edk2-redfish-client RedfishClientPkg to report
Redfish operation errors. It will also be used to report errors in
edk2-platforms ManageabilityPkg.

PI 1.9 specification, 6.4.1.4.9. Manageability Subclass:
* https://uefi.org/specs/PI/1.9/V3_Status_Codes.html#manageability-subclass

RFC:
* https://edk2.groups.io/g/devel/message/105525
* https://edk2.groups.io/g/devel/message/105595
* https://edk2.groups.io/g/rfc/message/802

Signed-off-by: Nickle Wang <nicklew@nvidia.com>
2025-01-17 04:36:00 +00:00
Michael D Kinney
8b2256fbf2 MdePkg/Include: Use _Static_assert for clang and GNUC
The clang compiler generates the following error

error: use of 'static_assert' without inclusion of <assert.h>

This is due to the use of the MSC Extension static_assert.
Use _Static_assert instead for clang and GNUC compilers.

Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2025-01-16 05:33:13 +00:00
Sarah Walker
7216013b36 MdePkg: Tpm2Acpi.h: Add defines for TPM2 ACPI table revision 5
Signed-off-by: Sarah Walker <Sarah.Walker2@arm.com>
2025-01-09 12:41:19 +08:00
INDIA\sachinganesh
114b54e3fb MdePkg: Update AtaPassThru header to UEFI 2.10A
UEFI 2.10A Specification has added a new error case to
EFI_ATA_PASS_THRU_PROTOCOL.GetNextDevice API which handles
port multiplier not being connected to the Port.

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-09 12:40:45 +08:00
INDIA\sachinganesh
e4d74bb592 MdePkg: Add UEFI Specification macros
Add macros for UEFI 2.9 and UEFI 2.10 Specifications

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-09 12:40:45 +08:00
INDIA\sachinganesh
a872cc18e0 MdePkg: Clarify return status of FMP Protocol GetImage()
Clarifed the return status of EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetImage().
As intended in UEFI 2.10 Specification.

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-09 12:40:45 +08:00
INDIA\sachinganesh
9144bb940a MdePkg: Update Default IP TTL
Default IP TTL (Time to Live) has been updated in UEFI 2.10 A
Specification. To comply with IANA recommendations.

REF: https://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ip-parameters-2

Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-01-09 12:40:45 +08:00
Phil Noh
7e03c40659 MdePkg: Update BASE_CR macro in Base.h for a Coverity error
Coverity is a static analysis tool. It detects the macro as an error
(case to incompatible type, cert_exp39_c_violation). The update resolves
the error and supports compliance with the static analysis tool.

Signed-off-by: Phil Noh <Phil.Noh@amd.com>
2025-01-07 09:28:02 +08:00
Chris Fernald
cef65b2e93 MdePkg BootManagerPolicy.h: Define GUID for connecting storage devices.
Some platforms require connecting storage media while booting to
network, or require enumerating storage protocols that were not initially
enumerated during BDS. This change adds a GUID to allow implementation
of boot manager's ConnectDeviceClass to connect storage media.

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2024-12-17 04:15:46 +00:00
Christopher Zurcher
7936ffa1e6 MdePkg/Ufs.h: Update to UFS 4.0
Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com>
2024-12-16 15:39:35 +08:00
Christopher Zurcher
29ebe5ee5a MdePkg/IndustryStandard: Add UFS definitions
These files are direct ports from the (identical) files:
MdeModulePkg\Bus\Ufs\UfsBlockIoPei\UfsHci.h
MdeModulePkg\Bus\Ufs\UfsPassThruDxe\UfsPassThruHci.h

Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com>
2024-12-16 15:39:35 +08:00
Oleg Ilyasov
1a440d9638 Retrieve the USB class specific data from the configuration descriptor
If USB device reports class specific descriptors, it is currently the job of
device driver to parse the configuration to find the class specific data.
The new library functions parse the configuration descriptor and return class
specific interface and class specific endpoint descriptors.
Also, these new functions allow to retrieve the data from non-default alternate
settings without performing a switch to this setting. Switching to the
alternate setting currently implies the execution of UsbSetInterface function
that performs USB control trnasfer.
In some cases this switch is not desirable so the new functions
UsbGetInterfaceDescriptorSetting and UsbGetEndpointDescriptorSetting come
in handy.

Signed-off-by: Oleg Ilyasov <olegi@ami.com>
2024-12-13 23:56:10 +00:00
Chao Li
3c8e10c8b3 MdePkg: Synchronize UEFI2.11 LoongArch64 DebugSupportLib definition
Synchronize the changes about LoongArch64 in section 18.2.5 of UEFI2.11.

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: Chao Li <lichao@loongson.cn>
2024-12-12 04:57:03 +00:00
Kun Qin
6539b693d1 MdePkg: ArmLib: Return UINT32 for ArmCacheWritebackGranule
ArmCacheWritebackGranule should not return value higher than MAX_UINT32.

This change will allow the usage without architecture depenedent return
size.

Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Sami Mujawar <sami.mujawar@arm.com>

Signed-off-by: Kun Qin <kun.qin@microsoft.com>
2024-12-11 18:21:29 +00:00
Raymond Yang
232003ce5a MdePkg: Update StatusCodeDataTypeId.h
Refine comments for EFI_STATUS_CODE_SPECIFIC_DATA_GUID .
Add the structs defined in this file for EFI_STATUS_CODE_SPECIFIC_DATA_GUID to comment.

Signed-off-by: Raymond Yang <yangrongwei@hotmail.com>
2024-12-11 09:54:54 +08:00
John Chung
5b760ca087 MdePkg/IndustryStandard: Add definitions for IPMI Serial
Add IPMI Serial definitions

Specification reference:
https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-second-gen-interface-spec-v2-rev1-1.html

Signed-off-by: John Chung <john.chung@arm.com>
2024-12-09 19:57:53 +00:00
Michael D Kinney
da1084ccf4 MdePkg/Include/IndustryStandard: Address C++ keyword collisions
Update Tpm12.h and Tpm20.h and not use c++ reserved keywords
operator and xor in C structures to support use of these
include files when building with a C++ compiler.

This patch removes the temporary use of anonymous unions and
warning 4201 disable for VS20xx tool chains to complete the
following field name changes:

* operator -> operator_
* xor -> xor_

NOTE: This is a non-backwards compatible change to Tpm12.h
and Tmp20.h. And consumers of these include files that access
the "operator" or "xor" fields must be updated.

Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2024-12-03 06:25:32 +00:00
Michael D Kinney
05ac9a58f5 MdePkg/Include/IndustryStandard: Add operator_ and xor_ field names
Update Tpm12.h and Tpm20.h and not use c++ reserved keywords
operator and xor in C structures to support use of these
include files when building with a C++ compiler.

This patch temporarily introduces an anonymous union to add
operator_ and xor_ fields to support migration from the current
field names to the new field names.

Warning 4201 is disabled for VS20xx tool chains is a temporary
change to allow the use of anonymous unions.

Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2024-12-03 06:25:32 +00:00
Ard Biesheuvel
c2827283a8 MdePkg/AArch64: Add some missing MMU related constants
Add definitions for the non-global page tables descriptor attribute, as
well as the E2H TCR bit, so that we can use them in the MMU code.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-11-26 23:53:16 +00:00
Jessica Clarke
1bd09ad193 MdePkg: Define AARCH64_CPTR_RES1 and AARCH64_CPTR_DEFAULT
These constants give the set of RES1 bits in CPTR_EL2, as 1s, and the
default value to use for CPTR_EL2 in order to enable all known (or
harmless) features but no unknown ones that require EL2 knowledge. This
will be used by ArmPlatformPkg in the following commit, separated due to
being different packages, even though the combined change is tiny.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
2024-11-14 06:25:27 +00:00
Jessica Clarke
ef35863880 ArmPlatformPkg,MdePkg: Rename AARCH64 CPACR_CP_FULL_ACCESS
CP_FULL_ACCESS is a misnomer, we only enable access to SIMD/FP state,
and although the register's mnemonic is CPACR_EL1, its full name is
"Architectural Feature Access Control Register", with AArch64 having no
coprocessors like AArch32 did, so the "CP" is also not appropriate.
Rename it to show it's the default value we use on entry, and define it
in terms of the existing CPACR_FPEN_FULL rather than a magic constant
with the same value to more clearly document that fact. Also update
comments to reflect all this (including the CPTR_EL2 case).

Continuous-integration-options: PatchCheck.ignore-multi-package
Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
2024-11-14 06:25:27 +00:00
Kun Qin
961a9e1d76 MdePkg: Added definition of AMD specific public MSRs
Added definition of AMD specific public MSRs:
1. SMBASE
2. SMM_ADDR
3. SMM_MASK

Signed-off-by: Kun Qin <kuqin@microsoft.com>
2024-11-12 01:07:12 +00:00
Michael Kubacki
b7735a087a MdePkg: CodeQL Fixes.
Includes changes across the repo for the following CodeQL rules:
- cpp/comparison-with-wider-type
- cpp/overflow-buffer
- cpp/redundant-null-check-param
- cpp/uselesstest

Co-authored-by: Taylor Beebe <tabeebe@microsoft.com>
Co-authored-by: kenlautner <85201046+kenlautner@users.noreply.github.com>

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2024-11-01 04:30:39 +00:00