diff options
author | Bob Moore <robert.moore@intel.com> | 2007-02-02 11:48:19 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-02 21:14:22 -0500 |
commit | 2502fffb1958da66fa50a475081cb6827acdd9f3 (patch) | |
tree | 204c0626f7fcffd1ce86eac259aa452fdac79687 | |
parent | ad71860a17ba33eb0e673e9e2cf5ba0d8e3e3fdd (diff) |
ACPICA: Add support for DMAR table
Implement support for ACPI DMAR table (DMA
Remapping Table) in header files and disassembler.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r-- | include/acpi/acdisasm.h | 14 | ||||
-rw-r--r-- | include/acpi/actbl1.h | 73 |
2 files changed, 84 insertions, 3 deletions
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h index 9a7d6921f534..722583af53b9 100644 --- a/include/acpi/acdisasm.h +++ b/include/acpi/acdisasm.h | |||
@@ -97,9 +97,10 @@ typedef const struct acpi_dmtable_info { | |||
97 | #define ACPI_DMT_CHKSUM 20 | 97 | #define ACPI_DMT_CHKSUM 20 |
98 | #define ACPI_DMT_SPACEID 21 | 98 | #define ACPI_DMT_SPACEID 21 |
99 | #define ACPI_DMT_GAS 22 | 99 | #define ACPI_DMT_GAS 22 |
100 | #define ACPI_DMT_MADT 23 | 100 | #define ACPI_DMT_DMAR 23 |
101 | #define ACPI_DMT_SRAT 24 | 101 | #define ACPI_DMT_MADT 24 |
102 | #define ACPI_DMT_EXIT 25 | 102 | #define ACPI_DMT_SRAT 25 |
103 | #define ACPI_DMT_EXIT 26 | ||
103 | 104 | ||
104 | typedef | 105 | typedef |
105 | void (*ACPI_TABLE_HANDLER) (struct acpi_table_header * table); | 106 | void (*ACPI_TABLE_HANDLER) (struct acpi_table_header * table); |
@@ -147,6 +148,11 @@ extern struct acpi_dmtable_info acpi_dm_table_info_boot[]; | |||
147 | extern struct acpi_dmtable_info acpi_dm_table_info_cpep[]; | 148 | extern struct acpi_dmtable_info acpi_dm_table_info_cpep[]; |
148 | extern struct acpi_dmtable_info acpi_dm_table_info_cpep0[]; | 149 | extern struct acpi_dmtable_info acpi_dm_table_info_cpep0[]; |
149 | extern struct acpi_dmtable_info acpi_dm_table_info_dbgp[]; | 150 | extern struct acpi_dmtable_info acpi_dm_table_info_dbgp[]; |
151 | extern struct acpi_dmtable_info acpi_dm_table_info_dmar[]; | ||
152 | extern struct acpi_dmtable_info acpi_dm_table_info_dmar_hdr[]; | ||
153 | extern struct acpi_dmtable_info acpi_dm_table_info_dmar_scope[]; | ||
154 | extern struct acpi_dmtable_info acpi_dm_table_info_dmar0[]; | ||
155 | extern struct acpi_dmtable_info acpi_dm_table_info_dmar1[]; | ||
150 | extern struct acpi_dmtable_info acpi_dm_table_info_ecdt[]; | 156 | extern struct acpi_dmtable_info acpi_dm_table_info_ecdt[]; |
151 | extern struct acpi_dmtable_info acpi_dm_table_info_facs[]; | 157 | extern struct acpi_dmtable_info acpi_dm_table_info_facs[]; |
152 | extern struct acpi_dmtable_info acpi_dm_table_info_fadt1[]; | 158 | extern struct acpi_dmtable_info acpi_dm_table_info_fadt1[]; |
@@ -201,6 +207,8 @@ void acpi_dm_dump_asf(struct acpi_table_header *table); | |||
201 | 207 | ||
202 | void acpi_dm_dump_cpep(struct acpi_table_header *table); | 208 | void acpi_dm_dump_cpep(struct acpi_table_header *table); |
203 | 209 | ||
210 | void acpi_dm_dump_dmar(struct acpi_table_header *table); | ||
211 | |||
204 | void acpi_dm_dump_fadt(struct acpi_table_header *table); | 212 | void acpi_dm_dump_fadt(struct acpi_table_header *table); |
205 | 213 | ||
206 | void acpi_dm_dump_srat(struct acpi_table_header *table); | 214 | void acpi_dm_dump_srat(struct acpi_table_header *table); |
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index 8ae30b7ed652..515d82c5ec63 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h | |||
@@ -61,6 +61,7 @@ | |||
61 | #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ | 61 | #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ |
62 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ | 62 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ |
63 | #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ | 63 | #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ |
64 | #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ | ||
64 | #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ | 65 | #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ |
65 | #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ | 66 | #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ |
66 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ | 67 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ |
@@ -228,6 +229,78 @@ struct acpi_table_dbgp { | |||
228 | 229 | ||
229 | /******************************************************************************* | 230 | /******************************************************************************* |
230 | * | 231 | * |
232 | * DMAR - DMA Remapping table | ||
233 | * | ||
234 | ******************************************************************************/ | ||
235 | |||
236 | struct acpi_table_dmar { | ||
237 | struct acpi_table_header header; /* Common ACPI table header */ | ||
238 | u8 width; /* Host Address Width */ | ||
239 | u8 reserved[11]; | ||
240 | }; | ||
241 | |||
242 | /* DMAR subtable header */ | ||
243 | |||
244 | struct acpi_dmar_header { | ||
245 | u16 type; | ||
246 | u16 length; | ||
247 | u8 flags; | ||
248 | u8 reserved[3]; | ||
249 | }; | ||
250 | |||
251 | /* Values for subtable type in struct acpi_dmar_header */ | ||
252 | |||
253 | enum acpi_dmar_type { | ||
254 | ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, | ||
255 | ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, | ||
256 | ACPI_DMAR_TYPE_RESERVED = 2 /* 2 and greater are reserved */ | ||
257 | }; | ||
258 | |||
259 | struct acpi_dmar_device_scope { | ||
260 | u8 entry_type; | ||
261 | u8 length; | ||
262 | u8 segment; | ||
263 | u8 bus; | ||
264 | }; | ||
265 | |||
266 | /* Values for entry_type in struct acpi_dmar_device_scope */ | ||
267 | |||
268 | enum acpi_dmar_scope_type { | ||
269 | ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, | ||
270 | ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, | ||
271 | ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, | ||
272 | ACPI_DMAR_SCOPE_TYPE_RESERVED = 3 /* 3 and greater are reserved */ | ||
273 | }; | ||
274 | |||
275 | /* | ||
276 | * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header | ||
277 | */ | ||
278 | |||
279 | /* 0: Hardware Unit Definition */ | ||
280 | |||
281 | struct acpi_dmar_hardware_unit { | ||
282 | struct acpi_dmar_header header; | ||
283 | u64 address; /* Register Base Address */ | ||
284 | }; | ||
285 | |||
286 | /* Flags */ | ||
287 | |||
288 | #define ACPI_DMAR_INCLUDE_ALL (1) | ||
289 | |||
290 | /* 1: Reserved Memory Defininition */ | ||
291 | |||
292 | struct acpi_dmar_reserved_memory { | ||
293 | struct acpi_dmar_header header; | ||
294 | u64 address; /* 4_k aligned base address */ | ||
295 | u64 end_address; /* 4_k aligned limit address */ | ||
296 | }; | ||
297 | |||
298 | /* Flags */ | ||
299 | |||
300 | #define ACPI_DMAR_ALLOW_ALL (1) | ||
301 | |||
302 | /******************************************************************************* | ||
303 | * | ||
231 | * ECDT - Embedded Controller Boot Resources Table | 304 | * ECDT - Embedded Controller Boot Resources Table |
232 | * | 305 | * |
233 | ******************************************************************************/ | 306 | ******************************************************************************/ |