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

Commit d5dedd45 authored by Yinghai Lu's avatar Yinghai Lu Committed by Ingo Molnar
Browse files

irq: change ->set_affinity() to return status



according to Ingo, change set_affinity() in irq_chip should return int,
because that way we can handle failure cases in a much cleaner way, in
the genirq layer.

v2: fix two typos

[ Impact: extend API ]

Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: linux-arch@vger.kernel.org
LKML-Reference: <49F654E9.4070809@kernel.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fcef5911
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -176,22 +176,26 @@ cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity)
	}
}

static void
static int
dp264_set_affinity(unsigned int irq, const struct cpumask *affinity)
{ 
	spin_lock(&dp264_irq_lock);
	cpu_set_irq_affinity(irq, *affinity);
	tsunami_update_irq_hw(cached_irq_mask);
	spin_unlock(&dp264_irq_lock);

	return 0;
}

static void
static int
clipper_set_affinity(unsigned int irq, const struct cpumask *affinity)
{ 
	spin_lock(&dp264_irq_lock);
	cpu_set_irq_affinity(irq - 16, *affinity);
	tsunami_update_irq_hw(cached_irq_mask);
	spin_unlock(&dp264_irq_lock);

	return 0;
}

static struct hw_interrupt_type dp264_irq_type = {
+3 −1
Original line number Diff line number Diff line
@@ -157,13 +157,15 @@ titan_cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity)

}

static void
static int
titan_set_irq_affinity(unsigned int irq, const struct cpumask *affinity)
{ 
	spin_lock(&titan_irq_lock);
	titan_cpu_set_irq_affinity(irq - 16, *affinity);
	titan_update_irq_hw(titan_cached_irq_mask);
	spin_unlock(&titan_irq_lock);

	return 0;
}

static void
+3 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ static void gic_unmask_irq(unsigned int irq)
}

#ifdef CONFIG_SMP
static void gic_set_cpu(unsigned int irq, const struct cpumask *mask_val)
static int gic_set_cpu(unsigned int irq, const struct cpumask *mask_val)
{
	void __iomem *reg = gic_dist_base(irq) + GIC_DIST_TARGET + (gic_irq(irq) & ~3);
	unsigned int shift = (irq % 4) * 8;
@@ -122,6 +122,8 @@ static void gic_set_cpu(unsigned int irq, const struct cpumask *mask_val)
	val |= 1 << (cpu + shift);
	writel(val, reg);
	spin_unlock(&irq_controller_lock);

	return 0;
}
#endif

+3 −1
Original line number Diff line number Diff line
@@ -325,12 +325,14 @@ static void end_crisv32_irq(unsigned int irq)
{
}

void set_affinity_crisv32_irq(unsigned int irq, const struct cpumask *dest)
int set_affinity_crisv32_irq(unsigned int irq, const struct cpumask *dest)
{
	unsigned long flags;
	spin_lock_irqsave(&irq_lock, flags);
	irq_allocations[irq - FIRST_IRQ].mask = *dest;
	spin_unlock_irqrestore(&irq_lock, flags);

	return 0;
}

static struct irq_chip crisv32_irq_type = {
+2 −1
Original line number Diff line number Diff line
@@ -21,9 +21,10 @@ hpsim_irq_noop (unsigned int irq)
{
}

static void
static int
hpsim_set_affinity_noop(unsigned int a, const struct cpumask *b)
{
	return 0;
}

static struct hw_interrupt_type irq_type_hp_sim = {
Loading