mirror of https://github.com/acidanthera/audk.git
OvmfPkg/AmdSevDxe: do not use extended PCI config space
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275 Commit85b8eac59b
added support to ensure that MMIO is only performed against the un-encrypted memory. If MMIO is performed against encrypted memory, a #GP is raised. The AmdSevDxe uses the functions provided by the MemEncryptSevLib to clear the memory encryption mask from the page table. If the MemEncryptSevLib is extended to include VmgExitLib then depedency chain will look like this: OvmfPkg/AmdSevDxe/AmdSevDxe.inf -----> MemEncryptSevLib class -----> "OvmfPkg/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf" instance -----> VmgExitLib class -----> "OvmfPkg/VmgExitLib" instance -----> LocalApicLib class -----> "UefiCpuPkg/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf" instance -----> TimerLib class -----> "OvmfPkg/AcpiTimerLib/DxeAcpiTimerLib.inf" instance -----> PciLib class -----> "OvmfPkg/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf" instance -----> PciExpressLib class -----> "MdePkg/BasePciExpressLib/BasePciExpressLib.inf" instance The LocalApicLib provides a constructor that gets called before the AmdSevDxe can clear the memory encryption mask from the MMIO regions. When running under the Q35 machine type, the call chain looks like this: AcpiTimerLibConstructor () [AcpiTimerLib] PciRead32 () [DxePciLibI440FxQ35] PciExpressRead32 () [PciExpressLib] The PciExpressRead32 () reads the MMIO region. The MMIO regions are not yet mapped un-encrypted, so the check introduced in the commit85b8eac59b
raises a #GP. The AmdSevDxe driver does not require the access to the extended PCI config space. Accessing a normal PCI config space, via IO port should be sufficent. Use the module-scope override to make the AmdSevDxe use the BasePciLib instead of BasePciExpressLib so that PciRead32 () uses the IO ports instead of the extended config space. Cc: Michael Roth <michael.roth@amd.com> 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: Erdem Aktas <erdemaktas@google.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Jiewen Yao <Jiewen.yao@intel.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Suggested-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
This commit is contained in:
parent
a19b648952
commit
19914edc5a
|
@ -816,7 +816,10 @@
|
|||
!endif
|
||||
|
||||
OvmfPkg/PlatformDxe/Platform.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf {
|
||||
<LibraryClasses>
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
}
|
||||
OvmfPkg/IoMmuDxe/IoMmuDxe.inf
|
||||
|
||||
#
|
||||
|
|
|
@ -790,7 +790,10 @@
|
|||
!endif
|
||||
|
||||
OvmfPkg/PlatformDxe/Platform.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf {
|
||||
<LibraryClasses>
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
}
|
||||
OvmfPkg/IoMmuDxe/IoMmuDxe.inf
|
||||
|
||||
|
||||
|
|
|
@ -969,7 +969,10 @@
|
|||
!endif
|
||||
|
||||
OvmfPkg/PlatformDxe/Platform.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf {
|
||||
<LibraryClasses>
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
}
|
||||
OvmfPkg/IoMmuDxe/IoMmuDxe.inf
|
||||
|
||||
!if $(SMM_REQUIRE) == TRUE
|
||||
|
|
|
@ -967,7 +967,10 @@
|
|||
!endif
|
||||
|
||||
OvmfPkg/PlatformDxe/Platform.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf {
|
||||
<LibraryClasses>
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
}
|
||||
OvmfPkg/IoMmuDxe/IoMmuDxe.inf
|
||||
|
||||
!if $(SMM_REQUIRE) == TRUE
|
||||
|
|
|
@ -729,7 +729,10 @@
|
|||
}
|
||||
|
||||
OvmfPkg/PlatformDxe/Platform.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
|
||||
OvmfPkg/AmdSevDxe/AmdSevDxe.inf {
|
||||
<LibraryClasses>
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
}
|
||||
OvmfPkg/IoMmuDxe/IoMmuDxe.inf
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue