2085 Commits

Author SHA1 Message Date
Marvin Häuser
38cbc7de6b MdePkg/BasePeCoffLib2: Fix invalid ASSERT for when RelocDirSize == 0 2023-05-10 10:22:23 +03:00
Marvin Häuser
96fe339956 MdePkg/UefiImageLib: Add API for the image format ID 2023-05-10 10:22:22 +03:00
Marvin Häuser
07d0ca418e MdePkg/BaseUefiImageLib: Factor out ExecutionSupport 2023-05-10 10:22:22 +03:00
Marvin Häuser
4a02e8a807 BaseUefiImageLib: Fix segment logging 2023-05-10 10:22:22 +03:00
Marvin Häuser
2304aa1fd3 MdePkg/BasePeCoffLib2: Fix uninitialized RtContext for RelocateImage() 2023-05-10 10:22:22 +03:00
Marvin Häuser
d6657d8dd7 MdePkg/BasePeCoffLib2: Fix RuntimeRelocate sanity-check 2023-05-10 10:22:22 +03:00
Marvin Häuser
a8f69bde96 MdePkg/PeCoffLib2: Expose ARM Thumb MOVW/MOVT relocation helpers 2023-05-10 10:22:22 +03:00
Marvin Häuser
1c6925aaa2 Drop support for the TE format 2023-04-12 19:56:18 +03:00
Marvin Häuser
2f91fddf99 Drop premature UE support 2023-04-10 22:21:15 +02:00
Marvin Häuser
7b022c46d0 MdePkg/BasePeCoffLib2: Only validate ExeHdrOffset when non-zero 2023-04-10 10:57:28 +02:00
Mikhail Krichanov
60e0471175 MdePkg/BasePeCoffLib2: Fix ARM Thumb apply relocation routine
Thumb instructions are either 16-bit or 32-bit, and are aligned on
a two-byte boundary

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
2023-04-10 10:31:53 +02:00
vit9696
950de0d6fe MdePkg: Fix uninitialised access in SafeString 2023-04-02 15:50:10 +03:00
Marvin Häuser
b137c5414d MdePkg/BasePeCoffLib2: Read debug directory from the image memory 2023-04-02 00:04:47 +02:00
Marvin Häuser
94af9da84b MdePkg/BasePeCoffLib2: Distinguish between unsupported and corrupted 2023-04-02 00:04:47 +02:00
Marvin Häuser
eea8ba4030 MdePkg/UefiImageLib: Require callers to allocate aligned memory 2023-03-30 17:15:14 +02:00
Marvin Häuser
227871ad94 MdePkg/MemoryAllocationLib: Add Allocate(Aligned)CodePages 2023-03-30 16:18:09 +02:00
Marvin Häuser
b5b858f990 MdePkg: Introduce CommonMemoryAllocationLib 2023-03-30 16:18:09 +02:00
Marvin Häuser
b74a1336a5 MdePkg/BasePeCoffLib2: Move ExtraAction to UefiImageLib 2023-03-30 00:18:28 +02:00
Marvin Häuser
0725fe2554 MdePkg/BaseOverflowLib: Add missing Base.h includes 2023-03-29 21:36:28 +02:00
Marvin Häuser
46a55a1dc4 MdePkg/BasePeCoffLib2: Fix call to RelocateExtraAction 2023-03-29 19:57:39 +02:00
Mikhail Krichanov
730a27d321 MdePkg: Added CONST to fix ArmVirtPkg compilation. 2023-03-16 15:33:03 +03:00
Mikhail Krichanov
860dcd18cd MdePkg: Returned some #includes. 2023-03-16 12:20:13 +03:00
Mikhail Krichanov
b4a313ea05 MdePkg: Cleaned up BaseLib.h already included in DebugLib.h. 2023-03-16 12:20:13 +03:00
Mikhail Krichanov
30d425b06f MdePkg: Included BaseLib.h in DebugLib.h as it's needed for CpuBreakpoint(). Reverted minor changes. 2023-03-16 12:20:13 +03:00
Mikhail Krichanov
8eaa875cc4 MdePkg: Placed import of PcdLib.h into DebugLib.h. 2023-03-16 12:20:13 +03:00
Mikhail Krichanov
c9b10ce0c1 MdePkg: Redefined DEBUG_RAISE() to facilitate fuzzing. 2023-03-16 12:20:13 +03:00
Vitaly Cheptsov
d230c91de9 MdePkg/BasePeCoffLib2: Remove DEBUG_RAISE on invalid DebugDir size
EfiBoot images contain a sum of EFI_IMAGE_DEBUG_DIRECTORY_ENTRY and
EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY sizes in DebugDir size.
Since our XCODE5 toolchain generates NB10 debug entries and we do not
have access to Apple DEBUG symbols, just ignore this debug information.

Signed-off-by: Vitaly Cheptsov <vit9696@protonmail.com>
2023-02-12 09:57:12 +03:00
Vitaly Cheptsov
39d0ce7013 MdePkg: Add PCD to remove X perm from image sections with WX perms
This feature is useful for images created by old Apple mtoc utility.

Signed-off-by: Vitaly Cheptsov <vit9696@protonmail.com>
2023-01-04 20:03:26 +03:00
Mikhail Krichanov
cf92e9f7d7 BaseTools: Replaced GenFw with ImageTool and MicroTool. 2022-12-28 17:21:20 +03:00
Mikhail Krichanov
ef68b89fbc SecurePE: Replaced old PE loader with Secure one. 2022-12-28 17:08:53 +03:00
Savva Mitrofanov
340c5bc2f4
MdePkg/BasePcdLibNull: Remove ASSERT from LibPcdGetSize, LibPcdGetExSize
GetSize routines should return zero size when checking Token existence

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
Reviewed-by: Vitaly Cheptsov <vit9696@protonmail.com>
2022-12-07 14:47:56 +06:00
Pedro Falcato
35043a5ec0 MdePkg/BaseLib: Fix out-of-bounds reads in SafeString
There was a OOB access in *StrHexTo* functions, when passed strings like
"XDEADBEEF".

OpenCore folks established an ASAN-equipped project to fuzz Ext4Dxe,
which was able to catch these (mostly harmless) issues.

Cc: Vitaly Cheptsov <vit9696@protonmail.com>
Cc: Marvin H?user <mhaeuser@posteo.de>
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: Pedro Falcato <pedro.falcato@gmail.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jiewen Yao <Jiewen.yao@Intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-11-07 01:57:09 +00:00
Sami Mujawar
ef4cf3d88d MdePkg/ArmTrngLib: Add NULL instance of Arm TRNG Library
Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668)

The Arm True Random Number Generator (TRNG) library defines an
interface to access the entropy source on a platform. On platforms
that do not have access to an entropy source, a NULL instance of
the TRNG library may be useful to satisfy the build dependency.

Therefore, add a NULL instance of the Arm TRNG library.

Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-11-06 16:32:28 +00:00
Chao Li
ced203c3d5 MdePkg/BaseSafeIntLib: Add LoongArch64 architecture for BaseSafeIntLib.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Add LoongArch64 architecture for BaseSafeIntLib library.

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>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
104df6136f MdePkg/BaseSynchronizationLib: LoongArch cache related code.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Support LoongArch cache related functions.

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>
Co-authored-by: Baoqi Zhang <zhangbaoqi@loongson.cn>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
f89815a125 MdePkg/BaseCpuLib: LoongArch Base CPU library implementation.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Implement LoongArch CPU related functions in BaseCpuLib.

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>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
dbbb045ff1 MdePkg/BasePeCoff: Add LoongArch PE/Coff related code.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Add LoongArch image relocation.

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>
Co-authored-by: Baoqi Zhang <zhangbaoqi@loongson.cn>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
10d291f746 MdePkg/BaseIoLibIntrinsic: IoLibNoIo for LoongArch architecture.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

LoongArch MMIO library instance, use the IoLibNoIo.

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>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
264e930de0 MdePkg/BaseCacheMaintenanceLib: LoongArch cache maintenance implementation.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Implement LoongArch cache maintenance functions in
BaseCacheMaintenanceLib.

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>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
cd24eb578b MdePkg/BaseLib: BaseLib for LOONGARCH64 architecture.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Add LoongArch LOONGARCH64 BaseLib functions.

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>
Co-authored-by: Baoqi Zhang <zhangbaoqi@loongson.cn>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Chao Li
23d873f4cf MdePkg/DxeServicesLib: Add LOONGARCH64 architecture
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053

Add LOONGARCH64 architecture to MdePkg/DxeServiceLib.

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>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-10-14 02:16:33 +00:00
Michael D Kinney
e76496530c MdePkg/Library/UefiDevicePathLib: Add back StandaloneMm INF file
REF: https://github.com/tianocore/edk2/pull/3130

The above PR removed UefiDevicePathLibStandaloneMm.inf, which is
a non-backwards compatible change and does not provide time for
downstream platforms to use the UefiDevicePathLibBase.inf.

Add UefiDevicePathLibStandaloneMm.inf back, but add comments that
it is deprecated and that UefiDevicePathLibBase.inf should be used
instead.

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Mateusz Albecki <mateusz.albecki@intel.com>
Cc: Yanbo Huang <yanbo.huang@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-08-10 21:43:49 +00:00
Mateusz Albecki
bf1ff540d9 MdePkg/UefiDevicePathLib: Add support for PEIMs
DevicePathLib utilities are useful in PEI to locate the devices which need
an opal unlock on S3 resume. This commit reuses the implementation done
for standalone MM support and makes the StandaloneMm library Base.

Signed-off-by: Mateusz Albecki <mateusz.albecki@intel.com>

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-07-23 02:11:31 +00:00
Pedro Falcato
92288f4334 MdePkg/BaseLib: Add CRC16-ANSI and CRC32c implementations
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3871

Add the CRC16-ANSI and CRC32C implementations previously found at
Features/Ext4Pkg/Ext4Dxe/Crc{16,32c}.c to BaseLib.

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: Pedro Falcato <pedro.falcato@gmail.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-06-13 02:41:35 +00:00
Zhihao Li
b09ada6edc MdePkg: Remove "assert" from SmmCpuRendevousLibNull.c
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3931

Some drivers will break down when they use
SmmWaitForAllProcessor() which from SmmCpuRendezvousLibNull.c.
Removing the code "ASSERT(False)" will make consumer
work normally if they keep default setting for sync mode.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Zhihao Li <zhihao.li@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-06-13 01:37:16 +00:00
Rebecca Cran
48b919cb14 MdePkg: Remove RVCT support
RVCT is obsolete and no longer used.
Remove support for it.

Signed-off-by: Rebecca Cran <quic_rcran@quicinc.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
2022-05-13 14:58:54 +00:00
Li, Zhihao
8079d4dc4f MdePkg: add SmmCpuRendezvousLib.h and SmmCpuRendezvousLibNull implement.
REF? https://bugzilla.tianocore.org/show_bug.cgi?id=3912

UefiCpuPkg define a new Protocol with the new services
SmmWaitForAllProcessor(), which can be used by SMI handler
to optionally wait for other APs to complete SMM rendezvous in
relaxed AP mode.

VariableSmm and VariableStandaloneMM driver in MdeModulePkg need
to use this services but MdeModulePkg can't depend on UefiCpuPkg.

Thus, the solution is moving SmmCpuRendezvouslib.h from UefiCpuPkg
to MdePkg and creating SmmCpuRendezvousLib NullLib version
implementation in MdePkg as dependency for the pkg that can't
depend on UefiCpuPkg.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Michael Kubacki <mikuback@linux.microsoft.com>
Cc: Siyuan Fu <siyuan.fu@intel.com>

Signed-off-by: Zhihao Li <zhihao.li@intel.com>
Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-05-09 02:04:11 +00:00
Min Xu
7012cb73c4 MdePkg: Probe Cc guest in BaseIoLibIntrinsicSev
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3902

Bad IO performance in SEC phase is observed after TDX features was
introduced. (after commit b6b2de884864 - "MdePkg: Support mmio for
Tdx guest in BaseIoLibIntrinsic").

This is because IsTdxGuest() will be called in each MMIO operation.
It is trying to cache the result of the probe in the efi data segment.
However, that doesn't work in SEC, because the data segment is read only
(so the write seems to succeed but a read will always return the
original value), leading to us calling TdIsEnabled() check for every
mmio we do, which is causing the slowdown because it's very expensive.

This patch is to call CcProbe instead of TdIsEnabled in IsTdxGuest.
Null instance of CcProbe always returns CCGuestTypeNonEncrypted. Its
OvmfPkg version returns the guest type in Ovmf work area.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
2022-04-19 01:26:08 +00:00
Min Xu
74a3eb975d MdePkg: Add CcProbeLibNull
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3902

CcProbeLib is used to probe the Confidential Computing guest type.
This library is designed to run on SEC / PEI / DXE phases. A null
instance of the library always returns CCGuestTypeNonEncrypted.
A platform specific CcProbeLib will be implemented, for example,
in OvmfPkg.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
2022-04-19 01:26:08 +00:00
Min Xu
3571fc906f MdePkg: Support IoRead/IoWrite for Tdx guest in BaseIoLibIntrinsic
RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429

This commit supports IoRead/IoWrite for SEV/TDX/Legacy guest in one
binary. It checks the guest type in runtime and then call corresponding
functions.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
2022-04-02 08:15:12 +00:00