public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2] OvmfPkg/IncompatiblePciDeviceSupportDxe: Ignore OptionRom in Sev guest
@ 2022-08-26 15:15 Lee, Chun-Yi
  2022-08-29  9:32 ` Gerd Hoffmann
  0 siblings, 1 reply; 3+ messages in thread
From: Lee, Chun-Yi @ 2022-08-26 15:15 UTC (permalink / raw)
  To: devel
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann, Min Xu,
	Brijesh Singh, Erdem Aktas, James Bottomley, Lee, Chun-Yi

Reference: https://bugzilla.tianocore.org/show_bug.cgi?id=4031

This patch is similar to the c477b2783f patch for Td guest.

Host VMM may inject OptionRom which is untrusted in Sev guest. So PCI
OptionRom needs to be ignored if it is Sev guest. According to
"Table 20. ACPI 2.0 & 3.0 QWORD Address Space Descriptor Usage"
PI spec 1.7, type-specific flags can be set to 0 when Address
Translation Offset == 6 to skip device option ROM.

Without this patch, Sev guest may shows invalid MMIO opcode error
as following:

Invalid MMIO opcode (F6)
ASSERT /home/abuild/rpmbuild/BUILD/edk2-edk2-stable202202/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c(1041): ((BOOLEAN)(0==1))

The OptionRom must be disabled both on Td and Sev guests, so we direct
use CcProbe().

v2: Use CcProbe() instead of TdIsEnabled() and MemEncryptSevIsEnabled().

Signed-off-by: "Lee, Chun-Yi" <jlee@suse.com>
---
 .../IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c   | 5 +++--
 .../IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c b/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c
index 2d385d26ef..686d85633e 100644
--- a/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c
+++ b/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c
@@ -18,6 +18,7 @@
 #include <Library/MemoryAllocationLib.h>
 #include <Library/PcdLib.h>
 #include <Library/UefiBootServicesTableLib.h>
+#include <Library/CcProbeLib.h>
 
 #include <Protocol/IncompatiblePciDeviceSupport.h>
 #include <Protocol/LegacyBios.h>
@@ -264,7 +265,7 @@ CheckDevice (
   //
   // In Td guest OptionRom is not allowed.
   //
-  if (TdIsEnabled ()) {
+  if (CcProbe ()) {
     Length += sizeof mOptionRomConfiguration;
   }
 
@@ -286,7 +287,7 @@ CheckDevice (
   CopyMem (Ptr, &mMmio64Configuration, sizeof mMmio64Configuration);
   Length = sizeof mMmio64Configuration;
 
-  if (TdIsEnabled ()) {
+  if (CcProbe ()) {
     CopyMem (Ptr + Length, &mOptionRomConfiguration, sizeof mOptionRomConfiguration);
     Length += sizeof mOptionRomConfiguration;
   }
diff --git a/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf b/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
index c3e6bb9447..ad38128fcb 100644
--- a/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
+++ b/OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
@@ -24,6 +24,7 @@
   OvmfPkg/OvmfPkg.dec
 
 [LibraryClasses]
+  CcProbeLib
   DebugLib
   MemoryAllocationLib
   PcdLib
-- 
2.12.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] OvmfPkg/IncompatiblePciDeviceSupportDxe: Ignore OptionRom in Sev guest
  2022-08-26 15:15 [PATCH v2] OvmfPkg/IncompatiblePciDeviceSupportDxe: Ignore OptionRom in Sev guest Lee, Chun-Yi
@ 2022-08-29  9:32 ` Gerd Hoffmann
  2022-09-06 16:56   ` [edk2-devel] " Ard Biesheuvel
  0 siblings, 1 reply; 3+ messages in thread
From: Gerd Hoffmann @ 2022-08-29  9:32 UTC (permalink / raw)
  To: Lee, Chun-Yi
  Cc: devel, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Min Xu,
	Brijesh Singh, Erdem Aktas, James Bottomley, Lee, Chun-Yi

On Fri, Aug 26, 2022 at 11:15:20PM +0800, Lee, Chun-Yi wrote:
> Reference: https://bugzilla.tianocore.org/show_bug.cgi?id=4031
> 
> This patch is similar to the c477b2783f patch for Td guest.
> 
> Host VMM may inject OptionRom which is untrusted in Sev guest. So PCI
> OptionRom needs to be ignored if it is Sev guest. According to
> "Table 20. ACPI 2.0 & 3.0 QWORD Address Space Descriptor Usage"
> PI spec 1.7, type-specific flags can be set to 0 when Address
> Translation Offset == 6 to skip device option ROM.
> 
> Without this patch, Sev guest may shows invalid MMIO opcode error
> as following:
> 
> Invalid MMIO opcode (F6)
> ASSERT /home/abuild/rpmbuild/BUILD/edk2-edk2-stable202202/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c(1041): ((BOOLEAN)(0==1))
> 
> The OptionRom must be disabled both on Td and Sev guests, so we direct
> use CcProbe().
> 
> v2: Use CcProbe() instead of TdIsEnabled() and MemEncryptSevIsEnabled().

Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/IncompatiblePciDeviceSupportDxe: Ignore OptionRom in Sev guest
  2022-08-29  9:32 ` Gerd Hoffmann
@ 2022-09-06 16:56   ` Ard Biesheuvel
  0 siblings, 0 replies; 3+ messages in thread
From: Ard Biesheuvel @ 2022-09-06 16:56 UTC (permalink / raw)
  To: devel, kraxel
  Cc: Lee, Chun-Yi, Jiewen Yao, Jordan Justen, Min Xu, Brijesh Singh,
	Erdem Aktas, James Bottomley, Lee, Chun-Yi

On Mon, 29 Aug 2022 at 11:32, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Fri, Aug 26, 2022 at 11:15:20PM +0800, Lee, Chun-Yi wrote:
> > Reference: https://bugzilla.tianocore.org/show_bug.cgi?id=4031
> >
> > This patch is similar to the c477b2783f patch for Td guest.
> >
> > Host VMM may inject OptionRom which is untrusted in Sev guest. So PCI
> > OptionRom needs to be ignored if it is Sev guest. According to
> > "Table 20. ACPI 2.0 & 3.0 QWORD Address Space Descriptor Usage"
> > PI spec 1.7, type-specific flags can be set to 0 when Address
> > Translation Offset == 6 to skip device option ROM.
> >
> > Without this patch, Sev guest may shows invalid MMIO opcode error
> > as following:
> >
> > Invalid MMIO opcode (F6)
> > ASSERT /home/abuild/rpmbuild/BUILD/edk2-edk2-stable202202/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c(1041): ((BOOLEAN)(0==1))
> >
> > The OptionRom must be disabled both on Td and Sev guests, so we direct
> > use CcProbe().
> >
> > v2: Use CcProbe() instead of TdIsEnabled() and MemEncryptSevIsEnabled().
>
> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
>

Merged as #3298

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-09-06 16:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-26 15:15 [PATCH v2] OvmfPkg/IncompatiblePciDeviceSupportDxe: Ignore OptionRom in Sev guest Lee, Chun-Yi
2022-08-29  9:32 ` Gerd Hoffmann
2022-09-06 16:56   ` [edk2-devel] " Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox