x86: Embedd irq_2_iommu into irq_cfg
That interrupt remapping code is x86 specific and tied to the io_apic code. No need for separate allocator functions in the interrupt remapping code. This allows to simplify the code and irq_2_iommu is small (13 bytes on 64bit) so it's not a real problem even if interrupt remapping is runtime disabled. If it's compile time disabled the impact is zero. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Ingo Molnar <mingo@elte.hu> Acked-by: Suresh Siddha <suresh.b.siddha@intel.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
d0ad63927c
commit
423f085952
@ -78,6 +78,13 @@ static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr,
|
|||||||
irq_attr->polarity = polarity;
|
irq_attr->polarity = polarity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct irq_2_iommu {
|
||||||
|
struct intel_iommu *iommu;
|
||||||
|
u16 irte_index;
|
||||||
|
u16 sub_handle;
|
||||||
|
u8 irte_mask;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is performance-critical, we want to do it O(1)
|
* This is performance-critical, we want to do it O(1)
|
||||||
*
|
*
|
||||||
@ -89,6 +96,9 @@ struct irq_cfg {
|
|||||||
cpumask_var_t old_domain;
|
cpumask_var_t old_domain;
|
||||||
u8 vector;
|
u8 vector;
|
||||||
u8 move_in_progress : 1;
|
u8 move_in_progress : 1;
|
||||||
|
#ifdef CONFIG_INTR_REMAP
|
||||||
|
struct irq_2_iommu irq_2_iommu;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct irq_cfg *irq_cfg(unsigned int);
|
extern struct irq_cfg *irq_cfg(unsigned int);
|
||||||
|
@ -46,13 +46,6 @@ static __init int setup_intremap(char *str)
|
|||||||
}
|
}
|
||||||
early_param("intremap", setup_intremap);
|
early_param("intremap", setup_intremap);
|
||||||
|
|
||||||
struct irq_2_iommu {
|
|
||||||
struct intel_iommu *iommu;
|
|
||||||
u16 irte_index;
|
|
||||||
u16 sub_handle;
|
|
||||||
u8 irte_mask;
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_HARDIRQS
|
#ifdef CONFIG_GENERIC_HARDIRQS
|
||||||
static struct irq_2_iommu *irq_2_iommu(unsigned int irq)
|
static struct irq_2_iommu *irq_2_iommu(unsigned int irq)
|
||||||
{
|
{
|
||||||
|
@ -106,6 +106,7 @@ struct irte {
|
|||||||
__u64 high;
|
__u64 high;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_INTR_REMAP
|
#ifdef CONFIG_INTR_REMAP
|
||||||
extern int intr_remapping_enabled;
|
extern int intr_remapping_enabled;
|
||||||
extern int intr_remapping_supported(void);
|
extern int intr_remapping_supported(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user