aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/msi.h26
-rw-r--r--kernel/irq/Kconfig3
2 files changed, 29 insertions, 0 deletions
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 7c28762851a3..3eb42ede0114 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -86,6 +86,9 @@ struct msi_desc {
86 struct device *dev; 86 struct device *dev;
87 struct msi_msg msg; 87 struct msi_msg msg;
88 struct irq_affinity_desc *affinity; 88 struct irq_affinity_desc *affinity;
89#ifdef CONFIG_IRQ_MSI_IOMMU
90 const void *iommu_cookie;
91#endif
89 92
90 union { 93 union {
91 /* PCI MSI/X specific data */ 94 /* PCI MSI/X specific data */
@@ -129,6 +132,29 @@ struct msi_desc {
129#define for_each_msi_entry_safe(desc, tmp, dev) \ 132#define for_each_msi_entry_safe(desc, tmp, dev) \
130 list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list) 133 list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list)
131 134
135#ifdef CONFIG_IRQ_MSI_IOMMU
136static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc)
137{
138 return desc->iommu_cookie;
139}
140
141static inline void msi_desc_set_iommu_cookie(struct msi_desc *desc,
142 const void *iommu_cookie)
143{
144 desc->iommu_cookie = iommu_cookie;
145}
146#else
147static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc)
148{
149 return NULL;
150}
151
152static inline void msi_desc_set_iommu_cookie(struct msi_desc *desc,
153 const void *iommu_cookie)
154{
155}
156#endif
157
132#ifdef CONFIG_PCI_MSI 158#ifdef CONFIG_PCI_MSI
133#define first_pci_msi_entry(pdev) first_msi_entry(&(pdev)->dev) 159#define first_pci_msi_entry(pdev) first_msi_entry(&(pdev)->dev)
134#define for_each_pci_msi_entry(desc, pdev) \ 160#define for_each_pci_msi_entry(desc, pdev) \
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 5f3e2baefca9..8fee06625c37 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -91,6 +91,9 @@ config GENERIC_MSI_IRQ_DOMAIN
91 select IRQ_DOMAIN_HIERARCHY 91 select IRQ_DOMAIN_HIERARCHY
92 select GENERIC_MSI_IRQ 92 select GENERIC_MSI_IRQ
93 93
94config IRQ_MSI_IOMMU
95 bool
96
94config HANDLE_DOMAIN_IRQ 97config HANDLE_DOMAIN_IRQ
95 bool 98 bool
96 99