The communication between CPU and GPU on Jetson nano

Good days,

I am interested in the communication between the CPU and the GPU on the Jetson nano and am trying to investigate this.
I have two questions.

  1. What driver is used for the communication between CPU and GPU in Jetson nano?
  2. Are the drivers open source? If so, where can I find it?

In Jetson nano, when a userland process requests the GPU to perform a calculation and the GPU finishes the calculation, the CPU should receive an interrupt.

Is it the closed driver called nvgpu that is output when the command “lsmod” is executed?
Or is it a driver called host_syncpt[1] described in the source “/proc/interrupts”?
Or is it something else?

[1]nvidia/drivers/video/tegra/host/host1x_instr.c

Environment
Hardware: Jetson nano
Kernel: linux kernel-4.9

Thank you in advance.

What’s your use case?

Thank you for replying.

I am customising the linux kernel.

Then I try to change the priority of interrupts(Bottom Half) by GPU to CPU , and add features that allows CPU to identify if the interrupt is by the GPU or not.

So I need to solve this question.

Hi,

The source of the GPU driver is not public.
What kind of information do you need for the customization?

Thanks.

You can check the system interrupts by below command. gk20 is GPU module.

nvidia@nvidia-desktop:~$ cat /proc/interrupts | grep -i gk
 75:      25752          0          0          0          0          0     GICv2 102 Level     gk20a_stall
 76:          0          0          0          0          0          0     GICv2 103 Level     gk20a_nonstall

I need “unsigned int irq” or “const char *name” in “struct irqaction”[2]

Is the description of gk20a_stall different from this source file?[3]

\public_sources\public_sources\Linux_for_Tegra\source\public\kernel_src\kernel_src\kernel\nvgpu\drivers\gpu\nvgpu\

Does it mean that some of the nvgpu drivers(gk20a_stall etc.) are publicly available?

I got this source file from Jetson Linux R32.7.1 Release Page | NVIDIA Developer

[2] inclede/linux/interrupt.h
[3]nvgpu/os/linux/module.c

Hi,

All the nvgpu driver we can share are just in the source code file you downloaded. Anything else is not public.

Thank you for helping.

I understood that gk20a_stall is used to copy data etc., and checked that it is used many times using the command “watch”.
But, gk20a_nonstall is rarely used, when is it executed?

Hi,

I am not able to reply your question since I don’t directly work on the nvgpu driver If you need help, I can share this to internal team. What is the exact question here?

BTW, generally we don’t suggest customer to customize the nvgpu driver. If there is any error created after this customization, we may not able to support it.

What is the exact question here?

I have two questions.

  1. What is difference between gk20a_ninstall and gk20a_stall?
  2. when is gk20a_nonstall executed?

We look forward to hearing back from you.

Whenever a stall interrupt is in progress, the GPU engines are stalled from progressing further till the interrupt is handled. However, for nonstall interrupts, the engines are not stalled. There could be a few more components alongwith the engines, e.g. FECS etc.

Thanks for your anwser^^

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