forked from Minki/linux
genirq: Provide and use __irq_can_set_affinity()
Provide a irq_desc based variant of irq_can_set_affinity() to avoid a redundant lookup for the core code users. [ tglx: Split out from combo patch ] Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
0dcdbc9755
commit
e019c249a6
@ -115,6 +115,14 @@ EXPORT_SYMBOL(synchronize_irq);
|
||||
#ifdef CONFIG_SMP
|
||||
cpumask_var_t irq_default_affinity;
|
||||
|
||||
static int __irq_can_set_affinity(struct irq_desc *desc)
|
||||
{
|
||||
if (!desc || !irqd_can_balance(&desc->irq_data) ||
|
||||
!desc->irq_data.chip || !desc->irq_data.chip->irq_set_affinity)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* irq_can_set_affinity - Check if the affinity of a given irq can be set
|
||||
* @irq: Interrupt to check
|
||||
@ -122,13 +130,7 @@ cpumask_var_t irq_default_affinity;
|
||||
*/
|
||||
int irq_can_set_affinity(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
|
||||
if (!desc || !irqd_can_balance(&desc->irq_data) ||
|
||||
!desc->irq_data.chip || !desc->irq_data.chip->irq_set_affinity)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
return __irq_can_set_affinity(irq_to_desc(irq));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -366,7 +368,7 @@ setup_affinity(unsigned int irq, struct irq_desc *desc, struct cpumask *mask)
|
||||
int node = irq_desc_get_node(desc);
|
||||
|
||||
/* Excludes PER_CPU and NO_BALANCE interrupts */
|
||||
if (!irq_can_set_affinity(irq))
|
||||
if (!__irq_can_set_affinity(desc))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user