mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-17 01:08:44 +07:00
x86: Remove create/destroy_irq()
No more users. Remove the cruft Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Grant Likely <grant.likely@linaro.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: x86@kernel.org Link: http://lkml.kernel.org/r/20140507154336.760446122@linutronix.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
fd5d8abf8b
commit
54859f59fc
@ -281,18 +281,6 @@ static struct irq_cfg *alloc_irq_and_cfg_at(unsigned int at, int node)
|
|||||||
return cfg;
|
return cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alloc_irqs_from(unsigned int from, unsigned int count, int node)
|
|
||||||
{
|
|
||||||
return irq_alloc_descs_from(from, count, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_irq_at(unsigned int at, struct irq_cfg *cfg)
|
|
||||||
{
|
|
||||||
free_irq_cfg(at, cfg);
|
|
||||||
irq_free_desc(at);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct io_apic {
|
struct io_apic {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
unsigned int unused[3];
|
unsigned int unused[3];
|
||||||
@ -2916,100 +2904,8 @@ static int __init ioapic_init_ops(void)
|
|||||||
device_initcall(ioapic_init_ops);
|
device_initcall(ioapic_init_ops);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dynamic irq allocate and deallocation
|
* Dynamic irq allocate and deallocation. Should be replaced by irq domains!
|
||||||
*/
|
*/
|
||||||
unsigned int __create_irqs(unsigned int from, unsigned int count, int node)
|
|
||||||
{
|
|
||||||
struct irq_cfg **cfg;
|
|
||||||
unsigned long flags;
|
|
||||||
int irq, i;
|
|
||||||
|
|
||||||
if (from < nr_irqs_gsi)
|
|
||||||
from = nr_irqs_gsi;
|
|
||||||
|
|
||||||
cfg = kzalloc_node(count * sizeof(cfg[0]), GFP_KERNEL, node);
|
|
||||||
if (!cfg)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
irq = alloc_irqs_from(from, count, node);
|
|
||||||
if (irq < 0)
|
|
||||||
goto out_cfgs;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
cfg[i] = alloc_irq_cfg(irq + i, node);
|
|
||||||
if (!cfg[i])
|
|
||||||
goto out_irqs;
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&vector_lock, flags);
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
if (__assign_irq_vector(irq + i, cfg[i], apic->target_cpus()))
|
|
||||||
goto out_vecs;
|
|
||||||
raw_spin_unlock_irqrestore(&vector_lock, flags);
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
irq_set_chip_data(irq + i, cfg[i]);
|
|
||||||
irq_clear_status_flags(irq + i, IRQ_NOREQUEST);
|
|
||||||
}
|
|
||||||
|
|
||||||
kfree(cfg);
|
|
||||||
return irq;
|
|
||||||
|
|
||||||
out_vecs:
|
|
||||||
for (i--; i >= 0; i--)
|
|
||||||
__clear_irq_vector(irq + i, cfg[i]);
|
|
||||||
raw_spin_unlock_irqrestore(&vector_lock, flags);
|
|
||||||
out_irqs:
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
free_irq_at(irq + i, cfg[i]);
|
|
||||||
out_cfgs:
|
|
||||||
kfree(cfg);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int create_irq_nr(unsigned int from, int node)
|
|
||||||
{
|
|
||||||
return __create_irqs(from, 1, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
int create_irq(void)
|
|
||||||
{
|
|
||||||
int node = cpu_to_node(0);
|
|
||||||
unsigned int irq_want;
|
|
||||||
int irq;
|
|
||||||
|
|
||||||
irq_want = nr_irqs_gsi;
|
|
||||||
irq = create_irq_nr(irq_want, node);
|
|
||||||
|
|
||||||
if (irq == 0)
|
|
||||||
irq = -1;
|
|
||||||
|
|
||||||
return irq;
|
|
||||||
}
|
|
||||||
|
|
||||||
void destroy_irq(unsigned int irq)
|
|
||||||
{
|
|
||||||
struct irq_cfg *cfg = irq_get_chip_data(irq);
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
|
|
||||||
|
|
||||||
free_remapped_irq(irq);
|
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&vector_lock, flags);
|
|
||||||
__clear_irq_vector(irq, cfg);
|
|
||||||
raw_spin_unlock_irqrestore(&vector_lock, flags);
|
|
||||||
free_irq_at(irq, cfg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void destroy_irqs(unsigned int irq, unsigned int count)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
destroy_irq(irq + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
int arch_setup_hwirq(unsigned int irq, int node)
|
int arch_setup_hwirq(unsigned int irq, int node)
|
||||||
{
|
{
|
||||||
struct irq_cfg *cfg;
|
struct irq_cfg *cfg;
|
||||||
|
@ -526,12 +526,8 @@ static inline void irq_set_percpu_devid_flags(unsigned int irq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Handle dynamic irq creation and destruction */
|
/* Handle dynamic irq creation and destruction */
|
||||||
extern unsigned int create_irq_nr(unsigned int irq_want, int node);
|
|
||||||
extern unsigned int __create_irqs(unsigned int from, unsigned int count,
|
|
||||||
int node);
|
|
||||||
extern int create_irq(void);
|
extern int create_irq(void);
|
||||||
extern void destroy_irq(unsigned int irq);
|
extern void destroy_irq(unsigned int irq);
|
||||||
extern void destroy_irqs(unsigned int irq, unsigned int count);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dynamic irq helper functions. Obsolete. Use irq_alloc_desc* and
|
* Dynamic irq helper functions. Obsolete. Use irq_alloc_desc* and
|
||||||
|
Loading…
Reference in New Issue
Block a user