On Wed, Sep 02, 2015 at 10:55:20AM +0100, Marc Zyngier wrote: > On 02/09/15 10:33, Qais Yousef wrote: > > On 08/28/2015 03:22 PM, Thomas Gleixner wrote: > >> On Fri, 28 Aug 2015, Qais Yousef wrote: > >>> Thanks a lot for the detailed explanation. I wasn't looking for a quick and > >>> dirty solution but my view of the problem is much simpler than yours so my > >>> idea of a solution would look quick and dirty. I have a better appreciation of > >>> the problem now and a way to approach it :-) > >>> > >>> From DT point of view are we OK with this form then > >>> > >>> coprocessor { > >>> interrupt-source = <&intc INT_SPEC COP_HWAFFINITY>; > >>> interrupt-sink = <&intc INT_SPEC CPU_HWAFFINITY>; > >>> } > >>> > >>> and if the root controller sends normal IPI as it sends normal device > >>> interrupts then interrupt-sink can be a standard interrupts property (like in > >>> my case) > >>> > >>> coprocessor { > >>> interrupt-source = <&intc INT_SPEC COP_HWAFFINITY>; > >>> interrupts = <INT_SPEC>; > >>> } > >>> > >>> Does this look right to you? Is there something else that needs to be covered > >>> still? > >> I'm not an DT wizard. I leave that to the DT experts. > >> > > > > Hi Marc Zyngier, Mark Rutland, > > > > Any comments about the DT binding for the IPIs? > > > > To recap, the proposal which is based on Marc Zyngier's is to use > > interrupt-source to represent an IPI from Linux CPU to a coprocessor and > > interrupt-sink to receive an IPI from coprocessor to Linux CPU. > > Hopefully the description above is self explanatory. Please let me know > > if you need more info. Thomas covered the routing, synthesising, and > > requesting parts in the core code. The remaining (high level) issue is > > how to describe the IPIs in DT. > > I'm definitely *not* a DT expert! ;-) My initial binding proposal was > only for wired interrupts, not for IPIs. There is definitely some common > aspects, except for one part: > > Who decides on the IPI number? So far, we've avoided encoding IPI > numbers in the DT just like we don't encode MSIs, because they are > programmable things. My feeling is that we shouldn't put the IPI number > in the DT because the rest of the kernel uses them as well and could > decide to use this particular IPI number for its own use: *clash*. Agree. The best way I've found to design DT bindings is to imagine providing the DT to something other than Linux. The DT should *only* be describing the hardware. As such, I think we should be describing the connection here, and leaving the assignment up to the OS. thx, Jason.