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