Commit Graph

34617 Commits

Author SHA1 Message Date
Ivan A. Melnikov
4cb3e8d467 OvmfPkg/LoongArchVirt: Add SATA support
SATA CD-ROMS are still conventionally used in many
virtual environments, so it's nice to support them
out of the box.

Tested with QEMU 9.2.3 with the following controller
and drive:

  qemu-system-loongarch64 -M virt [...]  \
    -device ahci,id=ahci0,multifunction=on,bus=pcie.0,addr=0x7 \
    -drive if=none,id=drive-sata2,media=cdrom,format=raw,aio=threads,file=/path/to/bootable.iso \
    -device ide-cd,bus=ahci0.2,drive=drive-sata2,id=sata2,bootindex=102

Signed-off-by: Ivan A. Melnikov <iv@altlinux.org>
2025-07-16 11:32:11 +00:00
Aaron Li
1f462def90 PrmPkg: Fix debug log format specifier for PhysicalAddress
The debug print incorrectly uses "%016x" to print a UINT64 PhysicalAddress.
This can cause truncation since "%x" expects UINT32.

Update the format specifier to "%016llx" to properly handle UINT64 values
and ensure correct output across all architectures.

Signed-off-by: Aaron Li <aaron.li@intel.com>
2025-07-16 07:40:17 +00:00
Ray Ni
83794b8e96 IntelFsp2Pkg/FspMultiPhaseLib: Remove EFIAPI for local function
FspMultiPhaseWorker() is a local function that's called from
FspMultiPhaseMemInitApiHandler()
and FspMultiPhaseSiInitApiHandlerV2().

Remove "EFIAPI" from its function header.

Signed-off-by: Ray Ni <ray.ni@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Ted Kuo <ted.kuo@intel.com>
Cc: Ashraf Ali S <ashraf.ali.s@intel.com>
2025-07-16 06:47:27 +00:00
Ray Ni
36b63e9fc8 IntelFsp2Pkg/FspCommonLib: Remove unused API SetFspCoreStackPointer()
Signed-off-by: Ray Ni <ray.ni@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Ted Kuo <ted.kuo@intel.com>
Cc: Ashraf Ali S <ashraf.ali.s@intel.com>
2025-07-16 06:47:27 +00:00
Gerd Hoffmann
29477c2045 OvmfPkg/AmdSvsmLib: add AmdSvsmQueryProtocol
AmdSvsmQueryProtocol() is a helper function for QUERY_PROTOCOL
calls of the core svsm protocol.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2025-07-16 00:09:22 +00:00
Gerd Hoffmann
a72e6fe7ab UefiCpuPkg/AmdSvsmLib: add AmdSvsmQueryProtocol
AmdSvsmQueryProtocol() is a helper function for QUERY_PROTOCOL
calls of the core svsm protocol.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2025-07-16 00:09:22 +00:00
Stanislaw Grams
bdca3681e9 Maintainers.txt: Update reviewer for OvmfPkg/Confidential Computing
Stanislaw Grams replaces Min Xu as the reviewer for patches to
OvmfPkg/Confidential Computing

Signed-off-by: Stanislaw Grams <stanislaw.grams@intel.com>
2025-07-15 16:08:16 +00:00
Tuan Phan
ac20e4398a OvmfPkg/RiscVVirt: Add PEI phase booting support
Introduce a switch to select between PEI and PEI less booting modes.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
003c888714 OvmfPkg/RiscVVirt: Add PlatformPeim module
Introduce PEIM module to support platform initialization during the
PEI phase.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
07552c31ad OvmfPkg/RiscVVirt: PrePiHobListPointerLib: Use scratch register directly
With firmware context APIs removed, store HobList pointer directly in the
scratch register for Peiless booting.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
977b68aa1e OvmfPkg/RiscVVirt: Add PlatformSecLib library
Create PlatformSecLib library to support both PEIless and PEI booting
modes.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
dbe17c79e7 UefiCpuPkg/SecCore: Add support for architectures beyond IA32 and X64
Encapsulate IA32 and X64 code under preprocessor directives to enable
module compatibility with other architectures.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
be053713c0 MdePkg: RISC-V: Add PeiServicesTablePointerLib
Based on PI 1.9, the PEI service pointer will be stored in the
scratch register.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
4d80dc68c6 MdePkg: RISC-V: Remove firmware context APIs
Eliminate the APIs using the scratch register as PI 1.9 specifies
it for the PEI service table pointer.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
2ff92cf2ae UefiCpuPkg/CpuDxeRiscV64: Retrieve booting info from SEC HOB data
The booting info is now stored in SEC HOB GUID data.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
dd36c3048f UefiCpuPkg: RISC-V: Add SEC HOB Data definition
Introduce RISC-V SEC HOB Data structure to pass boot information from
SEC phase to PEI/DXE phases.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
f53f943b59 OvmfPkg/RiscVVirt: Unlink BaseRiscVFpuLib
BaseRiscVFpuLib is deprecated.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
66189310e2 UefiCpuPkg: Remove BaseRiscVFpuLib
FPU initialization for RiscV is now handled in CpuLib,
rendering this library obsolete.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Tuan Phan
8f62819df3 MdePkg/BaseCpuLib: Add FPU initialization support for RISC-V
Enable RISC-V support for the InitializeFloatingPointUnits function.

Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
2025-07-15 05:45:15 +00:00
Sarah Walker
b762965bda ArmPkg: TimerDxe: Add support for GICv5 PPIs
GICv5 uses a different ID scheme for interrupt numbers to previous GICs; the
top bits indicate the type of interrupt (PPI/SPI/LPI). Update TimerDxe to use
the new ID scheme for GICv5. As the timer PPIs are architected for GICv5 they
should be the same on all GICv5 platforms.

Signed-off-by: Sarah Walker <Sarah.Walker2@arm.com>
2025-07-15 02:10:39 +00:00
Ard Biesheuvel
b7fdcbbeb8 ArmPkg: ArmGicDxe: Add support for GICv5
Add initial driver support for GICv5. This initial driver supports Private
Peripheral Interrupts (PPIs) and Shared Peripheral Interrupts (SPIs).

Signed-off-by: Sarah Walker <Sarah.Walker2@arm.com>
[ardb: Merge v5 support into GicV3Dxe]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2025-07-15 02:10:39 +00:00
Sarah Walker
e1ac8b32a6 ArmPkg: ArmLib: Add functions to read AA64PFR2 and check GICv5 support
Signed-off-by: Sarah Walker <Sarah.Walker2@arm.com>
2025-07-15 02:10:39 +00:00
Sarah Walker
42b30dbc03 MdePkg: Include: Add defines for AA64PFR2 system register
The AA64PFR2 system register is required to detect GICv5 support.

Signed-off-by: Sarah Walker <Sarah.Walker2@arm.com>
2025-07-15 02:10:39 +00:00
Ard Biesheuvel
bfd90d47ab ArmPkg/ArmGicV3Dxe: Make v3 driver AArch64-only
Before extending the GicV3Dxe driver with support for GICv5, make the
driver AArch64-only to avoid the need for adding support to the 32-bit
build, which would be rather pointless.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2025-07-15 02:10:39 +00:00
Levi Yun
f85c718167 MdeModulePkg/Include: change type of buffer address in ArmFfaRxTxBufferInfo
Change type of buffer address type in ArmFfaRxTxBufferInfo
so that reduce the type casting.

Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2025-07-14 11:59:38 +00:00
Levi Yun
5a2713ec2b MdeModulePkg/Library: commonize some duplicate code in ArmFfaLib
Some of code for handling Rx/Tx buffer is duplicate.
This patch commonize some of duplication routine used in
Rx/Tx buffer related functions.

Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2025-07-14 11:59:38 +00:00
Levi Yun
a7e27682cf MdeModulePkg/Library: add ArmFfaSecLib
To use Arm-FFA intereface in PeilessSec, implments
ArmFfaSecLib used by PeilessSec.
For example, communicate with TPM service using CRB over ARM-FFA
(via Tpm2DeviceLibFfa), PeilessSec need to use Arm-FFA interface.

Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2025-07-14 11:59:38 +00:00
Levi Yun
bbd810221e MdeModulePkg: Make PcdFfaTxRxPageCount a PcdsFixedAtBuild PCD
The PcdFfaTxRxPageCount can never be changed dynamically
and is configured at build time to specify the size of
the Rx/Tx buffers.

Therefore, make PcdFfaTxRxPageCount a PcdsFixedAtBuild PCD.

Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2025-07-14 11:59:38 +00:00
Levi Yun
b336d9b87a MdeModulePkg/Library: fix memory leak Rx/Tx Buffer in ArmFfaPeiLib
The commit e15fe06603
("MdeModulePkg/Library: make ArmFfaPeiLib available early PEIM stage")
uses ArmFfaPeiLib in the early PEIM stage.

However, the Rx/Tx buffer allocated in the early PEIM stage uses
temporary memory. This results in a memory leak when the temporary
memory's heap is relocated to permanent memory.

For example, if the Rx/Tx buffer memory is allocated at 0x20006000
in temporary memory, and if offset between temporary memory and
permanent is 0x40000000, then:

 - Once permanent memory installed the temporary memory at 0x20006000
   is migrated to 0x60006000.
 - However, ArmFfaPeiLib allocates new Rx/Tx buffer without freeing
   the migrated Rx/Tx buffers, i.e. the buffers at 0x60006000.

This results in a memory leak as the migrated Rx/Tx buffer area is
lost.
To address this memory leak, use the MemoryAllocationHob's name, so
that the migrated memory area will be reused as Rx/Tx buffer.

This patch also includes rename ArmFfaRxTxStmm.c to
ArmFfaStandaloneMmRxTxMap.c to keep the file name convention in
ArmFfaLib with ArmFfa{Phase}{...}.c

Fixes: e15fe06603 ("MdeModulePkg/Library: ...")
Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
Continuous-integration-options: PatchCheck.ignore-multi-package
2025-07-14 11:59:38 +00:00
Bret Barkelew
460f2705b4 SecurityPkg: Add Additional TPM Logging at DEBUG_SECURITY
This commit adds additional dumping logic to Tpm2DeviceLibDTpm,
print at DEBUG_SECURITY to aid in TPM debugging.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
Co-authored-by: Bret Barkelew <brbarkel@microsoft.com>
2025-07-14 07:25:12 +00:00
Oliver Smith-Denny
d5b8630379 SecurityPkg: Move Noisy Logs to DEBUG_SECURITY
The TPM code is currently very noisy (e.g. in a sample platform,
4,000 of the 5,700 lines printed to the serial port at DEBUG_INFO
level were from the TPM code). For TPM debugging, this is very
critical information, but for most builds it simply spams the logs
and slows down the build.

This commit moves the event log and PCR dumping to log at
DEBUG_SECURITY level.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-14 07:25:12 +00:00
Oliver Smith-Denny
1f2adcbba5 SecurityPkg: Remove/Downgrade Noisy TCG Prints
The TCG code is very noisy when a TPM is connected. This
commit downgrades some prints to verbose and removes some
others that do not have value (such as function enter and
exit prints).

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-14 07:25:12 +00:00
Oliver Smith-Denny
dbf45a870b MdePkg: Add DEBUG_SECURITY Bit in PcdDebugPrintErrorLevel
Tcg2Dxe and its libraries are currently the noisiest modules in
edk2. For a sample platform printing at INFO level, Tcg2Dxe
printed 4,000 lines out of 5,700 total lines printed.

This commit defines a DEBUG_SECURITY bit to control the debug output
of Tcg2Dxe and other security related components. Most of the output is
not useful except for deep debugging of TPM transactions, so it is
appropriate to only print when the DEBUG_SECURITY bit is present.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-14 07:25:12 +00:00
Eduardo Cuevas Farfan
a1b509c1a4 Maintainers.txt: Update reviewer for StandaloneMmPkg and UefiCpuPkg
Add ecuevasf as reviewer for StandaloneMmPkg and UefiCpuPkg

Signed-off-by: Eduardo Cuevas Farfan <eduardo.cuevas.farfan@intel.com>
2025-07-10 10:50:31 +00:00
Nate DeSimone
c2a56930a6 CryptoPkg: Add support for IA32 builds using CLANGPDB
Implements the _aulldiv() intrinsic function necessary to compile CryptoPkg
using the CLANGPDB toolchain. The existing MASM assembly implementation of
this function has been converted to NASM to enable it to be used with both
the Visual Studio and Clang compilers.

Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
2025-07-10 03:10:23 +00:00
Alok Kulkarni
a00ad45ea4 MdeModulePkg: UsbBusDxe Reset USB port GetPortStatus returns device error.
During USB device enumeration, issuing a hot reset on a port is skipped if
there is a reset change status already detected on the port. This can
happen when enumerating devices after a host controller soft reset (which
drives a hot reset down the ports).

However, in certain cases an attached device may not be responsive even if
the reset change and connection status bits are set. For e.g., according
to xHCI spec section 4.19.5.1 the port reset change bits can be set when
a hot reset driven on the port transitions to a warm reset and completes
with errors. For such instances it is worthwhile to force a hot reset
during enumeration to try and recover unresponsive devices.

During enumeration check whether querying port status returns
EFI_DEVICE_ERROR and try a port reset if there is a device attached to
the port.

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2025-07-10 09:06:35 +08:00
Nate DeSimone
7c2e2d4f1a BaseTools/toolsetup.bat: Set IASL_PREFIX when using Mingw-w64 on Windows
If IASL_PREFIX is not already defined, then edksetup.bat should set it.
This unifies the behavior between Visual Studio and Mingw-w64.

Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
2025-07-10 00:45:13 +00:00
Nate DeSimone
e2a30df32e BaseTools/tools_def: Use MSVC ABI for CLANGPDB Targets
Update the CLANGPDB toolchain configuration to use MSVC ABI targets and
retain frame pointers in generated code. This improves compatibility with
the Microsoft Debug Interface Access (DIA) SDK and improves debuggability
with any debugger that uses the Microsoft PDB parser, for example the Visual
Studio debugger or windbg.

Without these changes, code generated by the Clang compiler will have a mix
of calling conventions. With the current configuration, any function declared
with EFIAPI will use the Microsoft x64 calling convention. However, the default
calling convention will be the SysV x64 calling convention. This mixing of
calling conventions prevents debuggers from decoding the call stack.

With these changes, only the Microsoft x64 calling convention will be used.
These modifications enable debuggers to properly parse and
display call stacks on binaries built with the CLANGPDB toolchain.

The changes include:
- Switch from GNU ABI target (*-unknown-windowsl-gnu) to MSVC ABI targets
  (*-pc-windows-msvc) for both IA32 and X64 architectures.
- Remove -fseh-exceptions as not supported.
- Add -fno-omit-frame-pointer as required for call stack.
- Undefine the _MSC_VER macro, and define the __GNUC__ macro, so that
  pre-processor conditionals will continue to function as expected.

Co-authored-by: Muhammad Mustafa <muhammad.mustafa@intel.com>
Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
2025-07-09 22:06:53 +00:00
Michael Kubacki
965a754f19 Revert "OvmfPkg: Pass command-line args to PR Eval"
A change was made to the following pytool releases to prevent a
platform from needing to include additional logic to consider
command-line build variable parameters for PR evaluation.

- edk2-pytool-library v0.23.4
- edk2-pytool-extensions v0.29.11

Commit 33e58db was added as a workaround, but that is no longer
needed after these pytool updates, so revert it.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-07-09 18:09:59 +00:00
Michael Kubacki
b61c476329 pip-requirements.txt: Update pytools
Updates pytools to the latest releases to include changes for PR
evaluation that include command-line build variable arguments by
default in PR evaluation.

Versions updated:

- edk2-pytool-library v0.23.4
- edk2-pytool-extensions v0.29.11

Full release details are available on the pytool release pages:

- https://github.com/tianocore/edk2-pytool-library/releases
- https://github.com/tianocore/edk2-pytool-extensions/releases

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-07-09 18:09:59 +00:00
Ray Ni
27599905c0 edk2/Maintainers.txt: Remove Ray for EmulatorPkg
Signed-off-by: Ray Ni <ray.ni@intel.com>
2025-07-09 15:25:50 +00:00
Ray Ni
33a4ea1824 edk2/Maintainers.txt: Replace Ray with Jacek for MdeModulePkg/Device
Signed-off-by: Ray Ni <ray.ni@intel.com>
2025-07-09 15:25:50 +00:00
Hongbin1 Zhang
e44cb970da StandaloneMmPkg: Split MmEvent to a separate Driver
Due to PEIM will do following MM notify event under API mode:
1.MM end of dxe notify Event
2.MM ready to lock notify Event
3.MM ready to boot notify Event
4.MM exit boot services notify Event
It will conflict with the notify event in MmCommunicationDxe.inf
on edk2 bootloader under API mode, so split following MmEvent to
MmCommunicationNotifyDxe.inf, and avoid run this driver under API
mode.

Signed-off-by: Hongbin1 Zhang <hongbin1.zhang@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Dun Tan <dun.tan@intel.com>
Cc: Khor Swee Aun <swee.aun.khor@intel.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
2025-07-09 09:42:18 +00:00
Aaron Pop
c9f01e3566 UefiCpuPkg: Apply ReadOnly on Ap loop buffers.
In the MpInitLib, pages are allocated for
the APs, and data is copied into them. Depending
on the allocation type, Nx needs to be removed
from the pages to allow the processors to execute.

Additionally, ReadOnly needs to be applied to the
pages after they have been filled with the
instructions that the APs need to execute.

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
Co-authored-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-09 07:39:31 +00:00
Aaron Pop
5f2e0c8c43 MdeModulePkg: MdeModulePkg.dec update PcdDxeNxMemoryProtectionPolicy.
Update the comments for PcdDxeNxMemoryProtectionPolicy
which contained old information.

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
Co-authored-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-09 07:39:31 +00:00
Oliver Smith-Denny
2d69507a4d MdeModulePkg: Leak Memory if Not RW on FreePages
Currently, if the DebugClearMemory bit is set in the
PcdDebugPropertyMask, CoreConvertPagesEx will attempt to write
a pattern to the pages being freed. However, it does not check
that the page is writeable, which will cause a page fault if not.
Furthermore, if NX protections are not enabled, the core does not
ensure that any freed pages are RW, which is the state expected
when they are allocated next. If they are not RW, the allocating
driver will crash trying to use them.

This patch updates the page freeing code to query the memory
attributes protocol, if present, for the attributes. If this call
fails or the attributes are not RW at a minimum, the core leaks
the memory (returning success to the caller). If the memory
attribute protocol is not present (either because a platform doesn't
produce it or it is before the protocol has been produced, the core
continues with freeing memory. This is either before the CPU Arch
protocol is available (so drivers can't change memory attributes) or
otherwise matches existing behavior. This was deemed the best
approach to let memory that can't be guaranteed to be RW leak
instead of letting a driver crash when allocating it. It was deemed
less brittle to simply leak the memory instead of attempting to
change the attributes.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-07-09 00:59:56 +00:00
Chasel Chiu
0425158a94 Maintainers.txt: Remove Maintainers
Remove unavailable maintainer for
UefiPayloadPkg - Linus Liu

Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
2025-07-08 20:45:43 +00:00
Akshay Behl
49b7a5e961 ArmVirtPkg: Remove unnecessary dependency on EmbeddedPkg
These libraries required dependency on EmbeddedPkg for the
FdtHob which has been moved to MdePkg. This dependency is not
needed anymore and  can now be removed.

Signed-off-by: Akshay Behl <cap2k4@rivosinc.com>

Co-authored-by: Dhaval Sharma <dhaval@rivosinc.com>
2025-07-08 18:35:46 +00:00
Akshay Behl
6cb0553387 OvmfPkg/RiscVVirt: Remove unnecessary PCD
Signed-off-by: Akshay Behl <cap2k4@rivosinc.com>

Co-authored-by: Dhaval Sharma <dhaval@rivosinc.com>
2025-07-08 18:35:46 +00:00
Akshay Behl
34d609402b UefiCpuPkg/CpuTimerDxeRiscV64: Use DT based timer frequency in Timer driver
There is GetPerformanceCounterProperties() that relies
on Device Tree to fetch timer frequency and removes the
dependency from the PCDs, use that instead.

Signed-off-by: Akshay Behl <cap2k4@rivosinc.com>

Co-authored-by: Dhaval Sharma <dhaval@rivosinc.com>
2025-07-08 18:35:46 +00:00