genirq: Introduce helper function irq_data_get_node()
Introduce helper function irq_data_get_node() and variants thereof to hide struct irq_data implementation details. Convert the core code to use them. 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: Bjorn Helgaas <bhelgaas@google.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Kevin Cernekee <cernekee@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Link: http://lkml.kernel.org/r/1433145945-789-5-git-send-email-jiang.liu@linux.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
0d0b4c866b
commit
6783011b48
|
@ -640,6 +640,11 @@ static inline u32 irq_get_trigger_type(unsigned int irq)
|
||||||
return d ? irqd_get_trigger_type(d) : 0;
|
return d ? irqd_get_trigger_type(d) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int irq_data_get_node(struct irq_data *d)
|
||||||
|
{
|
||||||
|
return d->node;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int arch_dynirq_lower_bound(unsigned int from);
|
unsigned int arch_dynirq_lower_bound(unsigned int from);
|
||||||
|
|
||||||
int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node,
|
int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node,
|
||||||
|
|
|
@ -197,6 +197,11 @@ static inline void kstat_incr_irqs_this_cpu(unsigned int irq, struct irq_desc *d
|
||||||
__this_cpu_inc(kstat.irqs_sum);
|
__this_cpu_inc(kstat.irqs_sum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int irq_desc_get_node(struct irq_desc *desc)
|
||||||
|
{
|
||||||
|
return irq_data_get_node(&desc->irq_data);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
bool irq_pm_check_wakeup(struct irq_desc *desc);
|
bool irq_pm_check_wakeup(struct irq_desc *desc);
|
||||||
void irq_pm_install_action(struct irq_desc *desc, struct irqaction *action);
|
void irq_pm_install_action(struct irq_desc *desc, struct irqaction *action);
|
||||||
|
|
|
@ -59,16 +59,10 @@ static void desc_smp_init(struct irq_desc *desc, int node)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int desc_node(struct irq_desc *desc)
|
|
||||||
{
|
|
||||||
return desc->irq_data.node;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline int
|
static inline int
|
||||||
alloc_masks(struct irq_desc *desc, gfp_t gfp, int node) { return 0; }
|
alloc_masks(struct irq_desc *desc, gfp_t gfp, int node) { return 0; }
|
||||||
static inline void desc_smp_init(struct irq_desc *desc, int node) { }
|
static inline void desc_smp_init(struct irq_desc *desc, int node) { }
|
||||||
static inline int desc_node(struct irq_desc *desc) { return 0; }
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node,
|
static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node,
|
||||||
|
@ -300,7 +294,7 @@ static void free_desc(unsigned int irq)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&desc->lock, flags);
|
raw_spin_lock_irqsave(&desc->lock, flags);
|
||||||
desc_set_defaults(irq, desc, desc_node(desc), NULL);
|
desc_set_defaults(irq, desc, irq_desc_get_node(desc), NULL);
|
||||||
raw_spin_unlock_irqrestore(&desc->lock, flags);
|
raw_spin_unlock_irqrestore(&desc->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -830,7 +830,8 @@ static struct irq_data *irq_domain_insert_irq_data(struct irq_domain *domain,
|
||||||
{
|
{
|
||||||
struct irq_data *irq_data;
|
struct irq_data *irq_data;
|
||||||
|
|
||||||
irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL, child->node);
|
irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL,
|
||||||
|
irq_data_get_node(child));
|
||||||
if (irq_data) {
|
if (irq_data) {
|
||||||
child->parent_data = irq_data;
|
child->parent_data = irq_data;
|
||||||
irq_data->irq = child->irq;
|
irq_data->irq = child->irq;
|
||||||
|
|
|
@ -363,7 +363,7 @@ static int
|
||||||
setup_affinity(unsigned int irq, struct irq_desc *desc, struct cpumask *mask)
|
setup_affinity(unsigned int irq, struct irq_desc *desc, struct cpumask *mask)
|
||||||
{
|
{
|
||||||
struct cpumask *set = irq_default_affinity;
|
struct cpumask *set = irq_default_affinity;
|
||||||
int node = desc->irq_data.node;
|
int node = irq_desc_get_node(desc);
|
||||||
|
|
||||||
/* Excludes PER_CPU and NO_BALANCE interrupts */
|
/* Excludes PER_CPU and NO_BALANCE interrupts */
|
||||||
if (!irq_can_set_affinity(irq))
|
if (!irq_can_set_affinity(irq))
|
||||||
|
|
|
@ -241,7 +241,7 @@ static int irq_node_proc_show(struct seq_file *m, void *v)
|
||||||
{
|
{
|
||||||
struct irq_desc *desc = irq_to_desc((long) m->private);
|
struct irq_desc *desc = irq_to_desc((long) m->private);
|
||||||
|
|
||||||
seq_printf(m, "%d\n", desc->irq_data.node);
|
seq_printf(m, "%d\n", irq_desc_get_node(desc));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue