IntelSiliconPkg IntelVTdDxe: Do not SetupVtd again
authorStar Zeng <star.zeng@intel.com>
Thu, 23 Nov 2017 00:55:02 +0000 (08:55 +0800)
committerStar Zeng <star.zeng@intel.com>
Thu, 23 Nov 2017 02:43:43 +0000 (10:43 +0800)
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>
IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c
IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h
IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c

index 6052a0aebe45197d9fd81c8280bed467893b6a71..37b3b19bce90df2b8b4e687666a59ad79e4e463d 100644 (file)
@@ -412,6 +412,9 @@ AcpiNotificationFunc (
 \r
   Status = GetDmarAcpiTable ();\r
   if (EFI_ERROR (Status)) {\r
+    if (Status == EFI_ALREADY_STARTED) {\r
+      gBS->CloseEvent (Event);\r
+    }\r
     return;\r
   }\r
   SetupVtd ();\r
index 0886647ea673296fe004df991d030c75c9810f4d..519a5ab004505e15fb5441321d76de3192ddf870 100644 (file)
@@ -302,8 +302,9 @@ FindVtdIndexByPciDevice (
 /**\r
   Get the DMAR ACPI table.\r
 \r
-  @retval EFI_SUCCESS    The DMAR ACPI table is got.\r
-  @retval EFI_NOT_FOUND  The DMAR ACPI table is not found.\r
+  @retval EFI_SUCCESS           The DMAR ACPI table is got.\r
+  @retval EFI_ALREADY_STARTED   The DMAR ACPI table has been got previously.\r
+  @retval EFI_NOT_FOUND         The DMAR ACPI table is not found.\r
 **/\r
 EFI_STATUS\r
 GetDmarAcpiTable (\r
index 81dec109675bf0543c253ef04d7a73b81c84c80c..ce350bafbe3ffdee176909d46a7626d9833e779c 100644 (file)
@@ -978,8 +978,9 @@ FindAcpiPtr (
 /**\r
   Get the DMAR ACPI table.\r
 \r
-  @retval EFI_SUCCESS    The DMAR ACPI table is got.\r
-  @retval EFI_NOT_FOUND  The DMAR ACPI table is not found.\r
+  @retval EFI_SUCCESS           The DMAR ACPI table is got.\r
+  @retval EFI_ALREADY_STARTED   The DMAR ACPI table has been got previously.\r
+  @retval EFI_NOT_FOUND         The DMAR ACPI table is not found.\r
 **/\r
 EFI_STATUS\r
 GetDmarAcpiTable (\r
@@ -990,7 +991,7 @@ GetDmarAcpiTable (
   EFI_STATUS                        Status;\r
 \r
   if (mAcpiDmarTable != NULL) {\r
-    return EFI_SUCCESS;\r
+    return EFI_ALREADY_STARTED;\r
   }\r
 \r
   AcpiTable = NULL;\r