# ZCU104 - Pynq overlay failed with DMA

**URL:** <https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208>\
**Category:** Support\
**Created:** [January 5, 2021, 11:34am UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208 "2021-01-05T11:34:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nicolas\_Salmin](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/nicolas_salmin/32/1678_2.png) [@Nicolas\_Salmin](https://discuss.pynq.io/u/Nicolas_Salmin)\
**Post date:** [January 5, 2021, 11:34am UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/1 "2021-01-05T11:34:10Z")

</div>

Hello all !

_Information_

- Board Zcu104
- Yocto branch Zeus
- Pynq 2.5
- Python 3.7.7

We have implemented VDMA with TPG and we would like to use Pynq in order to make some tests.  
I’m trying to run a custom Pynq Image ( with Yocto Zeus ) for ZCU104 board but i’m getting following message

ValueError: Could not find UIO device for interrupt pin for IRQ number 0

According to [this thread](https://discuss.pynq.io/t/valueerror-could-not-find-uio-device-for-interrupt-pin-for-irq-number-0/790) i have added the following node:

But the IRQ “fabric” is missing …

```
/ {
amba {

	fabric@A0000000 {
		compatible = "generic-uio";
		reg = <0x0 0xA0000000 0x0 0x10000>;
		interrupt-parent = <&gic>;
		interrupts = <0x0 0x59 0x4>;
	};
  };
};

```

 ![image](https://us1.discourse-cdn.com/flex019/uploads/pynq1/original/2X/5/54f12d0ef264a5b0c64ded103255aaf7d1dfcf96.png)  
Note that VDMA address is 0xA0000000 (default from Vivado)

Stupid question : How can I update fabric node in order to fix that ? I have to add some block inside the design ?

---

<div class="post-metadata">

**Author:** ![Nicolas\_Salmin](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/nicolas_salmin/32/1678_2.png) [@Nicolas\_Salmin](https://discuss.pynq.io/u/Nicolas_Salmin)\
**Post date:** [January 6, 2021, 7:16pm UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/2 "2021-01-06T19:16:05Z")

</div>

Hello all,

Little update, i’m still stuck on this issue… any help ?

![image](https://us1.discourse-cdn.com/flex019/uploads/pynq1/original/2X/6/6c17760cd82b85aa0720e583d0c291052e3d6ce4.png)

I’m not able to add basic VDMA/TPG IP and get control from Pynq ☹

Cheers,

---

<div class="post-metadata">

**Author:** ![bartokon](https://avatars.discourse-cdn.com/v4/letter/b/8edcca/32.png) [@bartokon](https://discuss.pynq.io/u/bartokon)\
**Post date:** [January 6, 2021, 11:37pm UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/3 "2021-01-06T23:37:22Z")

</div>

Hmm… if you are trying to use runtime PL reconfiguration with gic it is not possible at this moment (I had a similar question some time ago it is some kernel bug).

---

<div class="post-metadata">

**Author:** ![Nicolas\_Salmin](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/nicolas_salmin/32/1678_2.png) [@Nicolas\_Salmin](https://discuss.pynq.io/u/Nicolas_Salmin)\
**Post date:** [January 7, 2021, 8:02am UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/4 "2021-01-07T08:02:30Z")

</div>

Hi @bartokon and thank you for the hint !

Do you have more info about that ? Maybe a worakoud is available ?

Looks strange because it a kind of basic Pynq feature isn’t it ?

Cheers,

---

<div class="post-metadata">

**Author:** ![bartokon](https://avatars.discourse-cdn.com/v4/letter/b/8edcca/32.png) [@bartokon](https://discuss.pynq.io/u/bartokon)\
**Post date:** [January 7, 2021, 3:20pm UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/5 "2021-01-07T15:20:20Z")

</div>

Maybe @rock can elaborate on this matter…

Even without gic you could still use pooling method for detecting interrupts.

---

<div class="post-metadata">

**Author:** ![rock](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/rock/32/32_2.png) [@rock](https://discuss.pynq.io/u/rock)\
**Post date:** [January 7, 2021, 5:45pm UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/6 "2021-01-07T17:45:58Z")

</div>

Yeah, you need to add the same system\_interrupts block as what the base overlay has. Make sure the system interrupts are connected similarly as the base overlay.

---

<div class="post-metadata">

**Author:** ![Nicolas\_Salmin](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/nicolas_salmin/32/1678_2.png) [@Nicolas\_Salmin](https://discuss.pynq.io/u/Nicolas_Salmin)\
**Post date:** [January 7, 2021, 6:15pm UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/7 "2021-01-07T18:15:43Z")

</div>

Hi @rock

Could you please be so kind and be more specific, because i’m not sure to understand what you mean…

There is no simple example on that ? Or maybe a doc ?

---

<div class="post-metadata">

**Author:** ![rock](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/rock/32/32_2.png) [@rock](https://discuss.pynq.io/u/rock)\
**Post date:** [January 29, 2021, 6:29am UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/8 "2021-01-29T06:29:08Z")

</div>

Hi @Nicolas_Salmin , first of all, if you are using pynq image and want to use AXI interrupt controller, it is best to have AXI interrupt controller the same way as what is shown in the base overlay.

Second, for a lot of blocks including DMA, or Vitis IP, even if you don’t use interrupt, the pooling mode can still work. In that way you just refrain from adding the AXI interrupt controller into your block design.

So if no AXI interrupt controller, all good. If with AXI interrupt controller, it has to be the same as the ZCU104 base overlay block design. You can find the design on pynq repo.

---

<div class="post-metadata">

**Author:** ![PeterOgden](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/peterogden/32/55_2.png) [@PeterOgden](https://discuss.pynq.io/u/PeterOgden)\
**Post date:** [February 2, 2021, 10:16am UTC](https://discuss.pynq.io/t/zcu104-pynq-overlay-failed-with-dma/2208/9 "2021-02-02T10:16:29Z")

</div>

For the `fabric` device to apper, in addition to the device-tree fragment you also need to ensure that uio\_pdrv\_genirq.of\_id=“generic-uio” is in your kernel boot args and that CONFIG\_UIO\_PDRV\_GENIRQ=y is in your kernel configuration.

Peter
