|
@@ -101,6 +101,7 @@ static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr,
|
|
|
irq_attr->polarity = polarity;
|
|
|
}
|
|
|
|
|
|
+/* Intel specific interrupt remapping information */
|
|
|
struct irq_2_iommu {
|
|
|
struct intel_iommu *iommu;
|
|
|
u16 irte_index;
|
|
@@ -108,6 +109,12 @@ struct irq_2_iommu {
|
|
|
u8 irte_mask;
|
|
|
};
|
|
|
|
|
|
+/* AMD specific interrupt remapping information */
|
|
|
+struct irq_2_irte {
|
|
|
+ u16 devid; /* Device ID for IRTE table */
|
|
|
+ u16 index; /* Index into IRTE table*/
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* This is performance-critical, we want to do it O(1)
|
|
|
*
|
|
@@ -120,7 +127,10 @@ struct irq_cfg {
|
|
|
u8 vector;
|
|
|
u8 move_in_progress : 1;
|
|
|
#ifdef CONFIG_IRQ_REMAP
|
|
|
- struct irq_2_iommu irq_2_iommu;
|
|
|
+ union {
|
|
|
+ struct irq_2_iommu irq_2_iommu;
|
|
|
+ struct irq_2_irte irq_2_irte;
|
|
|
+ };
|
|
|
#endif
|
|
|
};
|
|
|
|