x86, irq: Move local APIC related code from io_apic.c into vector.c
Create arch/x86/kernel/apic/vector.c to host local APIC related code, prepare for making MSI/HT_IRQ independent of IOAPIC. Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Joerg Roedel <joro@8bytes.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Rafael J. Wysocki <rjw@rjwysocki.net> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Prarit Bhargava <prarit@redhat.com> Cc: Grant Likely <grant.likely@linaro.org> Link: http://lkml.kernel.org/r/1414397531-28254-10-git-send-email-jiang.liu@linux.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Thomas Gleixner
parent
55a0e2b122
commit
74afab7af7
@@ -111,6 +111,8 @@ struct irq_2_irte {
|
||||
#endif /* CONFIG_IRQ_REMAP */
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
struct irq_data;
|
||||
|
||||
struct irq_cfg {
|
||||
cpumask_var_t domain;
|
||||
cpumask_var_t old_domain;
|
||||
@@ -134,28 +136,27 @@ struct irq_cfg {
|
||||
|
||||
extern struct irq_cfg *irq_cfg(unsigned int irq);
|
||||
extern struct irq_cfg *irqd_cfg(struct irq_data *irq_data);
|
||||
extern void setup_vector_irq(int cpu);
|
||||
extern struct irq_cfg *alloc_irq_and_cfg_at(unsigned int at, int node);
|
||||
extern void lock_vector_lock(void);
|
||||
extern void unlock_vector_lock(void);
|
||||
extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *);
|
||||
extern void clear_irq_vector(int irq, struct irq_cfg *cfg);
|
||||
extern void setup_vector_irq(int cpu);
|
||||
#ifdef CONFIG_SMP
|
||||
extern void send_cleanup_vector(struct irq_cfg *);
|
||||
#else
|
||||
static inline void send_cleanup_vector(struct irq_cfg *c) { }
|
||||
#endif
|
||||
extern void irq_complete_move(struct irq_cfg *cfg);
|
||||
|
||||
struct irq_data;
|
||||
int apic_set_affinity(struct irq_data *, const struct cpumask *,
|
||||
unsigned int *dest_id);
|
||||
#endif /* CONFIG_X86_LOCAL_APIC */
|
||||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
extern void lock_vector_lock(void);
|
||||
extern void unlock_vector_lock(void);
|
||||
extern void __setup_vector_irq(int cpu);
|
||||
#else
|
||||
extern int apic_retrigger_irq(struct irq_data *data);
|
||||
extern void apic_ack_edge(struct irq_data *data);
|
||||
extern int apic_set_affinity(struct irq_data *data, const struct cpumask *mask,
|
||||
unsigned int *dest_id);
|
||||
#else /* CONFIG_X86_LOCAL_APIC */
|
||||
static inline void lock_vector_lock(void) {}
|
||||
static inline void unlock_vector_lock(void) {}
|
||||
static inline void __setup_vector_irq(int cpu) {}
|
||||
#endif
|
||||
#endif /* CONFIG_X86_LOCAL_APIC */
|
||||
|
||||
/* IOAPIC */
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
@@ -181,11 +182,13 @@ extern void enable_IO_APIC(void);
|
||||
extern void disable_IO_APIC(void);
|
||||
extern void setup_ioapic_dest(void);
|
||||
extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin);
|
||||
extern void print_IO_APICs(void);
|
||||
|
||||
extern unsigned long io_apic_irqs;
|
||||
#define IO_APIC_IRQ(x) (((x) >= NR_IRQS_LEGACY) || ((1 << (x)) & io_apic_irqs))
|
||||
#else /* CONFIG_X86_IO_APIC */
|
||||
#define IO_APIC_IRQ(x) 0
|
||||
static inline void print_IO_APICs(void) {}
|
||||
#endif /* CONFIG_X86_IO_APIC */
|
||||
|
||||
/* Statistics */
|
||||
|
||||
Reference in New Issue
Block a user