134 Commits

Author SHA1 Message Date
Mikhail Krichanov
2601648b32 Ring3: Refactored out CoreRsp and UserStackTop. 2025-04-14 13:12:14 +03:00
Mikhail Krichanov
79d8607366 Ring3: Refactored out gCoreSysCallStackTop and gRing3CallStackTop. 2025-04-14 13:06:18 +03:00
Mikhail Krichanov
99b902bde1 Ring3: Refactored User and SysCall stacks allocation. 2025-04-14 13:06:18 +03:00
Mikhail Krichanov
f6b75158a4 SysCall: Refactored Core wrappers to allow support for multiple User space drivers. 2025-04-14 13:06:17 +03:00
Mikhail Krichanov
6ad66cc634 Ring3: Split Page Table template construction and initialization,
removed ChangeUefiImageRing(), added GetUefiImageRecord().
2025-04-14 12:54:02 +03:00
Mikhail Krichanov
51447148b0 Ring3: Added support for separate User address space. 2025-04-14 12:50:53 +03:00
Mikhail Krichanov
4403a40236 Ring3: Added support for USER attribute in .fdf files. 2025-04-14 12:50:51 +03:00
Mikhail Krichanov
099a6e9e64 MdeModulePkg: Fixed MdeModulePkg compilation. 2025-04-14 11:36:10 +03:00
Mikhail Krichanov
cac7056c3e Ring3: Moved InitializeRing3() to SysCall directory. 2025-04-14 11:36:10 +03:00
Mikhail Krichanov
e3f3d64eb5 Ring3: Added SysCallGetVariable wrapper. 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
cf3bb4d68b Ring3: Refactored exception handling. 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
6c8b19286d Ring3: Forbade Ring3 accsess to all ports but for UART
to allow DEBUG printing.
2025-04-14 11:36:09 +03:00
Mikhail Krichanov
20722176d3 Ring3: Refactored out AllocateRing3Copy(). 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
1a1afc8ce7 Ring3: Added PrepareRing3Interface(). 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
d11ff4bebd Ring3: Some refactoring. 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
13d7a33127 Ring3: Refactored AllocateRing3CopyPages() and mUserDriverBinding. 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
f0fb2003a2 Ring3: Refactored CallRing3(). 2025-04-14 11:36:09 +03:00
Mikhail Krichanov
702adc6292 Ring3: Refactored Ring3 initialization. 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
27c04bb224 Ring3: Moved Ring3UefiBootServicesTableLib to Ring3Dxe. 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
8a16ce73a7 Ring3: Refactored EnterUserImage() into CallRing3(). 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
2392881e22 Ring3: Added Ring3EntryPoint draft. 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
b0c91ce70c Ring3: Refactored out AllocateRing3Pages() BootService. 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
926f1b1b69 Ring3: Moved SysCall code to DxeCore. 2025-04-14 11:23:05 +03:00
Mikhail Krichanov
e170598395 Ring3: Added helper function AllocateRing3Pages() and
draft of Ring3LocateProtocol().
2025-04-14 11:23:05 +03:00
Mikhail Krichanov
5bc84f06c0 Ring3: Fixed bug in calling Boot Service and did some refactoring. 2025-04-14 11:23:04 +03:00
Mikhail Krichanov
2fe010f40b Ring3: Added CoreSysCallStack. 2025-04-14 11:23:04 +03:00
Mikhail Krichanov
e36fd7b639 Ring3: Added SYSCALL draft. 2025-04-14 11:23:04 +03:00
Mikhail Krichanov
6f854f19e9 Ring3: Fixed LibraryConstructors' initialization and
allowed user to access ports.
2025-04-14 11:23:04 +03:00
Mikhail Krichanov
51e2c2a3e8 Ring3: Added EnterUserImage(). 2025-04-14 11:23:01 +03:00
Mikhail Krichanov
2fa2894bbd Ring3: Added GetMemoryAttributes() into EFI_CPU_ARCH_PROTOCOL. 2025-04-14 11:21:17 +03:00
Mikhail Krichanov
62eb73d711 Ring3: Added IsUserImage field into LOADED_IMAGE_PRIVATE_DATA structure. 2025-04-14 11:21:17 +03:00
Mikhail Krichanov
33f15b44de Ring3: Added EFI_MEMORY_USER attribute. 2025-04-14 11:21:14 +03:00
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
Marvin Häuser
ec35a44c1e MdeModulePkg/DxeCore: Re-use ImageIsFromFv for memory protection 2025-04-07 12:24:27 +03:00
Mikhail Krichanov
51c4b78146 Revert "MdeModulePkg: Enable forward edge CFI in mem attributes table"
This reverts commit e4ef609319236a018c60b84f68d9d923c4ba383e.
2025-04-07 12:24:27 +03:00
Mikhail Krichanov
20dd836214 MdeModulePkg/Core/Dxe: Integrate CPU Architectural producer
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3223

In the current design, memory protection is not available till CpuDxe
is loaded. To resolve this, introduce CpuArchLib to move the
CPU Architectural initialization to DxeCore.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Vitaly Cheptsov <vit9696@protonmail.com>
Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
2025-04-07 12:23:28 +03:00
Marvin Häuser
f4778d6fdd EmulatorPkg: Fix some image loader related issues 2025-04-07 12:13:58 +03:00
Mikhail Krichanov
09a0c067d0 SecurePE: Replaced old PE loader with Secure one. 2025-04-07 12:12:35 +03:00
Ken Lautner
559affab2e MdeModulePkg: Fix redundant call to RestoreTpl()
Comments out a redundant call to RestoreTpl(). While this does not
technically violate spec on raise/restore TPL, TPL should already be at
the specified level. This extra call introduces an asymmetry between
RaiseTpl and RestoreTpl calls, which makes analysis of TPL correctness
more difficult and hampers certain non-standard TPL usages that some
platforms require.  Additionally, the two TPL variables were renamed to
provide context for each of them.

Signed-off-by: Kenneth Lautner <kenlautner3@gmail.com>
2024-09-04 00:53:54 +00:00
Dongyan Qian
a3aab12c34 MdeModulePkg: Dxe: add LOONGARCH64 to mMachineTypeInfo
This fixes messages like:
"Image type X64 can't be loaded on <Unknown> UEFI system"

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Chao Li <lichao@loongson.cn>
Signed-off-by: Dongyan Qian <qiandongyan@loongson.cn>
Reviewed-by: Chao Li <lichao@loongson.cn>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2024-02-02 01:52:58 +00:00
Michael D Kinney
c5e702e45a MdeModulePkg/Core/Dxe: Initialize GCD before RT memory allocations
Update the DxeMain initialization order to initialize GCD
services before any runtime allocations are performed.  This
is required to prevent runtime data fragmentation when the
UEFI System Table and UEFI Runtime Service Table are allocated
before both the memory and GCD services are initialized.

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Aaron Li <aaron.li@intel.com>
Cc: Liu Yun <yun.y.liu@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2024-01-30 18:30:02 +00:00
Jeff Brasen
aa8431822b MdeModulePkg/DxeCore: Allow relocation of images with large address
Add PCD to control if modules with start addresses in PE/COFF > 0x100000
attempt to load at specified address.
If a module has an address in this range and there is untested memory
DxeCore will attempt to promote all memory to tested which bypasses any
memory testing that would occur later in boot.

There are several existing AARCH64 option roms that have base addresses
of 0x180000000.

Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
Reviewed-by: Ashish Singhal <ashishsingha@nvidia.com>
Message-Id: <bd36c9c24158590db2226ede05cb8c2f50c93a37.1684194452.git.jbrasen@nvidia.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2023-10-31 14:40:50 +00:00
Ard Biesheuvel
6405cd0304 MdeModulePkg: Enable forward edge CFI in mem attributes table
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4405

The memory attributes table has been extended with a flag that indicates
whether or not the OS is permitted to map the EFI runtime code regions
with strict enforcement for IBT/BTI landing pad instructions.

Given that the PE/COFF spec now defines a DllCharacteristicsEx flag that
indicates whether or not a loaded image is compatible with this, we can
wire this up to the flag in the memory attributes table, and set it if
all loaded runtime image are compatible with it.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
Reviewed-by: Oliver Smith-Denny <osde@linux.microsoft.com>
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2023-04-07 13:18:38 +00:00
Andrei Warkentin
db0a3087a5 MdeModulePkg: Dxe: add RISCV64 to mMachineTypeInfo
This fixes messages like:
"Image type AARCH64 can't be loaded on <Unknown> UEFI system"

Cc: Daniel Schaefer <git@danielschaefer.me>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com>
2023-03-08 18:10:34 +00:00
Michael Kubacki
1096a9b04b MdeModulePkg: Fix imbalanced debug macros
Updates debug macros in the package that have an imbalanced number
of print specifiers to arguments. These changes try to preserve
what was likely intended by the author. In cases information was
missing due to the bug, the specifier may be removed since it was
not previously accurately printing the expected value.

Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2022-09-09 01:42:39 +00:00
Michael Kubacki
1436aea4d5 MdeModulePkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the MdeModulePkg package

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07 17:24:28 +00:00
Michael D Kinney
87000d7708 MdeModulePkg: Change use of EFI_D_* to DEBUG_*
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3739

Update all use of EFI_D_* defines in DEBUG() macros to DEBUG_* defines.

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07 17:24:28 +00:00