[meta-xilinx] Interrupt forwarding in AMP configuration

Mike Looijmans mike.looijmans at topic.nl
Fri Dec 23 01:17:38 PST 2016


On 23-12-16 09:15, Eric Wong wrote:
> On Thu, Dec 22, 2016 at 10:30 PM, Mike Looijmans
> <mike.looijmans at topic.nl> wrote:
>> The devicetree only guards that other drivers won't steal your interrupts
>> away. It does not cause the remoteproc driver to activate or assign them.
>>
>> Your firmware has to register and activate the interrupt by itself. If Linux
>> complains about your interrupt, you probably routed it to the wrong CPU.
>
> Yes, my firmware does register and activate the interrupt.  I was
> under the (apparently mistaken) impression that specifying the
> interrupts in the remoteproc devicetree entry does the routing
> somehow. If it doesn't, then I'm not sure how/where the interrupt
> routing is being accomplished in my system.  I'm not aware of doing
> anything else that might route the interrupt.  Where are the typical
> place(s) where interrupt routing is done in a Linux AMP system using
> Yocto and meta-xilinx?

It's mostly done in hardware. Both CPU's have one or two dedicated lines for 
interrupts that can be used in logic. Perfect for systems that only need one, 
or for very latency critical tasks. Or for attaching a PL interrupt controller.

The SOC interrupt controller, which you're likely using, has a bitmask per IRQ 
to specify to what CPU it must be delivered. Probably you're using some 
library function to register them, and if you've told it that you're running 
on CPU #1, it will set the registers of the IRQ controller such that the 
interrupts are routed only to CPU #1.

> Aside from not knowing precisely how interrupt routing is occurring,
> all the FPGA interrupts are working fine (being serviced by the RTOS
> on CPU1 and Linux on CPU0 has no issues with them), but only as long
> as the interrupt line idles low and triggered by the leading rising
> edge of a pulse.  For reasons, there was one of these interrupts that
> I wanted to idle high and triggered by the trailing rising edge of a
> negative pulse, but that has not been cooperating.  Something really
> doesn't like the interrupt line to be idling high.  When I make this
> interrupt like the others, things are fine.

The PS-PL IRQ controller does not support active-low signals. Simply put an 
inverter into the signal line to make them active-high.

An interrupt that constantly fires will disrupt the hardware, as it will be 
constantly asking for attention. This may 'starve' other interrupts in the 
controller.




Kind regards,

Mike Looijmans
System Expert

TOPIC Products
Materiaalweg 4, NL-5681 RJ Best
Postbus 440, NL-5680 AK Best
Telefoon: +31 (0) 499 33 69 79
E-mail: mike.looijmans at topicproducts.com
Website: www.topicproducts.com

Please consider the environment before printing this e-mail








More information about the meta-xilinx mailing list