Jetson-Orin AGX Devkit Linux fails on probing gpc-dma

Hello all,

Using Jetpack 5.0.2 with L4T 35.1

Disabled the smmu for Linux and I observed the following:

[    2.850752] gpiochip1: registered GPIOs 316 to 347 on tegra234-gpio-aon
[    2.851096] tegra-gpcdma 2600000.gpcdma: Missing iommu stream-id
[    2.851260] tegra-gpcdma: probe of 2600000.gpcdma failed with error -22
[    2.851568] tegra-fuse-burn efuse-burn: shutdown limit check disabled
[    2.851726] tegra-fuse-burn efuse-burn: Fuse burn driver initialized

I’m having the above problem. GPC-DMA doesnt probe. It seems the dma driver is not able to get the stream-id but when I look at the device tree, the stream id property is available.

Even though the stream id property is in the dts node, it fails there: nvidia,stream-id = <0x04>;

	gpcdma@2600000 {
		compatible = "nvidia,tegra234-gpcdma";
		reg = <0x00 0x2600000 0x00 0x210000>;
		resets = <0x04 0x12>;
		reset-names = "gpcdma";
		interrupts = <0x00 0x4b 0x04 0x00 0x4c 0x04 0x00 0x4d 0x04 0x00 0x4e 0x04 0x00 0x4f 0x04 0x00 0x50 0x04 0x00 0x51 0x04 0x00 0x52 0x04 0x00 0x53 0x04 0x00 0x54 0x04 0x00 0x55 0x04 0x00 0x56 0x04 0x00 0x57 0x04 0x00 0x58 0x04 0x00 0x59 0x04 0x00 0x5a 0x04 0x00 0x5b 0x04 0x00 0x5c 0x04 0x00 0x5d 0x04 0x00 0x5e 0x04 0x00 0x5f 0x04 0x00 0x60 0x04 0x00 0x61 0x04 0x00 0x62 0x04 0x00 0x63 0x04 0x00 0x64 0x04 0x00 0x65 0x04 0x00 0x66 0x04 0x00 0x67 0x04 0x00 0x68 0x04 0x00 0x69 0x04 0x00 0x6a 0x04 0x00 0x6b 0x04>;
		#dma-cells = <0x01>;
		iommus = <0x02 0x04>;
		nvidia,stream-id = <0x04>;
		nvidia,start-dma-channel-index = <0x01>;
		dma-channels = <0x1f>;
		status = "okay";
		phandle = <0x03>;
  • Then I changed the following lines of the probe function:
--- a/drivers/dma/tegra-gpc-dma.c
+++ b/drivers/dma/tegra-gpc-dma.c
@@ -1362,13 +1362,14 @@ static int tegra_dma_probe(struct platform_device *pdev)
        tdma-> = &pdev->dev;
+       (void) iommu_spec;
        iommu_spec = dev_iommu_fwspec_get(&pdev->dev);
        if (!iommu_spec) {
                dev_err(&pdev->dev, "Missing iommu stream-id\n");
                return -EINVAL;
-       }
-       stream_id = iommu_spec->ids[0] & 0xffff;
+       }*/
+       stream_id = 0x04 & 0xffff;
        ret = of_property_read_u32(pdev->dev.of_node,

and now I see the dma probing correctly at least when linux boots.

[    3.081844] tegra-gpcdma 2600000.gpcdma: GPC DMA driver register 31 channels

Any idea how to test the DMA device from linux user space?

Hi jorge.pereira,

Are you using the devkit or custom board for AGX Orin?

Have you tried the latest Jetpack5.1.1 with R35.3.1?

I could try it out but I really wanted to know how to test this component from user-space?

Is there any other hardware subsystem that depends on gpc-dma?

What’s your use case for gpcdma@2600000?

and why you disable smmu for Linux?

Please also help to provide the serial console log.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.