summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStar Zeng <star.zeng@intel.com>2017-11-23 08:55:02 +0800
committerStar Zeng <star.zeng@intel.com>2018-05-10 14:23:40 +0800
commit058a50daf5037842727c1bdf58f5fc33b9b01479 (patch)
treec937ec0f57093a1905e10298df14c6c2f9e2131d
parentd7989c70aa29f35a5b80fafc0c4fe3e9be5cc5eb (diff)
downloadedk2-058a50daf5037842727c1bdf58f5fc33b9b01479.tar.gz
edk2-058a50daf5037842727c1bdf58f5fc33b9b01479.tar.bz2
edk2-058a50daf5037842727c1bdf58f5fc33b9b01479.zip
IntelSiliconPkg IntelVTdDxe: Do not SetupVtd again
Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Tested-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> (cherry picked from commit 7729e3c448a116eb5b6198f0f70355f421df43fa)
-rw-r--r--IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c3
-rw-r--r--IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h5
-rw-r--r--IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c7
3 files changed, 10 insertions, 5 deletions
diff --git a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c
index 6052a0aebe..37b3b19bce 100644
--- a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c
+++ b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c
@@ -412,6 +412,9 @@ AcpiNotificationFunc (
Status = GetDmarAcpiTable ();
if (EFI_ERROR (Status)) {
+ if (Status == EFI_ALREADY_STARTED) {
+ gBS->CloseEvent (Event);
+ }
return;
}
SetupVtd ();
diff --git a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h
index 0886647ea6..519a5ab004 100644
--- a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h
+++ b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h
@@ -302,8 +302,9 @@ FindVtdIndexByPciDevice (
/**
Get the DMAR ACPI table.
- @retval EFI_SUCCESS The DMAR ACPI table is got.
- @retval EFI_NOT_FOUND The DMAR ACPI table is not found.
+ @retval EFI_SUCCESS The DMAR ACPI table is got.
+ @retval EFI_ALREADY_STARTED The DMAR ACPI table has been got previously.
+ @retval EFI_NOT_FOUND The DMAR ACPI table is not found.
**/
EFI_STATUS
GetDmarAcpiTable (
diff --git a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
index 81dec10967..ce350bafbe 100644
--- a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
+++ b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
@@ -978,8 +978,9 @@ FindAcpiPtr (
/**
Get the DMAR ACPI table.
- @retval EFI_SUCCESS The DMAR ACPI table is got.
- @retval EFI_NOT_FOUND The DMAR ACPI table is not found.
+ @retval EFI_SUCCESS The DMAR ACPI table is got.
+ @retval EFI_ALREADY_STARTED The DMAR ACPI table has been got previously.
+ @retval EFI_NOT_FOUND The DMAR ACPI table is not found.
**/
EFI_STATUS
GetDmarAcpiTable (
@@ -990,7 +991,7 @@ GetDmarAcpiTable (
EFI_STATUS Status;
if (mAcpiDmarTable != NULL) {
- return EFI_SUCCESS;
+ return EFI_ALREADY_STARTED;
}
AcpiTable = NULL;