]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
IntelSiliconPkg IntelVTdDxe: Do not SetupVtd again
[mirror_edk2.git] / IntelSiliconPkg / Feature / VTd / IntelVTdDxe / DmarAcpiTable.c
index 2456b0c48ff19f93848a3965ae85e205948baada..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
@@ -989,6 +990,10 @@ GetDmarAcpiTable (
   VOID                              *AcpiTable;\r
   EFI_STATUS                        Status;\r
 \r
+  if (mAcpiDmarTable != NULL) {\r
+    return EFI_ALREADY_STARTED;\r
+  }\r
+\r
   AcpiTable = NULL;\r
   Status = EfiGetSystemConfigurationTable (\r
              &gEfiAcpi20TableGuid,\r
@@ -996,7 +1001,7 @@ GetDmarAcpiTable (
              );\r
   if (EFI_ERROR (Status)) {\r
     Status = EfiGetSystemConfigurationTable (\r
-               &gEfiAcpiTableGuid,\r
+               &gEfiAcpi10TableGuid,\r
                &AcpiTable\r
                );\r
   }\r
@@ -1006,10 +1011,10 @@ GetDmarAcpiTable (
                       (EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)AcpiTable,\r
                       EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE\r
                       );\r
-  DEBUG ((DEBUG_INFO,"DMAR Table - 0x%08x\n", mAcpiDmarTable));\r
   if (mAcpiDmarTable == NULL) {\r
-    return EFI_UNSUPPORTED;\r
+    return EFI_NOT_FOUND;\r
   }\r
+  DEBUG ((DEBUG_INFO,"DMAR Table - 0x%08x\n", mAcpiDmarTable));\r
   VtdDumpDmarTable();\r
 \r
   return EFI_SUCCESS;\r