diff options
author | Star Zeng <star.zeng@intel.com> | 2017-11-23 08:55:02 +0800 |
---|---|---|
committer | Star Zeng <star.zeng@intel.com> | 2018-05-10 14:23:40 +0800 |
commit | 058a50daf5037842727c1bdf58f5fc33b9b01479 (patch) | |
tree | c937ec0f57093a1905e10298df14c6c2f9e2131d | |
parent | d7989c70aa29f35a5b80fafc0c4fe3e9be5cc5eb (diff) | |
download | edk2-058a50daf5037842727c1bdf58f5fc33b9b01479.zip edk2-058a50daf5037842727c1bdf58f5fc33b9b01479.tar.gz edk2-058a50daf5037842727c1bdf58f5fc33b9b01479.tar.bz2 |
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)
3 files changed, 10 insertions, 5 deletions
diff --git a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.c index 6052a0a..37b3b19 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 0886647..519a5ab 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 81dec10..ce350ba 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;
|