Michael D Kinney
47719926e8
OvmfPkg: 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: Ard Biesheuvel <ardb@kernel.org >
2021-12-07 17:24:28 +00:00
Michael D Kinney
e1e7306b54
OvmfPkg/Library/ResetSystemLib: Fix Microvm VS2019 NOOPT build issue
...
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3731
Fix VS2019 NOOPT build issues with OvmfPkg/Microvm/MicrovmX64.dsc
by fixing typecast of MICROVM_GED_MMIO_BASE_REGS to a VOID *.
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com >
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com >
2021-11-12 19:32:48 +00:00
Michael D Kinney
a92559671a
OvmfPkg/Xen: Fix VS2019 build issues
...
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3722
Fix VS2019 NOOPT build issues related to converting
a larger integer value to a smaller integer value.
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Julien Grall <julien@xen.org >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-11-11 22:46:59 +00:00
Michael D Kinney
fd42dcb1fc
OvmfPkg: Reproduce builds across source format changes
...
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3688
Use DEBUG_LINE_NUMBER instead of __LINE__.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Michael Kubacki <michael.kubacki@microsoft.com >
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
Tested-by: Michael Kubacki <michael.kubacki@microsoft.com >
2021-11-08 18:01:35 +00:00
Abner Chang
26aa241d2f
OvmfPkg/QemuFwCfgLibMmio: Add RISC-V arch support
...
Signed-off-by: Abner Chang <abner.chang@hpe.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Daniel Schaefer <daniel.schaefer@hpe.com >
Cc: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Daniel Schaefer <daniel.schaefer@hpe.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Jiewen Yao <jiewen.yao@intel.com >
2021-10-14 06:25:52 +00:00
Abner Chang
f8d0501ded
ArmVirtPkg/QemuFwCfgLib: Relocate QemuFwCfgLib to OvmfPkg
...
Relocate QemuFwCfgLib to OvmfPkg/Library/QemuFwCfgLib and rename
it to QemuFwCfgLibMmio, this library is leverage by both ARM and
RISC-V archs.
Signed-off-by: Abner Chang <abner.chang@hpe.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Leif Lindholm <leif@nuviainc.com >
Cc: Sami Mujawar <sami.mujawar@arm.com >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Daniel Schaefer <daniel.schaefer@hpe.com >
Cc: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Daniel Schaefer <daniel.schaefer@hpe.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Jiewen Yao <jiewen.yao@intel.com >
2021-10-14 06:25:52 +00:00
Gerd Hoffmann
55f47d2299
OvmfPkg/Microvm: wire up serial console, drop super-io
...
Microvm has no LPC bridge, so drop the PciSioSerialDxe driver.
Use SerialDxe instead, with ioport hardcoded to 0x3f8 aka com1 aka ttyS0.
With this tianocore boots to uefi shell prompt on the serial console.
Direct kernel boot can be used too.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3599
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-10-05 10:55:39 +00:00
Gerd Hoffmann
2c467c9be2
OvmfPkg/Microvm: BdsPlatform: PciAcpiInitialization tweak.
...
Nothing to do here ;)
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3599
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-10-05 10:55:39 +00:00
Gerd Hoffmann
1d3e89f349
OvmfPkg/ResetSystemLib: add driver for microvm
...
Uses the generic event device to reset and poweroff.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3599
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-10-05 10:55:39 +00:00
Stefan Berger
b8675deaa8
OvmfPkg: Handle TPM 2 physical presence opcodes much earlier
...
Handle the TPM 2 physical presence interface (PPI) opcodes in
PlatformBootManagerBeforeConsole() before the TPM 2 platform hierarchy
is disabled. Since the handling of the PPI opcodes may require inter-
action with the user, initialize the keyboard before handling PPI codes.
Cc: Rebecca Cran <rebecca@bsdio.com >
Cc: Peter Grehan <grehan@freebsd.org >
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: Min Xu <min.m.xu@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-09-30 00:00:08 +00:00
Stefan Berger
499c4608b1
OvmfPkg/TPM PPI: Connect default consoles for user interaction
...
Activate the default console when user interaction is required for
the processing of TPM 2 physical presence interface opcodes.
Background:
TPM 2 physical presence interface (PPI) opcodes need to be handled before
the TPM 2 platform hierarchy is disabled. Due to this requirement we will
move the function call to handle the PPI opcodes into
PlatformBootManagerBeforeConsole() which runs before the initialization
of the consoles. However, since for interaction with the user we need
the console to be available, activate it now before displaying any message
to the user.
Cc: Rebecca Cran <rebecca@bsdio.com >
Cc: Peter Grehan <grehan@freebsd.org >
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: Min Xu <min.m.xu@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
2021-09-30 00:00:08 +00:00
Lin, Gary (HPS OE-Linux)
52e2dabc0f
OvmfPkg/PlatformBootManagerLib: use PcdAcpiS3Enable to detect S3 support
...
To avoid the potential inconsistency between PcdAcpiS3Enable and
QemuFwCfgS3Enabled(), this commit modifies PlatformBootManagerLib to
detect S3 support by PcdAcpiS3Enable as modules in MdeModulePkg do.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3573
Signed-off-by: Gary Lin <gary.lin@hpe.com >
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
Tested-by: Jim Fehlig <jfehlig@suse.com >
2021-08-31 11:07:16 +00:00
Lin, Gary (HPS OE-Linux)
28152333bc
OvmfPkg/LockBoxLib: use PcdAcpiS3Enable to detect S3 support
...
To avoid the potential inconsistency between PcdAcpiS3Enable and
QemuFwCfgS3Enabled(), this commit modifies LockBoxLib to detect
S3 support by PcdAcpiS3Enable as modules in MdeModulePkg do.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3573
Signed-off-by: Gary Lin <gary.lin@hpe.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com >
Tested-by: Jim Fehlig <jfehlig@suse.com >
2021-08-31 11:07:16 +00:00
Gerd Hoffmann
77d5fa8024
OvmfPkg/VirtioMmioDeviceLib: enable virtio 1.0
...
Now with everything in place for virtio 1.0 devices we can let
VirtioMmioInit() return SUCCESS.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Gerd Hoffmann
ae12188cf8
OvmfPkg/VirtioMmioDeviceLib: virtio 1.0: Adapt feature bit handling
...
virtio 1.0 has 64 feature bits instead of 32.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Gerd Hoffmann
6a3e9576b8
OvmfPkg/VirtioMmioDeviceLib: virtio 1.0: Add default QueueNum
...
Use QueueNumMax as QueueNum default for drivers which do not
explicitly call VIRTIO_DEVICE_PROTOCOL->SetQueueSize().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Gerd Hoffmann
537a724421
OvmfPkg/VirtioMmioDeviceLib: virtio 1.0: Fix SetQueueAddress
...
Virtio 1.0 allows a more flexible virtio ring layout, so we have to set
addresses for descriptors avail flags and use flags separately. We
continue to use a ring layout compatible with virtio 0.9.5 though, so no
other changes are needed to setup the virtio queues.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Gerd Hoffmann
212a2b9bb8
OvmfPkg/VirtioMmioDeviceLib: virtio 1.0: Fix SetPageSize.
...
Nothing to do here for virtio 1.0 devices.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Gerd Hoffmann
08293e43da
OvmfPkg/VirtioMmioDeviceLib: Add virtio 1.0 detection.
...
Add #defines for the Version field. Read and store the version,
log the version found as info message.
Continue to return UNSUPPORTED for now, we need some more patches
to complete virtio 1.0 support first.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-08-30 01:05:49 +00:00
Dov Murik
0cb48007f7
OvmfPkg: add library class BlobVerifierLib with null implementation
...
BlobVerifierLib will be used to verify blobs fetching them from QEMU's
firmware config (fw_cfg) in platforms that enable such verification.
The null implementation BlobVerifierLibNull treats all blobs as valid.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ashish Kalra <ashish.kalra@amd.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: Min Xu <min.m.xu@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3457
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com >
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-07-29 09:49:50 +00:00
James Bottomley
a26a08dc1f
OvmfPkg: PlatformBootManagerLibGrub: Allow executing kernel via fw_cfg
...
Support QEMU's -kernel option.
Create a QemuKernel.c for PlatformBootManagerLibGrub
which is an exact copy of the file
PlatformBootManagerLib/QemuKernel.c .
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ashish Kalra <ashish.kalra@amd.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: Min Xu <min.m.xu@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3457
Signed-off-by: James Bottomley <jejb@linux.ibm.com >
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com >
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com >
2021-07-29 09:49:50 +00:00
Dov Murik
9421f5ab8d
OvmfPkg/X86QemuLoadImageLib: State fw_cfg dependency in file header
...
Make it clear that X86QemuLoadImageLib relies on fw_cfg; prepare the
ground to add a warning about the incompatibility with boot verification
process.
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Tobin Feldman-Fitzthum <tobin@linux.ibm.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3457
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210628105110.379951-6-dovmurik@linux.ibm.com >
2021-06-29 12:33:17 +00:00
Dov Murik
cf20302474
OvmfPkg/GenericQemuLoadImageLib: Read cmdline from QemuKernelLoaderFs
...
Remove the QemuFwCfgLib interface used to read the QEMU cmdline
(-append argument) and the initrd size. Instead, use the synthetic
filesystem QemuKernelLoaderFs which has three files: "kernel", "initrd",
and "cmdline".
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Tobin Feldman-Fitzthum <tobin@linux.ibm.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3457
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com >
Message-Id: <20210628105110.379951-5-dovmurik@linux.ibm.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Tested-by: Laszlo Ersek <lersek@redhat.com >
2021-06-29 12:33:17 +00:00
Dov Murik
932449710c
OvmfPkg/X86QemuLoadImageLib: plug cmdline blob leak on success
...
When QemuLoadKernelImage() ends successfully, the command-line blob is
not freed, even though it is not used elsewhere (its content is already
copied to KernelLoadedImage->LoadOptions). The memory leak bug was
introduced in commit 7c47d89003
("OvmfPkg: implement QEMU loader
library for X86 with legacy fallback", 2020-03-05).
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Tobin Feldman-Fitzthum <tobin@linux.ibm.com >
Reported-by: Laszlo Ersek <lersek@redhat.com >
Fixes: 7c47d89003
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com >
Message-Id: <20210628105110.379951-3-dovmurik@linux.ibm.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Tested-by: Laszlo Ersek <lersek@redhat.com >
2021-06-29 12:33:17 +00:00
Dov Murik
5a2e030f73
OvmfPkg/GenericQemuLoadImageLib: plug cmdline blob leak on success
...
When QemuLoadKernelImage() ends successfully, the command-line blob is
not freed, even though it is not used elsewhere (its content is already
copied to KernelLoadedImage->LoadOptions). The memory leak bug was
introduced in commit ddd2be6b00
("OvmfPkg: provide a generic
implementation of QemuLoadImageLib", 2020-03-05).
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Tobin Feldman-Fitzthum <tobin@linux.ibm.com >
Reported-by: Laszlo Ersek <lersek@redhat.com >
Fixes: ddd2be6b00
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com >
Message-Id: <20210628105110.379951-2-dovmurik@linux.ibm.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Tested-by: Laszlo Ersek <lersek@redhat.com >
2021-06-29 12:33:17 +00:00
Laszlo Ersek
8af38170b5
OvmfPkg/PciHostBridgeLibScan: clean up file names and file-top comments
...
Rename "XenSupport.c" to "ScanForRootBridges.c", after the main function
in it.
Update the file-top comments; refer to both Bhyve and Xen.
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Julien Grall <julien@xen.org >
Cc: Peter Grehan <grehan@freebsd.org >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Cc: Rebecca Cran <rebecca@bsdio.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-36-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2021-06-04 16:01:50 +00:00
Laszlo Ersek
4c81178cf0
OvmfPkg/PciHostBridgeLibScan: remove PcdOvmfHostBridgePciDevId
...
The "OvmfPkg/Library/PciHostBridgeLibScan/PciHostBridgeLibScan.inf"
instance is used in the following platforms in edk2:
OvmfPkg/Bhyve/BhyveX64.dsc
OvmfPkg/OvmfXen.dsc
Neither Bhyve nor Xen provide a Q35 board, therefore the expression
PcdGet16 (PcdOvmfHostBridgePciDevId) != INTEL_Q35_MCH_DEVICE_ID
always evaluates to TRUE, in the PciHostBridgeLibScan instance.
Replace the expression with constant TRUE, eliminating the PCD dependency.
(In effect, this reports that the root bridge being registered does not
support extended PCI config space.)
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Julien Grall <julien@xen.org >
Cc: Peter Grehan <grehan@freebsd.org >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Cc: Rebecca Cran <rebecca@bsdio.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-35-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2021-06-04 16:01:50 +00:00
Laszlo Ersek
33d4f3e39e
OvmfPkg/PciHostBridgeLibScan: remove QEMU (fw_cfg) support
...
The "OvmfPkg/Library/PciHostBridgeLibScan/PciHostBridgeLibScan.inf"
instance is used in the following platforms in edk2:
OvmfPkg/Bhyve/BhyveX64.dsc
OvmfPkg/OvmfXen.dsc
Both platforms define "PcdPciDisableBusEnumeration" with Fixed-at-Build
access method, and TRUE value. Remove the PCD from the
PciHostBridgeLibScan instance, and everything else that is useful only
when the PCD is FALSE.
In practice, this removes the PciHostBridgeUtilityGetRootBridges()
function call, which is based on fw-cfg; see
"OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c".
(Note that the dependency on PciHostBridgeUtilityLib remains in place,
given that the PciHostBridgeLibScan instance continues using lower-level
functions from the library that do not depend on fw-cfg.)
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Julien Grall <julien@xen.org >
Cc: Peter Grehan <grehan@freebsd.org >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Cc: Rebecca Cran <rebecca@bsdio.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-34-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2021-06-04 16:01:50 +00:00
Laszlo Ersek
242678da2a
OvmfPkg/PciHostBridgeLib: remove Bhyve and Xen support
...
The "OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf" instance is
used by the following platforms in edk2:
OvmfPkg/AmdSev/AmdSevX64.dsc
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc
All these platforms statically inherit PcdPciDisableBusEnumeration=FALSE
from "MdeModulePkg.dec". Remove the the PCD and everything that depends on
it from the PciHostBridgeLib instance. Namely, remove the logic that
determines the root bridge apertures by (a) scanning the entire bus,
device and function number space, and (b) parsing the BAR values that were
pre-set by the Bhyve or Xen machinery.
"XenSupport.c" used to be listed explicitly in "Maintainers.txt", remove
it from that spot too.
Cc: Andrew Fish <afish@apple.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Leif Lindholm <leif@nuviainc.com >
Cc: Michael D Kinney <michael.d.kinney@intel.com >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-33-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Leif Lindholm <leif@nuviainc.com >
2021-06-04 16:01:50 +00:00
Laszlo Ersek
e120c962f5
OvmfPkg/PciHostBridgeLibScan: create from PciHostBridgeLib
...
Create an almost verbatim copy of the
"OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf" library instance.
The new PciHostBridgeLibScan instance will ultimately duplicate a
negligible amount of code from the original, and will be used by the Bhyve
and OvmfXen platforms.
List the new driver in "Maintainers.txt", in the "OvmfPkg: bhyve-related
modules" and "OvmfPkg: Xen-related modules" sections.
This patch should be reviewed with "git show --find-copies-harder".
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Julien Grall <julien@xen.org >
Cc: Peter Grehan <grehan@freebsd.org >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Cc: Rebecca Cran <rebecca@bsdio.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-30-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2021-06-04 16:01:50 +00:00
Laszlo Ersek
32fef03563
OvmfPkg/PciHostBridgeLib: consolidate #includes and INF file sections
...
- In every C file, list every necessary public #include individually, with
an example identifier that's actually consumed.
- Place all public #includes first, all module-private #includes second.
Separate them with a single empty line. Keep each section sorted in
itself.
- Sort all sections in the INF file, except [Defines].
- Add unlisted lib classes.
- Remove unnecessary #include directives, add unlisted #include
directives.
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Julien Grall <julien@xen.org >
Cc: Philippe Mathieu-Daudé <philmd@redhat.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210526201446.12554-29-lersek@redhat.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2021-06-04 16:01:50 +00:00
Gerd Hoffmann
75e9154f81
OvmfPkg/VirtioMmioDeviceLib: Add EFIAPI to VirtioMmioSetQueueAddress
...
This error was found while compiling VirtioMmioDeviceLib for X64
with the GCC5 toolchain, where EFIAPI makes a difference.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Message-Id: <20210602045935.762211-1-kraxel@redhat.com >
[lersek@redhat.com: prepend module name to subject, trim subject back to
allowed length]
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2021-06-02 17:40:46 +00:00
Brijesh Singh
adfa3327d4
OvmfPkg/BaseMemEncryptSevLib: remove Flush parameter
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275
The Flush parameter is used to provide a hint whether the specified range
is Mmio address. Now that we have a dedicated helper to clear the
memory encryption mask for the Mmio address range, its safe to remove the
Flush parameter from MemEncryptSev{Set,Clear}PageEncMask().
Since the address specified in the MemEncryptSev{Set,Clear}PageEncMask()
points to a system RAM, thus a cache flush is required during the
encryption mask update.
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Min Xu <min.m.xu@intel.com >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Erdem Aktas <erdemaktas@google.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com >
Message-Id: <20210519181949.6574-14-brijesh.singh@amd.com >
2021-05-29 12:15:21 +00:00
Brijesh Singh
901a9bfc3a
OvmfPkg/BaseMemEncryptSevLib: introduce MemEncryptSevClearMmioPageEncMask()
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275
The MemEncryptSevClearMmioPageEncMask() helper can be used for clearing
the memory encryption mask for the Mmio region.
The MemEncryptSevClearMmioPageEncMask() is a simplified version of
MemEncryptSevClearPageEncMask() -- it does not flush the caches after
clearing the page encryption mask.
Cc: James Bottomley <jejb@linux.ibm.com >
Cc: Min Xu <min.m.xu@intel.com >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Tom Lendacky <thomas.lendacky@amd.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Erdem Aktas <erdemaktas@google.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com >
Message-Id: <20210519181949.6574-10-brijesh.singh@amd.com >
2021-05-29 12:15:21 +00:00
Lendacky, Thomas
cc71bd9709
OvmfPkg/VmgExitLib: Add support for new MMIO MOV opcodes
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3345
Enabling TPM support results in guest termination of an SEV-ES guest
because it uses MMIO opcodes that are not currently supported.
Add support for the new MMIO opcodes (0xA0 - 0xA3), MOV instructions which
use a memory offset directly encoded in the instruction. Also, add a DEBUG
statement to identify an unsupported MMIO opcode being used.
Fixes: c45f678a1e
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@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: Min Xu <min.m.xu@intel.com >
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <2fdde57707b52ae39c49341c9d97053aaff56e4a.1619716333.git.thomas.lendacky@amd.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
2021-04-30 18:35:50 +00:00
Lendacky, Thomas
75d1a7903d
OvfmPkg/VmgExitLib: Properly decode MMIO MOVZX and MOVSX opcodes
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3345
The MOVZX and MOVSX instructions use the ModRM byte in the instruction,
but the instruction decoding support was not decoding it. This resulted
in invalid decoding and failing of the MMIO operation. Also, when
performing the zero-extend or sign-extend operation, the memory operation
should be using the size, and not the size enumeration value.
Add the ModRM byte decoding for the MOVZX and MOVSX opcodes and use the
true data size to perform the extend operations. Additionally, add a
DEBUG statement identifying the MMIO address being flagged as encrypted
during the MMIO address validation.
Fixes: c45f678a1e
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jordan Justen <jordan.l.justen@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: Min Xu <min.m.xu@intel.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <5949d54cb2c9ab69256f67ed5654b32654c0501c.1619716333.git.thomas.lendacky@amd.com >
2021-04-30 18:35:50 +00:00
Anthony PERARD
9d6861494a
OvmfPkg/IndustryStandard: Introduce PageTable.h
...
We are going to use the page table structure in yet another place,
collect the types and macro that can be used from another module
rather than making yet another copy.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2490
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com >
Acked-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <20210412133003.146438-5-anthony.perard@citrix.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-04-13 11:54:58 +00:00
Martin Radev
ca31888271
OvmfPkg/X86QemuLoadImageLib: Handle allocation failure for CommandLine
...
The CommandLine and InitrdData may be set to NULL if the provided
size is too large. Because the zero page is mapped, this would not
cause an immediate crash but can lead to memory corruption instead.
This patch just adds validation and returns error if either allocation
has failed.
Signed-off-by: Martin Radev <martin.b.radev@gmail.com >
Message-Id: <YFPJsaGzVWQxoEU4@martin-ThinkPad-T440p>
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Acked-by: Tom Lendacky <thomas.lendacky@amd.com >
[lersek@redhat.com: drop unnecessary empty line from code; remove personal
(hence likely unstable) repo reference from commit message]
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2021-03-19 18:13:51 +00:00
Ankur Arora
af9c77e151
OvmfPkg/SmmCpuFeaturesLib: call CPU hot-eject handler
...
Call the CPU hot-eject handler if one is installed. The condition for
installation is (PcdCpuMaxLogicalProcessorNumber > 1), and there's
a hot-unplug request.
The handler is called from SmmCpuFeaturesRendezvousExit(), which is
in-turn called at the tail-end of SmiRendezvous() after the BSP has
signalled an SMI exit via the "AllCpusInSync" loop.
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Igor Mammedov <imammedo@redhat.com >
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com >
Cc: Aaron Young <aaron.young@oracle.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3132
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com >
Message-Id: <20210312062656.2477515-8-ankur.a.arora@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-03-16 13:21:46 +00:00
Ankur Arora
b6d5996706
OvmfPkg/SmmCpuFeaturesLib: init CPU ejection state
...
Init CPU_HOT_EJECT_DATA, which will be used to share CPU ejection
state between SmmCpuFeaturesLib (via PiSmmCpuDxeSmm) and CpuHotPlugSmm.
The init happens via SmmCpuFeaturesSmmRelocationComplete(), and so it
will run as part of the PiSmmCpuDxeSmm entry point function,
PiCpuSmmEntry(). Once inited, CPU_HOT_EJECT_DATA is exposed via
PcdCpuHotEjectDataAddress.
The CPU hot-eject handler (CPU_HOT_EJECT_DATA->Handler) is setup when
there is an ejection request via CpuHotplugSmm.
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Igor Mammedov <imammedo@redhat.com >
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com >
Cc: Aaron Young <aaron.young@oracle.com >
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3132
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com >
Message-Id: <20210312062656.2477515-7-ankur.a.arora@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-03-16 13:21:46 +00:00
Jiahui Cen via groups.io
f4a257a355
OvmfPkg/PciHostBridgeUtilityLib: Extend GetRootBridges() with BusMin/BusMax
...
Extend parameter list of PciHostBridgeUtilityGetRootBridges() with BusMin/
BusMax, so that the utility function could be compatible with ArmVirtPkg
who uses mutable bus range [BusMin, BusMax] insteand of [0, PCI_MAX_BUS].
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Message-Id: <20210119011302.10908-10-cenjiahui@huawei.com >
[lersek@redhat.com: fix logging of UINTN values BusMin, BusMax]
[lersek@redhat.com: keep zeroing of (*Count) centralized]
[lersek@redhat.com: fix typos in ExtraRootBridges comment]
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
14d4b6be56
OvmfPkg/PciHostBridgeUtilityLib: Extend parameter list of GetRootBridges
...
Extend parameter list of PciHostBridgeUtilityGetRootBridges() with
DmaAbove4G, NoExtendedConfigSpace to support for ArmVirtPkg.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Signed-off-by: Yubo Miao <miaoyubo@huawei.com >
Message-Id: <20210119011302.10908-9-cenjiahui@huawei.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
4edba29651
OvmfPkg/PciHostBridgeLib: Extract GetRootBridges() / FreeRootBridges()
...
Extract PciHostBridgeGetRootBridges() / PciHostBridgeFreeRootBridges() to
PciHostBridgeUtilityLib as common utility functions to share support for
scanning extra root bridges.
No change of functionality.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Signed-off-by: Yubo Miao <miaoyubo@huawei.com >
Message-Id: <20210119011302.10908-8-cenjiahui@huawei.com >
[lersek@redhat.com: keep zeroing of (*Count) centralized]
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
e1b259da42
OvmfPkg/PciHostBridgeUtilityLib: Extend parameters of InitRootBridge()
...
Extend parameter list of PciHostBridgeUtilityInitRootBridge() with
DmaAbove4G and NoExtendedConfigSpace to prepare for sharing with
ArmVirtPkg.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Julien Grall <julien@xen.org >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Signed-off-by: Yubo Miao <miaoyubo@huawei.com >
Message-Id: <20210119011302.10908-6-cenjiahui@huawei.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
7ac1f28d4d
OvmfPkg/PciHostBridgeLib: Extract InitRootBridge() / UninitRootBridge()
...
Extract InitRootBridge() / UninitRootBridge() to PciHostBridgeUtilityLib
as common utility functions. No change of functionality.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Julien Grall <julien@xen.org >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Signed-off-by: Yubo Miao <miaoyubo@huawei.com >
Message-Id: <20210119011302.10908-5-cenjiahui@huawei.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
517055d298
OvmfPkg/PciHostBridgeLib: List missing PcdLib dependency
...
OvmfPkg/PciHostBridgeLib instance fails to list its PcdLib dependency,
both between the #include directives, and in the INF file. So let's list
the dependency.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Julien Grall <julien@xen.org >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Message-Id: <20210119011302.10908-4-cenjiahui@huawei.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2021-01-20 16:14:20 +00:00
Jiahui Cen via groups.io
7a6172f88b
OvmfPkg: Introduce PciHostBridgeUtilityLib class
...
Introduce a new PciHostBridgeUtilityLib class to share duplicate code
between OvmfPkg and ArmVirtPkg.
Extract function PciHostBridgeUtilityResourceConflict from
PciHostBridgeResourceConflict in OvmfPkg/PciHostBridgeLib.
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Rebecca Cran <rebecca@bsdio.com >
Cc: Peter Grehan <grehan@freebsd.org >
Cc: Anthony Perard <anthony.perard@citrix.com >
Cc: Julien Grall <julien@xen.org >
Signed-off-by: Jiahui Cen <cenjiahui@huawei.com >
Signed-off-by: Yubo Miao <miaoyubo@huawei.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20210119011302.10908-2-cenjiahui@huawei.com >
2021-01-20 16:14:20 +00:00
Tom Lendacky
85b8eac59b
OvfmPkg/VmgExitLib: Validate #VC MMIO is to un-encrypted memory
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3108
When SEV-ES is active, and MMIO operation will trigger a #VC and the
VmgExitLib exception handler will process this MMIO operation.
A malicious hypervisor could try to extract information from encrypted
memory by setting a reserved bit in the guests nested page tables for
a non-MMIO area. This can result in the encrypted data being copied into
the GHCB shared buffer area and accessed by the hypervisor.
Prevent this by ensuring that the MMIO source/destination is un-encrypted
memory. For the APIC register space, access is allowed in general.
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Brijesh Singh <brijesh.singh@amd.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <0cf28470ad5e694af45f7f0b35296628f819567d.1610045305.git.thomas.lendacky@amd.com >
2021-01-07 19:34:39 +00:00
Tom Lendacky
5667dc43d8
OvmfPkg/VmgExitLib: Support nested #VCs
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3108
In order to be able to issue messages or make interface calls that cause
another #VC (e.g. GetLocalApicBaseAddress () issues RDMSR), add support
for nested #VCs.
In order to support nested #VCs, GHCB backup pages are required. If a #VC
is received while currently processing a #VC, a backup of the current GHCB
content is made. This allows the #VC handler to continue processing the
new #VC. Upon completion of the new #VC, the GHCB is restored from the
backup page. The #VC recursion level is tracked in the per-vCPU variable
area.
Support is added to handle up to one nested #VC (or two #VCs total). If
a second nested #VC is encountered, an ASSERT will be issued and the vCPU
will enter CpuDeadLoop ().
For SEC, the GHCB backup pages are reserved in the OvmfPkgX64.fdf memory
layout, with two new fixed PCDs to provide the address and size of the
backup area.
For PEI/DXE, the GHCB backup pages are allocated as boot services pages
using the memory allocation library.
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Brijesh Singh <brijesh.singh@amd.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <ac2e8203fc41a351b43f60d68bdad6b57c4fb106.1610045305.git.thomas.lendacky@amd.com >
2021-01-07 19:34:39 +00:00
Tom Lendacky
c330af0246
OvmfPkg/MemEncryptSevLib: Address range encryption state interface
...
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3108
Update the MemEncryptSevLib library to include an interface that can
report the encryption state on a range of memory. The values will
represent the range as being unencrypted, encrypted, a mix of unencrypted
and encrypted, and error (e.g. ranges that aren't mapped).
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Laszlo Ersek <lersek@redhat.com >
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com >
Cc: Brijesh Singh <brijesh.singh@amd.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com >
Message-Id: <0d98f4d42a2b67310c29bac7bcdcf1eda6835847.1610045305.git.thomas.lendacky@amd.com >
2021-01-07 19:34:39 +00:00