summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-09-20BaseTools: Update RETURN_ERROR Macro in BaseTypes.hAbdul Lateef Attar1-1/+3
This patch is to sync RETURN_ERROR macro with the MdePkg/Include/Base.h Ref: 1a89d9887f MdePkg:Update Return Error Macro in Base.h Fixing RETURN_ERROR macro. It is causing problem in Coverity Static analysis tool as we are directly converting the UINT value to INTN. Changing value from UINT to INTN might cause problema Here we know that the values would not be in loss of data. To increase the code quality and increase the static tool analysis score we have to change it Cc: Rebecca Cran <rebecca@bsdio.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Bob Feng <bob.c.feng@intel.com> Cc: Yuwei Chen <yuwei.chen@intel.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-20Set PcdSerialClockRate from SerialPortInfo in UefiPayloadEntryMatt DeVillier2-0/+9
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
2024-09-20UefiCpuPkg/MtrrLib: MtrrLibIsMtrrSupported always return FALSE in TD-GuestMin M Xu1-0/+7
Currently, TDX exposes MTRR CPUID bit to TDX VM. So based on the CPUID, the guest software components (OVMF/TDVF and guest kernel) will access MTRR MSRs. One problem for guest to use of MTRR is the change of MTRR setting needs to set CR0.CD=1, which will case #VE for TDX. For Linux kernel, there is a mechanism called SW defined MTRR introduced by the patch https://lore.kernel.org/all/20230502120931. 20719-4-jgross@suse.com/. If this is integrated for TDX guest, then Linux kernel will not access any MTRR MSRs. So we update MtrrLibIsMtrrSupported() to always return false for TD-Guest, then TDVF will not access MTRR MSRs at all. Cc: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Binbin Wu <binbin.wu@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
2024-09-19Maintainers.txt: Add Sami Mujawar as maintainer for Arm modulesSami Mujawar1-3/+4
I intend to help with maintenance of the following Arm modules: ArmPkg/ ArmPlatformPkg/ ArmVirtPkg/ MdePkg/Include/Library/ArmLib.h Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
2024-09-18DynamicTablesPkg: Adds ACPI SSDT HPET table generatorAbdul Lateef Attar4-0/+462
Adds X64 ACPI SSDT HPET table generator library. Updates acpi standard table enum with hpet. Generate ACPI HPET device as per specification. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-18DynamicTablesPkg: Adds ACPI HPET table generatorAbdul Lateef Attar8-1/+384
Adds X64 ACPI HPET table generator library. Updates acpi standard table enum with hpet. Updates X64 namespace object. Updates the object parser. Updates the Readme. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-18MdeModulePkg/TerminalDxe: Add VTUTF8 to Putty function key mapPhil Noh2-6/+9
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4848 This patch is to support VTUTF8 type for Putty function key map. In Putty, it is required for translating a stream of Unicode characters for function keys on UTF8 correctly. Signed-off-by: Phil Noh <Phil.Noh@amd.com>
2024-09-18BaseTools/tools_def ARM: Disable stack protector with CLANGDWARFArd Biesheuvel1-1/+1
Clang insists on emitting a movt/movw pair into the function pro/epilogues to load the stack protector reference value from memory, and this movt/movw pair may turn out non-consecutively in the instruction stream. The resulting symbol reference cannot be fixed up by GenFw, as PE/COFF always treats movt/movw as a pair, and the ELF-to-PE conversion will therefore fail. Just disable the stack protector when using CLANGDWARF. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-09-17Maintainers: Remove Ard Biesheuvel from all packagesArd Biesheuvel1-8/+0
As a Tianocore maintainer, I am responsible for the packages that I maintain, and am therefore expected to respond in a timely manner to pull requests affecting those packages. With the updated GitHub-based workflow, this now results in daily GitHub spam inviting me to respond to each PR as they are created by the respective authors. However, I strongly feel that with responsibility should come with delegated authority as well, and this has been stripped away over the past couple of years. When other maintainers fail to respond (which has become more common recently), or when there are glitches in the CI, I no longer have any means to take charge and correct the situation. The upshot is that I am struggling to do my work as a maintainer, spending 90% of my time dealing with GitHub CI technicalities, or being blocked on other work that is completely ignored by the other maintainers. This is a waste of my time, and therefore, of my employer's money, so I feel I can no longer justify my involvement. I am therefore stepping down as a maintainer. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-09-17UefiCpuPkg/AmdSmmCpuFeaturesLib: Skip SMBASE configurationPhil Noh2-5/+28
This patch is to avoid configure SMBASE if SmBase relocation has been done. If gSmmBaseHobGuid found, means SmBase info has been relocated and recorded in the SmBase array. No need to do the relocation in SmmCpuFeaturesInitializeProcessor(). Signed-off-by: Phil Noh <Phil.Noh@amd.com>
2024-09-16UefiPayloadPkg: Move FADT check to consumer coode.Chasel Chiu3-9/+7
ACPI FADT HW register interface fields are optional but current UPL common entry code made it as mandatory which caused compatibility issue on some platforms. Solution is to move those FADT HW register fields check code to consumer code so only ASSERT when those fields are consumed with error. Currently only AcpiTimerLib and ResetSystemLib consuming those register fields so if platforms configured UPL to different library instances the FADT HW register fields are not consumed thus will not cause ASSERT. Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
2024-09-16RedfishPkg/Include: move protocol version definition to protocol headerNickle Wang2-5/+8
Move protocol interface version definition to public protocol header file. So, driver can decide which version it is supported. Signed-off-by: Nickle Wang <nicklew@nvidia.com>
2024-09-16ArmPkg: Avoid building ArmCrashDumpDxe on ARMArd Biesheuvel1-1/+1
For reasons that are unclear, the Linaro EDK2 CI is throwing errors when building ArmCrashDumpDxe with CLANGDWARF, as the resulting build contains non-adjacet MOVW/MOVT pairs, which cannot be relocated correctly in PE/COFF. Let's build it only for AARCH64 - its utility on ARM is doubtful anyway. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-09-15NetworkPkg/HttpBootDxe: Correctly uninstall HttpBootCallbackProtocolMike Beaton1-2/+10
The existing HttpBootUninstallCallback was passing the wrong handle (the PrivateData root controller handle, not the correct child IPv4 or IPv6 NIC controller handle; cf HttpBootInstallCallback for matching logic) and was also passing the address of a pointer to the interface to be removed rather than the pointer itself, so always failed with EFI_NOT_FOUND. This resulted in the prior behaviour that if multiple HTTP boot attempts were made, on the second and subsequent attempts the instance of this protocol installed by the first attempt would be re-used. As long as only one driver using the protocol is installed, this ends up producing the same results as if the protocol had been uninstalled then reinstalled correctly. After this commit, the protocol is installed at the start of an HTTP boot attempt and uninstalled it at the end of it (assuming nothing else has accessed the protocol in a way which blocks the uninstall). It might seem attractive to add an ASSERT to confirm when debugging that the uninstall succeeds as expected, but this is recommended against because uninstallation of protocol interfaces is allowed to fail under the UEFI model: https://edk2.groups.io/g/devel/message/117469. An ASSERT could therefore arise from a sequence of events which is perfectly valid - or at least is out of the control of this driver. Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>
2024-09-14UefiPayloadPkg: Handle simple reserved ranges from DTDhaval1-0/+13
DT has a way to provide reserved images in a simpler tabular manner. UPL should be able to support that. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14MdePkg: Add reserved mem fdt helpersDhaval2-0/+75
Devicetree defines a short hand way of defining reserved memory ranges. Add APIs to access such nodes Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Add support for Root bridge parserDhaval7-42/+310
In order to properly enable multisegment RB, we need to grab ecam data from the FDT for each bridge. Current UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES struct from MdeModulePkg does not include definition for ecam. In order to maintain backward compatibility and also avoid diverging too much from core, we are going to define a new HOB for UPL segment information and pass it to GetPciSegmentInfo function. Ths function then grabs specifically ecam info from the segment hob along with other rb specific information to create final RB info required by multi segment PCI driver. Additionally we would like to support legacy implementations which rely on ACPIBoard HOB to fill up segment info. So if UplSegmentInfo Hob is not found we try and look for other hob. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com> Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
2024-09-14UefiPayloadPkg: Add support for Special Purpose memoryDhaval1-0/+5
We need to let UEFI know that there are cetain memory types which are special purpose (CXL/HBM) etc and we may want to avoid using them for UEFI purposes. Hence UPL needs to know about such memory types. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Remove unnecessary ACPI checksDhaval1-5/+5
We do not need to go deep into verifying all ACPI tables at this stage. TODO: Just a simple ACPI header signature check should be good enough. For now just commenting out asserts that mandate one to have various tables which is not applicable to all platforms. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Enable RiscV64 entry point to UPLDhaval3-0/+112
As per specification we are going to accept only one argument at the entry point which is FDT pointer. Grab that and call the entry point. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UniversalPayload: Add RISC-V support for UPL PCDsDhaval3-3/+3
Expose UPL required PCDs for RISC-V Arch Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Parse fdt and create smbios tableDhaval1-11/+23
Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Bugfix: Do not parse NULL nodesDhaval1-0/+2
Not every node has compatible property; avoid parsing nodes which return NULL. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-14UefiPayloadPkg: Handle ordering issue with option nodeDhaval1-3/+6
Option node provides info that is to be consumed by during metadata creation for other nodes like root bridge; pci-enum-done etc. Handle that dependency by storing option values in a variable and then apply it during post processing. Ideally such cross node dependency should be avoided in design. Scope for futher improvements. Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
2024-09-13OvmfPkg/CpuHotplugSmm: delay SMM exitGerd Hoffmann1-0/+5
Let APs wait until the BSP has completed the register updates to remove the CPU. This makes sure all APs stay in SMM mode until the CPU hot-unplug operation is complete, which in turn makes sure the ACPI lock is released only after the CPU hot-unplug operation is complete. Some background: The CPU hotplug SMI is triggered from an ACPI function which is protected by an ACPI lock. The ACPI function is in the ACPI tables generated by qemu. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2024-09-13OvmfPkg: Use TdInfo instead of fw_cfg to get cpu count in TDVFCeping Sun3-2/+16
Currently TDVF gets cpu count information via fw_cfg, but this information can also be retrieved by calling of TdCall.TdInfo. And TdCall is responded by tdx-module which is trust. So, from the security perspective we shall use TdCall.Tdinfo instead of fw_cfg. Cc: Erdem Aktas <erdemaktas@google.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Min Xu <min.m.xu@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Elena Reshetova <elena.reshetova@intel.com> Signed-off-by: Ceping Sun <cepingx.sun@intel.com>
2024-09-13OvmfPkg/RiscVVirtQemu: Remove non-needed !include lineMike Beaton1-1/+0
RiscVVirt.dsc.inc includes NetworkPkg/NetworkLibs.dsc.inc. However RiscVVirt.dsc.inc is only ever included by RiscVVirtQemu.dsc, which has already included NetworkPkg/Network.dsc.inc, a general include file which brings in all the required includes for Network features at once, including NetworkPkg/NetworkLibs.dsc.inc. Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>
2024-09-13MdePkg/DxeRngLib: Add gEfiRngAlgorithmArmRndr to the secure algorithmsPierre Gondois2-0/+10
DxeRngLib iterates over a list of secure algorithms before trying to use the default algorithm provided by the Rng protocol. Add gEfiRngAlgorithmArmRndr to this list. The algorithm represented by this GUID is a secure DRBG of an unknown type, implemented by the aarch64 RNDR instruction. On AARCH64 platform, use the RNDR instruction as the first option if it is available. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
2024-09-13MdePkg/DxeRngLib: Use PcdEnforceSecureRngAlgorithms for default algorithmPierre Gondois2-5/+10
Use PcdEnforceSecureRngAlgorithms to allow using the Rng protocol with the default algorithm. All previous call to the Rng protocol are requesting a secure Rng algorithm. Not specifying the Rng algorithm GUID to use is considered unsecure. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
2024-09-13MdePkg/DxeRngLib: Refactor Rng algorithm selectionPierre Gondois2-31/+158
Add a library constructor which: - locate the RNG prototocol and keep a reference to it in order to avoid locating it multiple times (for each random number generation) - check which secure algorithm is available on the platform. This avoids to try each secure algorithm until finding one available for each random number generation call. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
2024-09-13MdePkg: Move PcdEnforceSecureRngAlgorithms from NetworkPkgPierre Gondois3-7/+7
The PcdEnforceSecureRngAlgorithms Pcd enforces the use of RNG algorithms defined by the UEFI spec. To re-use the Pcd in other packages and have a generic mean to control the usage of unsecure algorithms, move the Pcd to the MdePkg. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
2024-09-13MdePkg DebugLib: Enable FILE NAME as DEBUG ASSERT for GCC12Chun-Yi Lee1-2/+2
Using __FILE_NAME__ is useful for reducing the size of debug image and it's also good for reproducable builds. The gcc-12 also supported this macro. Ref: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=1a9b3f04c11eb467a8dc504a37dad57a371a0d4c This patch removed the checking of __clang__ when using __FILE_NAME__. References: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42579 Signed-off-by: Chun-Yi Lee <jlee@suse.com>
2024-09-13NetworkPkg/HttpBootDxe: Resume an interrupted boot file download.Leandro Becker6-22/+252
When the boot file download operation is interrupted for some reason, HttpBootDxe will use HTTP Range header to try resume the download operation reusing the bytes downloaded so far. Signed-off-by: Leandro Gustavo Biss Becker <lbecker@positivo.com.br>
2024-09-13MdePkg/Http11.h: Add HTTP header definitions.Leandro Becker1-0/+28
Added HTTP header definitions for the following headers: "Content-Range", "Last-Modified" and "If-Unmodified-Since" Signed-off-by: Leandro Gustavo Biss Becker <lbecker@positivo.com.br>
2024-09-13MdeModulePkg: Fix buffer overflow in MergeMemoryMapKen Lautner1-2/+5
Check that the next map entry is valid before dereferencing to merge the guard pages. If the final entry is at the end of a page with no valid page following it, then this can cause an access violation. Signed-off-by: Kenneth Lautner <kenlautner3@gmail.com>
2024-09-13MdePkg: Remove Old Stack Check Lib ImplementationOliver Smith-Denny5-115/+0
Now that the new stack check lib implementation is being used everywhere, remove the old one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13BaseTools: Add Stack Cookie Support to MSVC and GCC IA32/X64/ARM/AARCH64Taylor Beebe1-31/+34
This patch directs MSVC and GCC to build stack cookie support into binaries. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13BaseTools: Update Stack Cookie LogicTaylor Beebe3-1/+54
This patch updates the GenC logic to generate a random stack cookie value for the stack check libraries. These random values improve security for modules which cannot update the global intrinsics. If the stack cookie value is randomized in the AutoGen.h file each build, the build system will determine the module/library must be rebuilt causing effectively a clean build every time. This also makes binary reproducibility impossible. This patch updates the early build scripts to create 32 and 64-bit JSON files in the build output directory which each contain 100 randomized stack cookie values for each bitwidth. If the JSON files are already present, then they are not recreated which allows them to be stored and moved to other builds for binary reproducibility. Because they are in the build directory, a clean build will cause the values to be regenerated. The logic which creates AutoGen.h will read these JSON files and use a hash of the module GUID (the hash seed is fixed in Basetools) to index into the array of stack cookie values for the module bitwidth. This model is necessary because there isn't thread-consistent data so we cannot use a locking mechanism to ensure only one thread is writing to the stack cookie files at a time. With this model, the build threads only need to read from the files. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13UnitTestFrameworkPkg: Add StackCheckLibOliver Smith-Denny2-7/+2
Add StackCheckLib for Target and Host based unit tests. Host based unit tests are treated specially, because MSVC built host based unit tests use the MSVC C runtime lib to provide the stack cookie definitions, but GCC built host based unit tests use our implementation, as we do not link against a C runtime lib that provides the definitions. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13UefiPayloadPkg: Add StackCheckLibOliver Smith-Denny1-0/+3
Add null implementation of StackCheckLib Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13UefiCpuPkg: Add StackCheckLibOliver Smith-Denny1-2/+8
SecCore and SecCoreNative require StackCheckLib and so the NULL instance is linked against them here. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13StandaloneMmPkg: Add StackCheckLibOliver Smith-Denny1-2/+0
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13SourceLevelDebugPkg: Add StackCheckLibOliver Smith-Denny1-0/+4
Add null implementation of StackCheckLib Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13ShellPkg: Add StackCheckLibOliver Smith-Denny1-3/+3
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13SignedCapsulePkg: Add StackCheckLibNullOliver Smith-Denny1-4/+4
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13SecurityPkg: Add StackCheckLibNullOliver Smith-Denny1-3/+4
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13RedfishPkg: Add StackCheckLibNullOliver Smith-Denny1-4/+4
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13PrmPkg: Add StackCheckLibNullOliver Smith-Denny1-7/+4
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13PcAtChipsetPkg: Add StackCheckLibOliver Smith-Denny1-0/+4
Add Null implementation of StackCheckLib. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-13OvmfPkg: Add StackCheckLibNullOliver Smith-Denny11-7/+25
Remove the old stack check lib now that MdeLibs.inc includes the new one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>