On 05.07.21 09:10, Pierre-Loup Gosse via Xenomai wrote:
> Hi,
> 
> For a client project I try to port Xenomai 3.1 + I-pipe to the kernel
> linux-imx 5.4.70 for arm64 (i.MX8 Mini). I adapted the I-pipe patch
> (5.4.72-arm64). The kernel boots and works well.
> 

I think the imx8mm is fairly well supported in upstream by now. Maybe
worth to have a look at 5.10-dovetail and the Xenomai devel branch
(upcoming 3.2) so that you do not need to fiddle with the downstream
linux-imx mess in your product. I think Philippe is even testing on
imx8mm, but I might be wrong.

> However, for the non-regression test, I run a client test that uses
> Xenomai and UDD (to register a PCIe driver). The test waits for a
> hardware IRQ from a PCIe device. This IRQ is never received which lead
> the test to fail. To be more precise, after running the test, Xenomai
> show that no IRQs was received for this device:
> 
> # cat /proc/xenomai/irq
>   IRQ         CPU0        CPU1 CPU2        CPU3
>     3:        4027       14050 3708        4488         [timer/0]
> **223:           0           0 0           0         netx00
>  1031:           0           0 0           0         [sync]
>  1032:           1           1 1           0         [timer-ipi]
>  1033:           0           0 0           0         [reschedule]
>  1037:           0          44 0           0         [virtual]
> 
> 'netx00' is our device with the IRQ 223.
> /proc/xenomai/irq simply reads the irqall counter per CPU per IRQ
> (/__ipipe_cpudata_irq_hits/). This means that no IRQ 223 went through
> the I-pipe, or worse, not even sent.
> 
> But in comparison, I reproduced this test with the old client image
> (Xenomai 3.1 + I-pipe on the kernel linux-imx 4.14.98) on the same
> hardware (arm64 i.MX8 Mini). The test passed and Xenomai received IRQs
> for 'next00'.
> 
> This leads me to the conclusion that on the new kernel our IRQ is sent
> but does not pass through the I-pipe.
> 
> I noticed that some irq handler functions from driver do not use the
> /ipipe_handle_domain_irq/ or /ipipe_handle_demuxed_irq/ but the generic
> function, respectively /handle_domain_irq/ and /generic_handle_irq/.
> Especially for the imx irqchip (_drivers/irqchip/irq-imx-intmux.c_ and
> _drivers/irqchip/irq-imx-irqsteer.c_). I patched these files to use
> /ipipe_handle_demuxed_irq/ rather than /generic_handle_irq/. But
> /proc/xenomai/irq still shows 0 IRQs and the test still fails.
> 
> Am I doing things right ? Or am I missing something ?

Greg may provide some hints here from his porting to 5.4.

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux

Reply via email to