Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎10-26-2020

DPU kernel module will not be probed unless there is an entry in system-user.dtsi

I am using Vivado & Petalinux 2020.1 and following the DPU-TRD Vivado flow.

During petalinux-config the pl.dtsi is updated from the xsa file and include a tree node for the DPU


                DPUCZDX8G_0: DPUCZDX8G@80000000 {
                        clock-names = "s_axi_aclk", "dpu_2x_clk", "m_axi_dpu_aclk";
                        clocks = <&zynqmp_clk 71>, <&misc_clk_0>, <&misc_clk_1>;
                        compatible = "xlnx,DPUCZDX8G-3.3";
                        interrupt-names = "dpu_interrupt", "sfm_interrupt";
                        interrupt-parent = <&gic>;
                        interrupts = <0 106 4 0 110 4>;
                        reg = <0x0 0x80000000 0x0 0x1000000>;



Petalinux is of course configured to include the pl.dtsi in the final device tree (DTG Settings > Remove PL from devicetree - OFF).

Unless I add a tree node for the DPU in the system-user.dtsi, as instructed the DPU IP documentation (pg. 44) the DPU kernel module will not be loaded during linux boot.

here is the node in system-user.dtsi


    dpu {
        compatible = "xilinx,dpu";
        base-addr = <0x0080000000>;
        dpucore {
            compatible = "xilinx,dpucore";
            interrupt-parent = <&gic>;
            interrupts = <0x0 0x6A 0x4>;
            core-num = <0x1>;
        softmax {
                compatible = "xilinx, smfc";
                interrupt-parent = <&gic>;
                interrupts = <0x0 0x6E 0x4>;
                core-num = <0x1>;



Does anyone know why this is happening? Is there a difference in nodes in pl.dtsi Vs those in system-user.dtsi?

In addition to that, the node generated by the tools in pl.dtsi has syntax differences in comparison with the instruction in the DPU IP documentation,

f.ex. compatible = "xlnx,DPUCZDX8G-3.3"; Vs compatible = "xilinx,dpu";

I conclude a loaded kernel module from the kernel log

[    4.822480] dpu: loading out-of-tree module taints kernel.
[    4.825517] [DPU][171]Found DPU signature addr = 0x80000000 in device-tree
[    4.825531] [DPU][171]Checking DPU signature at addr = 0x80f00000, 
[    4.825599] [DPU][171]DPU signature checking done!
[    4.839623] [DPU][171]Init SMFC IP...
[    4.839721] [DPU][171]Request SMFC IRQ 48 successful.
[    4.839743] [DPU][171]Init SMFC IP done
0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
Registered: ‎09-12-2007

The node in the pldtsi is generated by the devicetree generator. This uses the HW info to populate the node. For the compatibility, it just uses the VLNV property in the HW info.

The system-user.dtsi is mostly used to add nodes, or modify existing nodes. 

The flow you are using is fine, and it seems to work. 

0 Kudos