提交 45607b68 编写于 作者: M Michael Zoran 提交者: Zheng Zengkai

ARM64: Round-Robin dispatch IRQs between CPUs.

raspberrypi inclusion
category: feature
bugzilla: 50432

--------------------------------

IRQ-CPU mapping is round robined on ARM64 to increase
concurrency and allow multiple interrupts to be serviced
at a time.  This reduces the need for FIQ.
Signed-off-by: NMichael Zoran <mzoran@crowfest.net>
Signed-off-by: NFang Yafen <yafen@iscas.ac.cn>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 ebacad58
...@@ -154,10 +154,23 @@ static void armctrl_unmask_irq(struct irq_data *d) ...@@ -154,10 +154,23 @@ static void armctrl_unmask_irq(struct irq_data *d)
} }
} }
#ifdef CONFIG_ARM64
void bcm2836_arm_irqchip_spin_gpu_irq(void);
static void armctrl_ack_irq(struct irq_data *d)
{
bcm2836_arm_irqchip_spin_gpu_irq();
}
#endif
static struct irq_chip armctrl_chip = { static struct irq_chip armctrl_chip = {
.name = "ARMCTRL-level", .name = "ARMCTRL-level",
.irq_mask = armctrl_mask_irq, .irq_mask = armctrl_mask_irq,
.irq_unmask = armctrl_unmask_irq .irq_unmask = armctrl_unmask_irq,
#ifdef CONFIG_ARM64
.irq_ack = armctrl_ack_irq
#endif
}; };
static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr, static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr,
......
...@@ -87,6 +87,27 @@ static void bcm2836_arm_irqchip_unmask_gpu_irq(struct irq_data *d) ...@@ -87,6 +87,27 @@ static void bcm2836_arm_irqchip_unmask_gpu_irq(struct irq_data *d)
{ {
} }
#ifdef CONFIG_ARM64
void bcm2836_arm_irqchip_spin_gpu_irq(void)
{
u32 i;
void __iomem *gpurouting = (intc.base + LOCAL_GPU_ROUTING);
u32 routing_val = readl(gpurouting);
for (i = 1; i <= 3; i++) {
u32 new_routing_val = (routing_val + i) & 3;
if (cpu_active(new_routing_val)) {
writel(new_routing_val, gpurouting);
return;
}
}
}
EXPORT_SYMBOL(bcm2836_arm_irqchip_spin_gpu_irq);
#endif
static struct irq_chip bcm2836_arm_irqchip_gpu = { static struct irq_chip bcm2836_arm_irqchip_gpu = {
.name = "bcm2836-gpu", .name = "bcm2836-gpu",
.irq_mask = bcm2836_arm_irqchip_mask_gpu_irq, .irq_mask = bcm2836_arm_irqchip_mask_gpu_irq,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册