Re: [RFC PATCH v1] irqchip: add support for SMP irq router

From: Sebastian Frias
Date: Tue Jul 05 2016 - 12:38:51 EST


Hi Jason,

On 07/05/2016 05:53 PM, Jason Cooper wrote:
>>
>> Thanks for your comments.
>> So, aside from some naming issues, do you think the driver is ok?
>
> Well, it's going to be few days before I can really dig in to this.
> Until then, what I can say I see is that it looks like you're using
> devicetree to tell Linux how to lay out the irq domains. That's not
> right :(

Ok, so that replies my questions 1 and 2, thanks.

>
> The devicetree should *only* describe the hardware. Would *BSD be able
> to use the description in the dtb effectively?
>
> iiuc, I think irq-crossbar.c may be a similar enough in task to give you
> an idea or two.

I already did something like that, you can see it here:

https://marc.info/?l=linux-kernel&m=146592235919308&w=2

the problem with that code is that it cannot handle more than 24 IRQs (the
number of outputs of the router), because they are not being shared.

Maybe I need a sort of hybrid approach by reintroducing part of
"irq-crossbar.c" code to replace the irq domain layout that is currently
being done using DT properties ?

However, I have not seen any examples of how to describe, using the DT,
an association between a device HW irq, and the GIC hwirq where it goes to,
nor how to express in the DT that multiple devices should share a given GIC
hwirq.
Basically, when a device requests the IRQ specified in its DT, I need:
- to know which GIC hwirq line should I route it to (or the GIC to tell
me which one it expects)
- two devices should be able to request to share the same GIC hwirq

If you take a look at the DT for drivers/irqchip/irq-tango.c
(arch/arm/boot/dts/tango4-common.dtsi) you will see that 3 domains are
created using DT nodes. The difference being that in the irq-tango.c case
the routing is fixed w.r.t the GIC.

Best regards,

Sebastian