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

Commit 6cff46f4 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt
Browse files

powerpc: Remove get_irq_desc()



get_irq_desc() is a powerpc-specific version of irq_to_desc(). That
is reason enough to remove it, but it also doesn't know about sparse
irq_desc support which irq_to_desc() does (when we enable it).

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 59e3f837
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -17,8 +17,6 @@
#include <asm/atomic.h>
#include <asm/atomic.h>




#define get_irq_desc(irq) (&irq_desc[(irq)])

/* Define a way to iterate across irqs. */
/* Define a way to iterate across irqs. */
#define for_each_irq(i) \
#define for_each_irq(i) \
	for ((i) = 0; (i) < NR_IRQS; ++(i))
	for ((i) = 0; (i) < NR_IRQS; ++(i))
+1 −1
Original line number Original line Diff line number Diff line
@@ -373,7 +373,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
	hard_irq_disable();
	hard_irq_disable();


	for_each_irq(i) {
	for_each_irq(i) {
		struct irq_desc *desc = irq_desc + i;
		struct irq_desc *desc = irq_to_desc(i);


		if (desc->status & IRQ_INPROGRESS)
		if (desc->status & IRQ_INPROGRESS)
			desc->chip->eoi(i);
			desc->chip->eoi(i);
+15 −13
Original line number Original line Diff line number Diff line
@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p, void *v)
	}
	}


	if (i < NR_IRQS) {
	if (i < NR_IRQS) {
		desc = get_irq_desc(i);
		desc = irq_to_desc(i);
		spin_lock_irqsave(&desc->lock, flags);
		spin_lock_irqsave(&desc->lock, flags);
		action = desc->action;
		action = desc->action;
		if (!action || !action->handler)
		if (!action || !action->handler)
@@ -230,23 +230,25 @@ int show_interrupts(struct seq_file *p, void *v)
#ifdef CONFIG_HOTPLUG_CPU
#ifdef CONFIG_HOTPLUG_CPU
void fixup_irqs(cpumask_t map)
void fixup_irqs(cpumask_t map)
{
{
	struct irq_desc *desc;
	unsigned int irq;
	unsigned int irq;
	static int warned;
	static int warned;


	for_each_irq(irq) {
	for_each_irq(irq) {
		cpumask_t mask;
		cpumask_t mask;


		if (irq_desc[irq].status & IRQ_PER_CPU)
		desc = irq_to_desc(irq);
		if (desc && desc->status & IRQ_PER_CPU)
			continue;
			continue;


		cpumask_and(&mask, irq_desc[irq].affinity, &map);
		cpumask_and(&mask, desc->affinity, &map);
		if (any_online_cpu(mask) == NR_CPUS) {
		if (any_online_cpu(mask) == NR_CPUS) {
			printk("Breaking affinity for irq %i\n", irq);
			printk("Breaking affinity for irq %i\n", irq);
			mask = map;
			mask = map;
		}
		}
		if (irq_desc[irq].chip->set_affinity)
		if (desc->chip->set_affinity)
			irq_desc[irq].chip->set_affinity(irq, &mask);
			desc->chip->set_affinity(irq, &mask);
		else if (irq_desc[irq].action && !(warned++))
		else if (desc->action && !(warned++))
			printk("Cannot set affinity for irq %i\n", irq);
			printk("Cannot set affinity for irq %i\n", irq);
	}
	}


@@ -273,7 +275,7 @@ static inline void handle_one_irq(unsigned int irq)
		return;
		return;
	}
	}


	desc = irq_desc + irq;
	desc = irq_to_desc(irq);
	saved_sp_limit = current->thread.ksp_limit;
	saved_sp_limit = current->thread.ksp_limit;


	irqtp->task = curtp->task;
	irqtp->task = curtp->task;
@@ -535,7 +537,7 @@ struct irq_host *irq_alloc_host(struct device_node *of_node,
			smp_wmb();
			smp_wmb();


			/* Clear norequest flags */
			/* Clear norequest flags */
			get_irq_desc(i)->status &= ~IRQ_NOREQUEST;
			irq_to_desc(i)->status &= ~IRQ_NOREQUEST;


			/* Legacy flags are left to default at this point,
			/* Legacy flags are left to default at this point,
			 * one can then use irq_create_mapping() to
			 * one can then use irq_create_mapping() to
@@ -602,7 +604,7 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq,
			    irq_hw_number_t hwirq)
			    irq_hw_number_t hwirq)
{
{
	/* Clear IRQ_NOREQUEST flag */
	/* Clear IRQ_NOREQUEST flag */
	get_irq_desc(virq)->status &= ~IRQ_NOREQUEST;
	irq_to_desc(virq)->status &= ~IRQ_NOREQUEST;


	/* map it */
	/* map it */
	smp_wmb();
	smp_wmb();
@@ -732,7 +734,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller,


	/* Set type if specified and different than the current one */
	/* Set type if specified and different than the current one */
	if (type != IRQ_TYPE_NONE &&
	if (type != IRQ_TYPE_NONE &&
	    type != (get_irq_desc(virq)->status & IRQF_TRIGGER_MASK))
	    type != (irq_to_desc(virq)->status & IRQF_TRIGGER_MASK))
		set_irq_type(virq, type);
		set_irq_type(virq, type);
	return virq;
	return virq;
}
}
@@ -804,7 +806,7 @@ void irq_dispose_mapping(unsigned int virq)
	irq_map[virq].hwirq = host->inval_irq;
	irq_map[virq].hwirq = host->inval_irq;


	/* Set some flags */
	/* Set some flags */
	get_irq_desc(virq)->status |= IRQ_NOREQUEST;
	irq_to_desc(virq)->status |= IRQ_NOREQUEST;


	/* Free it */
	/* Free it */
	irq_free_virt(virq, 1);
	irq_free_virt(virq, 1);
@@ -1001,7 +1003,7 @@ void irq_early_init(void)
	unsigned int i;
	unsigned int i;


	for (i = 0; i < NR_IRQS; i++)
	for (i = 0; i < NR_IRQS; i++)
		get_irq_desc(i)->status |= IRQ_NOREQUEST;
		irq_to_desc(i)->status |= IRQ_NOREQUEST;
}
}


/* We need to create the radix trees late */
/* We need to create the radix trees late */
@@ -1064,7 +1066,7 @@ static int virq_debug_show(struct seq_file *m, void *private)
		      "chip name", "host name");
		      "chip name", "host name");


	for (i = 1; i < NR_IRQS; i++) {
	for (i = 1; i < NR_IRQS; i++) {
		desc = get_irq_desc(i);
		desc = irq_to_desc(i);
		spin_lock_irqsave(&desc->lock, flags);
		spin_lock_irqsave(&desc->lock, flags);


		if (desc->action && desc->action->handler) {
		if (desc->action && desc->action->handler) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -132,7 +132,7 @@ static int
cpld_pic_host_map(struct irq_host *h, unsigned int virq,
cpld_pic_host_map(struct irq_host *h, unsigned int virq,
			     irq_hw_number_t hw)
			     irq_hw_number_t hw)
{
{
	get_irq_desc(virq)->status |= IRQ_LEVEL;
	irq_to_desc(virq)->status |= IRQ_LEVEL;
	set_irq_chip_and_handler(virq, &cpld_pic, handle_level_irq);
	set_irq_chip_and_handler(virq, &cpld_pic, handle_level_irq);
	return 0;
	return 0;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -114,7 +114,7 @@ void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
static int media5200_irq_map(struct irq_host *h, unsigned int virq,
static int media5200_irq_map(struct irq_host *h, unsigned int virq,
			     irq_hw_number_t hw)
			     irq_hw_number_t hw)
{
{
	struct irq_desc *desc = get_irq_desc(virq);
	struct irq_desc *desc = irq_to_desc(virq);


	pr_debug("%s: h=%p, virq=%i, hwirq=%i\n", __func__, h, virq, (int)hw);
	pr_debug("%s: h=%p, virq=%i, hwirq=%i\n", __func__, h, virq, (int)hw);
	set_irq_chip_data(virq, &media5200_irq);
	set_irq_chip_data(virq, &media5200_irq);
Loading