aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/amd-iommu.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-02-28 13:21:49 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-02-28 13:21:49 +0000
commit974373490d7598b177da9b449ce20bec559867fc (patch)
treebbf8110ebbd06043e59176d5aa1fbb97d0223b05 /xen/include/asm-x86/amd-iommu.h
parent912ede3b1ae1ef0ad3010424f046f951972d7605 (diff)
downloadxen-974373490d7598b177da9b449ce20bec559867fc.tar.gz
xen-974373490d7598b177da9b449ce20bec559867fc.tar.bz2
xen-974373490d7598b177da9b449ce20bec559867fc.zip
Add ACPI tables support for AMD IOMMU
Configuration information for AMD IOMMU control fields are descirbed by I/O virtualization Reporting Structure (IVRS) table, this patch set parses IVRS table and updates iommu control flags according to the result. Signed-off-by: Wei Wang <wei.wang2@amd.com>
Diffstat (limited to 'xen/include/asm-x86/amd-iommu.h')
-rw-r--r--xen/include/asm-x86/amd-iommu.h32
1 files changed, 28 insertions, 4 deletions
diff --git a/xen/include/asm-x86/amd-iommu.h b/xen/include/asm-x86/amd-iommu.h
index e91158b6a7..6c373977a3 100644
--- a/xen/include/asm-x86/amd-iommu.h
+++ b/xen/include/asm-x86/amd-iommu.h
@@ -43,15 +43,26 @@ struct amd_iommu {
struct list_head list;
spinlock_t lock; /* protect iommu */
- int iotlb_support;
- int ht_tunnel_support;
- int not_present_cached;
+ u16 bdf;
+ u8 cap_offset;
u8 revision;
+ u8 unit_id;
+ u8 msi_number;
u8 root_bus;
u8 first_devfn;
u8 last_devfn;
+ u8 pte_not_present_cached;
+ u8 ht_tunnel_support;
+ u8 iotlb_support;
+
+ u8 isochronous;
+ u8 coherent;
+ u8 res_pass_pw;
+ u8 pass_pw;
+ u8 ht_tunnel_enable;
+
int last_downstream_bus;
int downstream_bus_present[PCI_MAX_BUS_COUNT];
@@ -61,10 +72,23 @@ struct amd_iommu {
struct table_struct dev_table;
struct table_struct cmd_buffer;
u32 cmd_buffer_tail;
+ struct table_struct event_log;
+ u32 event_log_head;
- int exclusion_enabled;
+ int exclusion_enable;
+ int exclusion_allow_all;
unsigned long exclusion_base;
unsigned long exclusion_limit;
};
+struct ivrs_mappings {
+ u16 dte_requestor_id;
+ u8 dte_sys_mgt_enable;
+ u8 dte_allow_exclusion;
+ u8 unity_map_enable;
+ u8 write_permission;
+ u8 read_permission;
+ unsigned long addr_range_start;
+ unsigned long addr_range_length;
+};
#endif /* _ASM_X86_64_AMD_IOMMU_H */