]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelSiliconPkg/Feature/VTd/IntelVTdPmrPei/IntelVTdPmrPei.h
IntelSiliconPkg/VtdPmrPei: Add premem support.
[mirror_edk2.git] / IntelSiliconPkg / Feature / VTd / IntelVTdPmrPei / IntelVTdPmrPei.h
index 720f5d42c35f2073e24dcc9ed41ac625b912d9d5..499119d3ff19b21d3252fdeae05aa5c02fd0b974 100644 (file)
@@ -16,6 +16,8 @@
 #define __DMA_ACCESS_LIB_H__\r
 \r
 typedef struct {\r
+  EFI_ACPI_DMAR_HEADER                    *AcpiDmarTable;\r
+  UINT64                                  EngineMask;\r
   UINT8                                   HostAddressWidth;\r
   UINTN                                   VTdEngineCount;\r
   UINT64                                  VTdEngineAddress[1];\r
@@ -24,6 +26,7 @@ typedef struct {
 /**\r
   Set DMA protected region.\r
 \r
+  @param VTdInfo            The VTd engine context information.\r
   @param EngineMask         The mask of the VTd engine to be accessed.\r
   @param LowMemoryBase      The protected low memory region base.\r
   @param LowMemoryLength    The protected low memory region length.\r
@@ -35,6 +38,7 @@ typedef struct {
 **/\r
 EFI_STATUS\r
 SetDmaProtectedRange (\r
+  IN VTD_INFO      *VTdInfo,\r
   IN UINT64        EngineMask,\r
   IN UINT32        LowMemoryBase,\r
   IN UINT32        LowMemoryLength,\r
@@ -45,38 +49,127 @@ SetDmaProtectedRange (
 /**\r
   Diable DMA protection.\r
 \r
+  @param VTdInfo            The VTd engine context information.\r
   @param EngineMask         The mask of the VTd engine to be accessed.\r
 \r
   @retval DMA protection is disabled.\r
 **/\r
 EFI_STATUS\r
 DisableDmaProtection (\r
+  IN VTD_INFO      *VTdInfo,\r
+  IN UINT64        EngineMask\r
+  );\r
+\r
+/**\r
+  Return if the DMA protection is enabled.\r
+\r
+  @param VTdInfo            The VTd engine context information.\r
+  @param EngineMask         The mask of the VTd engine to be accessed.\r
+\r
+  @retval TRUE  DMA protection is enabled in at least one VTd engine.\r
+  @retval FALSE DMA protection is disabled in all VTd engines.\r
+**/\r
+UINT64\r
+GetDmaProtectionEnabledEngineMask (\r
+  IN VTD_INFO      *VTdInfo,\r
   IN UINT64        EngineMask\r
   );\r
 \r
 /**\r
   Get protected low memory alignment.\r
 \r
+  @param VTdInfo            The VTd engine context information.\r
   @param EngineMask         The mask of the VTd engine to be accessed.\r
 \r
   @return protected low memory alignment.\r
 **/\r
 UINT32\r
 GetLowMemoryAlignment (\r
+  IN VTD_INFO      *VTdInfo,\r
   IN UINT64        EngineMask\r
   );\r
 \r
 /**\r
   Get protected high memory alignment.\r
 \r
+  @param VTdInfo            The VTd engine context information.\r
   @param EngineMask         The mask of the VTd engine to be accessed.\r
 \r
   @return protected high memory alignment.\r
 **/\r
 UINT64\r
 GetHighMemoryAlignment (\r
+  IN VTD_INFO      *VTdInfo,\r
+  IN UINT64        EngineMask\r
+  );\r
+\r
+/**\r
+  Enable VTd translation table protection.\r
+\r
+  @param VTdInfo            The VTd engine context information.\r
+  @param EngineMask         The mask of the VTd engine to be accessed.\r
+**/\r
+VOID\r
+EnableVTdTranslationProtection (\r
+  IN VTD_INFO      *VTdInfo,\r
+  IN UINT64        EngineMask\r
+  );\r
+\r
+/**\r
+  Disable VTd translation table protection.\r
+\r
+  @param VTdInfo            The VTd engine context information.\r
+  @param EngineMask         The mask of the VTd engine to be accessed.\r
+**/\r
+VOID\r
+DisableVTdTranslationProtection (\r
+  IN VTD_INFO      *VTdInfo,\r
   IN UINT64        EngineMask\r
   );\r
 \r
+/**\r
+  Parse DMAR DRHD table.\r
+\r
+  @param[in]  AcpiDmarTable  DMAR ACPI table\r
+\r
+  @return EFI_SUCCESS  The DMAR DRHD table is parsed.\r
+**/\r
+EFI_STATUS\r
+ParseDmarAcpiTableDrhd (\r
+  IN EFI_ACPI_DMAR_HEADER                    *AcpiDmarTable\r
+  );\r
+\r
+/**\r
+  Parse DMAR DRHD table.\r
+\r
+  @param VTdInfo            The VTd engine context information.\r
+**/\r
+VOID\r
+ParseDmarAcpiTableRmrr (\r
+  IN VTD_INFO                    *VTdInfo\r
+  );\r
+\r
+/**\r
+  Dump DMAR ACPI table.\r
+\r
+  @param[in]  Dmar  DMAR ACPI table\r
+**/\r
+VOID\r
+DumpAcpiDMAR (\r
+  IN EFI_ACPI_DMAR_HEADER  *Dmar\r
+  );\r
+\r
+/**\r
+  Get the highest memory.\r
+\r
+  @return the highest memory.\r
+**/\r
+UINT64\r
+GetTopMemory (\r
+  VOID\r
+  );\r
+\r
+extern EFI_GUID mVTdInfoGuid;\r
+\r
 #endif\r
 \r