aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2008-07-10 14:16:37 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-12 02:44:48 -0400
commit1886e8a90a580f3ad343f2065c84c1b9e1dac9ef (patch)
tree1f0a6b536a1bb7b24585973e70ad8e1a9a076f09 /include/linux
parentc42d9f32443397aed2d37d37df161392e6a5862f (diff)
x64, x2apic/intr-remap: code re-structuring, to be used by both DMA and Interrupt remapping
Allocate the iommu during the parse of DMA remapping hardware definition structures. And also, introduce routines for device scope initialization which will be explicitly called during dma-remapping initialization. These will be used for enabling interrupt remapping separately from the existing DMA-remapping enabling sequence. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Cc: akpm@linux-foundation.org Cc: arjan@linux.intel.com Cc: andi@firstfloor.org Cc: ebiederm@xmission.com Cc: jbarnes@virtuousgeek.org Cc: steiner@sgi.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/dmar.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/dmar.h b/include/linux/dmar.h
index 56c73b847551..3ab07e425583 100644
--- a/include/linux/dmar.h
+++ b/include/linux/dmar.h
@@ -46,12 +46,14 @@ extern int intel_iommu_init(void);
46 46
47extern int dmar_table_init(void); 47extern int dmar_table_init(void);
48extern int early_dmar_detect(void); 48extern int early_dmar_detect(void);
49extern int dmar_dev_scope_init(void);
49 50
50extern struct list_head dmar_drhd_units; 51extern struct list_head dmar_drhd_units;
51extern struct list_head dmar_rmrr_units; 52extern struct list_head dmar_rmrr_units;
52 53
53struct dmar_drhd_unit { 54struct dmar_drhd_unit {
54 struct list_head list; /* list of drhd units */ 55 struct list_head list; /* list of drhd units */
56 struct acpi_dmar_header *hdr; /* ACPI header */
55 u64 reg_base_addr; /* register base address*/ 57 u64 reg_base_addr; /* register base address*/
56 struct pci_dev **devices; /* target device array */ 58 struct pci_dev **devices; /* target device array */
57 int devices_cnt; /* target device count */ 59 int devices_cnt; /* target device count */
@@ -62,6 +64,7 @@ struct dmar_drhd_unit {
62 64
63struct dmar_rmrr_unit { 65struct dmar_rmrr_unit {
64 struct list_head list; /* list of rmrr units */ 66 struct list_head list; /* list of rmrr units */
67 struct acpi_dmar_header *hdr; /* ACPI header */
65 u64 base_address; /* reserved base address*/ 68 u64 base_address; /* reserved base address*/
66 u64 end_address; /* reserved end address */ 69 u64 end_address; /* reserved end address */
67 struct pci_dev **devices; /* target devices */ 70 struct pci_dev **devices; /* target devices */
@@ -72,6 +75,8 @@ struct dmar_rmrr_unit {
72 list_for_each_entry(drhd, &dmar_drhd_units, list) 75 list_for_each_entry(drhd, &dmar_drhd_units, list)
73#define for_each_rmrr_units(rmrr) \ 76#define for_each_rmrr_units(rmrr) \
74 list_for_each_entry(rmrr, &dmar_rmrr_units, list) 77 list_for_each_entry(rmrr, &dmar_rmrr_units, list)
78
79extern int alloc_iommu(struct dmar_drhd_unit *);
75#else 80#else
76static inline void detect_intel_iommu(void) 81static inline void detect_intel_iommu(void)
77{ 82{
@@ -81,6 +86,9 @@ static inline int intel_iommu_init(void)
81{ 86{
82 return -ENODEV; 87 return -ENODEV;
83} 88}
84 89static inline int dmar_table_init(void)
90{
91 return -ENODEV;
92}
85#endif /* !CONFIG_DMAR */ 93#endif /* !CONFIG_DMAR */
86#endif /* __DMAR_H__ */ 94#endif /* __DMAR_H__ */