Replies: 64 comments 143 replies
-
|
Hello and thank you for your interest! RM stands for "Resource Manager" and it is the internal name of the driver that gets compiled into Depending on the context, GSP-RM can refer either to the new driver architecture that uses the "GSP" microcontroller, or it can refer to the code running on said microcontroller. To avoid ambiguity, the latter is often called "Physical RM" instead, and code running in kernel is called "Kernel RM". RMAPI is the interface nvidia.ko (RM) exposes to other kernel modules and to userspace. |
Beta Was this translation helpful? Give feedback.
-
|
Meta: Do you think it makes sense to group these questions into a single issue, which we could then pin? |
Beta Was this translation helpful? Give feedback.
-
|
Thanks! Yes, I think it's a good idea to group these questions into a single issue. |
Beta Was this translation helpful? Give feedback.
-
|
Okay, this is now a pinned generic code-related Q&A issue. |
Beta Was this translation helpful? Give feedback.
-
|
Would it be possible to enable Github Discussions, which has a cleaner structure for quick questions? |
Beta Was this translation helpful? Give feedback.
-
|
@antdking Please see #44 . I do agree Discussions would be a much cleaner option, and I expect we'll enable them soon enough. Will gladly retire this issue when that happens, but until such a time this is the best we have for these quick one-off questions. |
Beta Was this translation helpful? Give feedback.
-
|
Will this driver support GPU virtualization with untrusted guests on consumer hardware? This would be a huge win for Qubes OS, which is currently forced to rely on software rendering. Support for CUDA or for enterprise GPUs would not be as helpful, as Qubes OS is an end-user operating system focused on the desktop use-case. |
Beta Was this translation helpful? Give feedback.
-
|
@DemiMarie At this point all I can say is that the current codebase does not support virtualization - neither as a host nor a guest. I don't currently have any information about future changes in this regard. |
Beta Was this translation helpful? Give feedback.
-
|
We've now enabled Discussions in this github repository. I've moved this issue to Discussions, though maybe we should close this and start a separate discussion for each question... |
Beta Was this translation helpful? Give feedback.
-
|
As many of us have noticed so far. NVIDIA has defaulted to one of the age old standards of C90. Moving forward, would NVIDIA be open to adopting more modern standards such as C11? or is there a very specific reason as to why we must stay C90? My argument for adopting the newer standard would be the newer features, most prominently seen in C++ via operators, templates, and constexpr. constexpr in particular leads to less hardcoded variables in favor of a compile time resolved one. What do you think? |
Beta Was this translation helpful? Give feedback.
-
|
I'm curious what the reason was for retaining whitespace in what look like deleted sections of the source eg https://github.com/NVIDIA/open-gpu-kernel-modules/blob/main/kernel-open/nvidia/nv.c#L623. Was this intentional or just a side effect on how it was done? |
Beta Was this translation helpful? Give feedback.
-
|
Considering that NVIDIA does not currently have plans to open-source the userspace components of the driver, at the minimum, will there be any officiial documentation or libraries to help create a userspace RM client (I think this constitutes opening and controlling |
Beta Was this translation helpful? Give feedback.
-
|
Since the other topic got locked Ill ask here too. While this Repo provides kernel drivers for turing, ampere and upcoming generations will PMU firmware be published to allow nouveau to reclock Maxwell 2 and Pascal GPUs? |
Beta Was this translation helpful? Give feedback.
-
|
Skimming through the codebase, I see references to something called |
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
|
How GPU fetch the push buffer? by DMA or others? |
Beta Was this translation helpful? Give feedback.
-
|
Can the driver intercept a kernel launch or other high-level operations such as context creation or module loading? |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
Why does this code exist, and when will it be resolved? Earlier versions don't have that code, is it okay to use Access counter? |
Beta Was this translation helpful? Give feedback.
-
|
I'm a newbie of the open-gpu-kernel-modules, when i read the code, i got into trouble when understanding "pRmApi->Control()", e,g, |
Beta Was this translation helpful? Give feedback.
-
|
I just got into open-gpu-kernel-modules. When I checked utilization.memory through the nvidia-smi command, the result was not the percentage of used memory, and I could not find relevant information in the code. Can anyone tell me what the utilization.memory parameter represents? |
Beta Was this translation helpful? Give feedback.
-
|
What is the difference between |
Beta Was this translation helpful? Give feedback.
-
|
When I called cuMemAlloc, I noticed that there are 3 ioctls, namely 0x2b of nvidia_ioctl, 73 of uvm_ioctl and 33 of uvm_ioctl. I wonder how cuda decides what parameters to pass to them. They are 'hObjectNew' in nvidia_ioctl(0x2b) (it is the hMemory of uvm_ioctl(33)) and the 'base' in uvm_ioctl(both 73 and 33). I guess it has something to do with cuContext, but I don't know how to continue tracing them, can you give me some hints? |
Beta Was this translation helpful? Give feedback.
-
|
What is the relationship between UserD, Doorbell, GP_PUT and PushBuffer? |
Beta Was this translation helpful? Give feedback.
-
|
What is "swap group" concept in |
Beta Was this translation helpful? Give feedback.
-
|
I would like to understand the sequence of calls that occur in the runtime upon calling |
Beta Was this translation helpful? Give feedback.
-
|
Question: once I get the physical address table from nvidia_p2p_get_pages function, is there a way to remap them to a new virtual address area in gpu for user space access? |
Beta Was this translation helpful? Give feedback.
-
|
Hello, based on my tests of CUDA and Vulkan, I found: When initializing the CUDA Context's 'GP_FIFO', the user-space driver first allocates a block of 'VideoMemory', then calls the NV_ESC_RM_MAP_MEMORY ioctl, and finally uses mmap to map it to user space. In contrast, the Vulkan user-space driver create 'GP_FIFO' by allocating a block of 'SystemMemory' first during initialization, then calls the NV_ESC_RM_MAP_MEMORY ioctl, followed by mmap to map it to user space, and then allocates a block of 'VirtualMemory', mapping the virtual memory and system memory together using the NV_ESC_RM_MAP_MEMORY_DMA ioctl. What is the difference between these two methods? Moreover, when creating a channel, the 'gpFifoOffset' parameter passed in is a user-space virtual address in CUDA, while it is a GPU virtual address in Vulkan, which seems a bit strange. Could you explain these? |
Beta Was this translation helpful? Give feedback.
-
|
Hi folks, I’m currently studying how GPU faults are handled and I’m trying to understand whether there is a practical way to trigger a UVM non-replayable fault. As I understand it, UVM categorizes faults into replayable and non-replayable. Roughly speaking, faults coming from the Graphics Engine (SM) are replayable, while faults coming from the Copy Engine or PBDMA are non-replayable. So far, the only detailed explanation I’ve found is in the comments inside The comment gives an example: I tried to reproduce this in two ways:
But none of these attempts triggered a non-replayable fault. I monitored Before I keep digging, I wanted to ask: |
Beta Was this translation helpful? Give feedback.
-
|
Hello, some gpu commands' subchannel is 5-7. Open-gpu-doc states that "Subchannels 5-7 are for software methods. Any methods on these subchannels (including SetObject methods) are kicked back to software for handling via the SW method dispatch mechanism using the NV_PPBDMA_INTR_*_DEVICE interrupt. SW may choose to send a SetObject method to each engine subchannel before sending any methods on that particular subchannel in order to support multiple software classes." |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
[mtijanic] Please use this issue to ask simple questions about the codebase, such as what a certain feature is, how a given codepath works, what a given acronym means, etc. Please keep your questions as specific as possible.
I see a lot of RM in the code related to the RMAPI module, what does this RM and GSP-RM mean exactly?
Beta Was this translation helpful? Give feedback.
All reactions