diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-07-10 14:16:37 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-12 02:44:48 -0400 |
commit | 1886e8a90a580f3ad343f2065c84c1b9e1dac9ef (patch) | |
tree | 1f0a6b536a1bb7b24585973e70ad8e1a9a076f09 /include/linux | |
parent | c42d9f32443397aed2d37d37df161392e6a5862f (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.h | 10 |
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 | ||
47 | extern int dmar_table_init(void); | 47 | extern int dmar_table_init(void); |
48 | extern int early_dmar_detect(void); | 48 | extern int early_dmar_detect(void); |
49 | extern int dmar_dev_scope_init(void); | ||
49 | 50 | ||
50 | extern struct list_head dmar_drhd_units; | 51 | extern struct list_head dmar_drhd_units; |
51 | extern struct list_head dmar_rmrr_units; | 52 | extern struct list_head dmar_rmrr_units; |
52 | 53 | ||
53 | struct dmar_drhd_unit { | 54 | struct 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 | ||
63 | struct dmar_rmrr_unit { | 65 | struct 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 | |||
79 | extern int alloc_iommu(struct dmar_drhd_unit *); | ||
75 | #else | 80 | #else |
76 | static inline void detect_intel_iommu(void) | 81 | static 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 | 89 | static 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__ */ |