aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2007-02-02 11:48:19 -0500
committerLen Brown <len.brown@intel.com>2007-02-02 21:14:22 -0500
commit2502fffb1958da66fa50a475081cb6827acdd9f3 (patch)
tree204c0626f7fcffd1ce86eac259aa452fdac79687
parentad71860a17ba33eb0e673e9e2cf5ba0d8e3e3fdd (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.h14
-rw-r--r--include/acpi/actbl1.h73
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
104typedef 105typedef
105void (*ACPI_TABLE_HANDLER) (struct acpi_table_header * table); 106void (*ACPI_TABLE_HANDLER) (struct acpi_table_header * table);
@@ -147,6 +148,11 @@ extern struct acpi_dmtable_info acpi_dm_table_info_boot[];
147extern struct acpi_dmtable_info acpi_dm_table_info_cpep[]; 148extern struct acpi_dmtable_info acpi_dm_table_info_cpep[];
148extern struct acpi_dmtable_info acpi_dm_table_info_cpep0[]; 149extern struct acpi_dmtable_info acpi_dm_table_info_cpep0[];
149extern struct acpi_dmtable_info acpi_dm_table_info_dbgp[]; 150extern struct acpi_dmtable_info acpi_dm_table_info_dbgp[];
151extern struct acpi_dmtable_info acpi_dm_table_info_dmar[];
152extern struct acpi_dmtable_info acpi_dm_table_info_dmar_hdr[];
153extern struct acpi_dmtable_info acpi_dm_table_info_dmar_scope[];
154extern struct acpi_dmtable_info acpi_dm_table_info_dmar0[];
155extern struct acpi_dmtable_info acpi_dm_table_info_dmar1[];
150extern struct acpi_dmtable_info acpi_dm_table_info_ecdt[]; 156extern struct acpi_dmtable_info acpi_dm_table_info_ecdt[];
151extern struct acpi_dmtable_info acpi_dm_table_info_facs[]; 157extern struct acpi_dmtable_info acpi_dm_table_info_facs[];
152extern struct acpi_dmtable_info acpi_dm_table_info_fadt1[]; 158extern 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
202void acpi_dm_dump_cpep(struct acpi_table_header *table); 208void acpi_dm_dump_cpep(struct acpi_table_header *table);
203 209
210void acpi_dm_dump_dmar(struct acpi_table_header *table);
211
204void acpi_dm_dump_fadt(struct acpi_table_header *table); 212void acpi_dm_dump_fadt(struct acpi_table_header *table);
205 213
206void acpi_dm_dump_srat(struct acpi_table_header *table); 214void 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
236struct 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
244struct 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
253enum 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
259struct 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
268enum 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
281struct 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
292struct 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 ******************************************************************************/