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 6052a0a..37b3b19 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 0886647..519a5ab 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 81dec10..ce350ba 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