MdeModulePkg/PciBus: Add IOMMU support.
If IOMMU protocol is installed, PciBus need call IOMMU
to set access attribute for the PCI device in Map/Ummap.
Only after the access attribute is set, the PCI device can
access the DMA memory.
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Leo Duran <leo.duran@amd.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Previous patch Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Previous patch Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Leo Duran <leo.duran@amd.com>
(cherry picked from commit 11a6cc5bda
)
This commit is contained in:
@@ -42,6 +42,7 @@ UINT64 gAllZero = 0;
|
||||
|
||||
EFI_PCI_PLATFORM_PROTOCOL *gPciPlatformProtocol;
|
||||
EFI_PCI_OVERRIDE_PROTOCOL *gPciOverrideProtocol;
|
||||
EDKII_IOMMU_PROTOCOL *mIoMmuProtocol;
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_PCI_HOTPLUG_REQUEST_PROTOCOL mPciHotPlugRequest = {
|
||||
@@ -284,6 +285,14 @@ PciBusDriverBindingStart (
|
||||
);
|
||||
}
|
||||
|
||||
if (mIoMmuProtocol == NULL) {
|
||||
gBS->LocateProtocol (
|
||||
&gEdkiiIoMmuProtocolGuid,
|
||||
NULL,
|
||||
(VOID **) &mIoMmuProtocol
|
||||
);
|
||||
}
|
||||
|
||||
if (PcdGetBool (PcdPciDisableBusEnumeration)) {
|
||||
gFullEnumeration = FALSE;
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user