]> git.proxmox.com Git - mirror_edk2.git/blame - IntelSiliconPkg/Feature/VTd/IntelVTdPmrPei/IntelVTdPmrPei.h
IntelSiliconPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / IntelSiliconPkg / Feature / VTd / IntelVTdPmrPei / IntelVTdPmrPei.h
CommitLineData
3f5ed3fa
JY
1/** @file\r
2 The definition for DMA access Library.\r
3\r
b2725f57 4 Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>\r
8f7a05e1 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3f5ed3fa
JY
6\r
7**/\r
8\r
9#ifndef __DMA_ACCESS_LIB_H__\r
10#define __DMA_ACCESS_LIB_H__\r
11\r
8e9da4ba 12typedef struct {\r
a1e7cd0b
JY
13 EFI_ACPI_DMAR_HEADER *AcpiDmarTable;\r
14 UINT64 EngineMask;\r
8e9da4ba
JY
15 UINT8 HostAddressWidth;\r
16 UINTN VTdEngineCount;\r
17 UINT64 VTdEngineAddress[1];\r
18} VTD_INFO;\r
19\r
3f5ed3fa
JY
20/**\r
21 Set DMA protected region.\r
22\r
a1e7cd0b 23 @param VTdInfo The VTd engine context information.\r
8e9da4ba 24 @param EngineMask The mask of the VTd engine to be accessed.\r
3f5ed3fa
JY
25 @param LowMemoryBase The protected low memory region base.\r
26 @param LowMemoryLength The protected low memory region length.\r
27 @param HighMemoryBase The protected high memory region base.\r
28 @param HighMemoryLength The protected high memory region length.\r
29\r
30 @retval EFI_SUCCESS The DMA protection is set.\r
31 @retval EFI_UNSUPPORTED The DMA protection is not set.\r
32**/\r
33EFI_STATUS\r
34SetDmaProtectedRange (\r
a1e7cd0b 35 IN VTD_INFO *VTdInfo,\r
8e9da4ba 36 IN UINT64 EngineMask,\r
3f5ed3fa
JY
37 IN UINT32 LowMemoryBase,\r
38 IN UINT32 LowMemoryLength,\r
39 IN UINT64 HighMemoryBase,\r
40 IN UINT64 HighMemoryLength\r
41 );\r
42\r
43/**\r
44 Diable DMA protection.\r
45\r
a1e7cd0b 46 @param VTdInfo The VTd engine context information.\r
8e9da4ba
JY
47 @param EngineMask The mask of the VTd engine to be accessed.\r
48\r
3f5ed3fa
JY
49 @retval DMA protection is disabled.\r
50**/\r
51EFI_STATUS\r
52DisableDmaProtection (\r
a1e7cd0b
JY
53 IN VTD_INFO *VTdInfo,\r
54 IN UINT64 EngineMask\r
55 );\r
56\r
57/**\r
58 Return if the DMA protection is enabled.\r
59\r
60 @param VTdInfo The VTd engine context information.\r
61 @param EngineMask The mask of the VTd engine to be accessed.\r
62\r
63 @retval TRUE DMA protection is enabled in at least one VTd engine.\r
64 @retval FALSE DMA protection is disabled in all VTd engines.\r
65**/\r
66UINT64\r
67GetDmaProtectionEnabledEngineMask (\r
68 IN VTD_INFO *VTdInfo,\r
8e9da4ba 69 IN UINT64 EngineMask\r
3f5ed3fa
JY
70 );\r
71\r
72/**\r
73 Get protected low memory alignment.\r
74\r
a1e7cd0b 75 @param VTdInfo The VTd engine context information.\r
8e9da4ba
JY
76 @param EngineMask The mask of the VTd engine to be accessed.\r
77\r
3f5ed3fa
JY
78 @return protected low memory alignment.\r
79**/\r
80UINT32\r
81GetLowMemoryAlignment (\r
a1e7cd0b 82 IN VTD_INFO *VTdInfo,\r
8e9da4ba 83 IN UINT64 EngineMask\r
3f5ed3fa
JY
84 );\r
85\r
86/**\r
87 Get protected high memory alignment.\r
88\r
a1e7cd0b 89 @param VTdInfo The VTd engine context information.\r
8e9da4ba
JY
90 @param EngineMask The mask of the VTd engine to be accessed.\r
91\r
3f5ed3fa
JY
92 @return protected high memory alignment.\r
93**/\r
94UINT64\r
95GetHighMemoryAlignment (\r
a1e7cd0b
JY
96 IN VTD_INFO *VTdInfo,\r
97 IN UINT64 EngineMask\r
98 );\r
99\r
100/**\r
101 Enable VTd translation table protection.\r
102\r
103 @param VTdInfo The VTd engine context information.\r
104 @param EngineMask The mask of the VTd engine to be accessed.\r
105**/\r
106VOID\r
107EnableVTdTranslationProtection (\r
108 IN VTD_INFO *VTdInfo,\r
109 IN UINT64 EngineMask\r
110 );\r
111\r
112/**\r
113 Disable VTd translation table protection.\r
114\r
115 @param VTdInfo The VTd engine context information.\r
116 @param EngineMask The mask of the VTd engine to be accessed.\r
117**/\r
118VOID\r
119DisableVTdTranslationProtection (\r
120 IN VTD_INFO *VTdInfo,\r
8e9da4ba 121 IN UINT64 EngineMask\r
3f5ed3fa
JY
122 );\r
123\r
a1e7cd0b
JY
124/**\r
125 Parse DMAR DRHD table.\r
126\r
127 @param[in] AcpiDmarTable DMAR ACPI table\r
128\r
129 @return EFI_SUCCESS The DMAR DRHD table is parsed.\r
130**/\r
131EFI_STATUS\r
132ParseDmarAcpiTableDrhd (\r
133 IN EFI_ACPI_DMAR_HEADER *AcpiDmarTable\r
134 );\r
135\r
136/**\r
137 Parse DMAR DRHD table.\r
138\r
139 @param VTdInfo The VTd engine context information.\r
140**/\r
141VOID\r
142ParseDmarAcpiTableRmrr (\r
143 IN VTD_INFO *VTdInfo\r
144 );\r
145\r
146/**\r
147 Dump DMAR ACPI table.\r
148\r
149 @param[in] Dmar DMAR ACPI table\r
150**/\r
151VOID\r
152DumpAcpiDMAR (\r
153 IN EFI_ACPI_DMAR_HEADER *Dmar\r
154 );\r
155\r
a1e7cd0b
JY
156extern EFI_GUID mVTdInfoGuid;\r
157\r
3f5ed3fa
JY
158#endif\r
159\r