Skip to content

Commit

Permalink
ARCv2: intc: IDU: support irq affinity
Browse files Browse the repository at this point in the history
With this nsim standlone / OSCI have working irq affinity - AXS103 still
needs some work as IDU is not visible in intc hierarchy yet !

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
  • Loading branch information
Vineet Gupta committed Jul 6, 2015
1 parent bccea41 commit 83ce3e6
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion arch/arc/kernel/mcip.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,28 @@ static void idu_irq_unmask(struct irq_data *data)
raw_spin_unlock_irqrestore(&mcip_lock, flags);
}

#ifdef CONFIG_SMP
static int
idu_irq_set_affinity(struct irq_data *d, const struct cpumask *cpumask, bool f)
idu_irq_set_affinity(struct irq_data *data, const struct cpumask *cpumask,
bool force)
{
unsigned long flags;
cpumask_t online;

/* errout if no online cpu per @cpumask */
if (!cpumask_and(&online, cpumask, cpu_online_mask))
return -EINVAL;

raw_spin_lock_irqsave(&mcip_lock, flags);

idu_set_dest(data->hwirq, cpumask_bits(&online)[0]);
idu_set_mode(data->hwirq, IDU_M_TRIG_LEVEL, IDU_M_DISTRI_RR);

raw_spin_unlock_irqrestore(&mcip_lock, flags);

return IRQ_SET_MASK_OK;
}
#endif

static struct irq_chip idu_irq_chip = {
.name = "MCIP IDU Intc",
Expand Down

0 comments on commit 83ce3e6

Please sign in to comment.