Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6783011b authored by Jiang Liu's avatar Jiang Liu Committed by Thomas Gleixner
Browse files

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: default avatarJiang 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: default avatarThomas Gleixner <tglx@linutronix.de>
parent 0d0b4c86
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -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,
+5 −0
Original line number Original line Diff line number Diff line
@@ -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);
+1 −7
Original line number Original line Diff line number Diff line
@@ -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);
}
}


+2 −1
Original line number Original line Diff line number Diff line
@@ -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;
+1 −1
Original line number Original line Diff line number Diff line
@@ -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))
Loading