39 Commits
Author SHA1 Message Date
Ayush RanjanandgVisor bot 0b5ee6d4df nvproxy: Add support for v565.57.01.
PiperOrigin-RevId: 720557549
2025-01-28 06:54:35 -08:00
2022tgoel 7399a32b4c Add GPU video codecs support to nvproxy (so that tools like ffmpeg work)
adding cap

tests work

fix merge

unit test

small fixes

additional ioctls for L4 gpu
2025-01-09 01:09:47 +00:00
Ayush RanjanandgVisor bot b11efeaecd nvproxy: Clean up struct field tags.
Before this change, there were 2 places in which the driver struct names were
defined for nvproxy structs:
1. As struct field tags. The first field of structs had a tag `nvproxy:*`. This
   was kind of awkward. Such metadata is usually a struct comment.
2. In version.go while registering the struct with a name. Not all structs are
   defined in nvproxy (for example simple structs). In such cases, the driver
   struct name is directly assigned while registering struct info.

This change gets rid of (1). Most of the struct tags were `nvproxy:"same"`. Now
driverStructs() always infers the driver struct name using the nvproxy struct
name itself. The few cases where the nvproxy tag was needed, because driver
struct name was lower cased, were handled by defining driverStructWithName()
which allows specifying a different name. Now all driver struct names
definitions are in one place.

Along the way, also made the following fixes:
- For some reason, many structs defined in pkg/abi/nvgpu/frontend.go had
  camel-cased naming, while all other structs in pkg/abi/nvgpu/ctrl.go and
  pkg/abi/nvgpu/classes.go were named the same as their driver structs. The
  convention in the abi/* packages is to follow the kernel source naming.
  This is against Go sytle guide, but is more readable for gVisor purposes and
  has been a long accepted convention. This also makes the task of removing (1)
  easier. So renamed all such structs as per their driver names.
- A lot of code in pkg/sentry/devices/nvproxy/version.go was still referring to
  driver struct info as "struct names", even though it was representing more
  than just struct names. It also contains the reflect.Type of the struct which
  is used to compare the nvproxy struct layout to the driver struct layout.

PiperOrigin-RevId: 710648105
2024-12-30 01:32:41 -08:00
Ayush RanjanandgVisor bot e6e1ecbdcc Add support for graphics in nvproxy.
PiperOrigin-RevId: 708100465
2024-12-19 17:41:18 -08:00
Nathan Wang 4b1db872bd nvproxy: Add GF100_PROFILER allocation class and NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ control command 2024-09-27 20:03:57 +00:00
Otto Bittner 960c2d0925 nvproxy: add key-rotation ioctl
Signed-off-by: Otto Bittner <cobittner@posteo.net>
2024-08-27 11:43:56 +02:00
Anthony CuiandgVisor bot 34f8c3f24e Fix inconsistencies with nvproxy ioctl structs compared to the Nvidia driver.
This adds specific handling for NV0000_CTRL_GPU_GET_ID_INFO_PARAMS and
NV0000_CTRL_SYSTEM_GET_P2P_CAPS_PARAMS since they contain pointer fields.
This also fixes the layout of NV0000_CTRL_OS_UNIX_GET_EXPORT_OBJECT_INFO_PARAMS
and NV_CONFIDENTIAL_COMPUTE_ALLOC_PARAMS, and the typing of fields for
NV0000_CTRL_OS_UNIX_EXPORT_OBJECT and UVM_MAP_EXTERNAL_ALLOCATION_PARAMS.

PiperOrigin-RevId: 659630154
2024-08-05 11:54:06 -07:00
Anthony CuiandgVisor bot ced5d60576 Record driver struct names within nvproxy.
This is a necessary addition to enable our Nvidia driver differ tool, and
in general to make it easier to keep nvproxy up to date with driver changes.

The current maps have been partially validated by the test in cl/655637570.

PiperOrigin-RevId: 657705274
2024-07-30 13:16:27 -07:00
Ayush RanjanandgVisor bot 714f1590e1 Add NV00F8_CTRL_CMD_ATTACH_MEM support in nvproxy.
PiperOrigin-RevId: 657316851
2024-07-29 14:01:08 -07:00
Matt Nappo 40a09da5a1 nvproxy: Implement ioctls to display GPU ECC info 2024-07-23 14:32:06 +00:00
gVisor bot e04095d6d7 Merge pull request #10675 from mattnappo:mattnappo/perf-state-ioctl
PiperOrigin-RevId: 654920169
2024-07-22 15:41:30 -07:00
Ayush RanjanandgVisor bot e2f328e234 Add support for missing ioctls used by Triton Interface Server.
PiperOrigin-RevId: 654886437
2024-07-22 14:04:43 -07:00
Matt Nappo 4763cf2316 nvproxy: Added CTRL_CMD_PERF_GET_CURRENT_PSTATE control command 2024-07-22 17:39:31 +00:00
gVisor bot e87ab0a301 Merge pull request #10649 from thundergolfer:master
PiperOrigin-RevId: 652526851
2024-07-15 10:35:51 -07:00
Jonathon Belotti d3d19f12c5 nvproxy: implement missing NV_MEMORY_MULTICAST_FABRIC, NV00FD_* 2024-07-12 21:03:46 +00:00
Anthony CuiandgVisor bot 32ed2f7987 Add missing control ioctls used by NCCL-tests.
Fixes #10647.

PiperOrigin-RevId: 651491183
2024-07-11 12:10:27 -07:00
gVisor bot 9911927f94 Merge pull request #10434 from thundergolfer:master
PiperOrigin-RevId: 635850995
2024-05-21 10:29:31 -07:00
Jonathon Belotti bf18079f50 Add NV0000_CTRL_CMD_OS_UNIX_GET_EXPORT_OBJECT_INFO,
NV0000_CTRL_CMD_OS_UNIX_IMPORT_OBJECT_FROM_FD, nvgpu.NV0041_CTRL_CMD_GET_SURFACE_INFO
2024-05-21 16:03:15 +00:00
Ayush RanjanandgVisor bot fd3eb7437d nvproxy: Expand HasRMCtrlFD idea to frontend ioctl and control commands.
This is helpful for handling parameter types that have one field for frontend
FD that needs to be translated (and are simple apart from that). Avoids
repetitive code.

Rename HasRMCtrlFD->HasFrontendFD so it can have a broader meaning.
Implement generic handlers for frontend ioctl and control commands.

Updates #10413.

PiperOrigin-RevId: 633700330
2024-05-14 14:10:37 -07:00
Ayush RanjanandgVisor bot e9b3218681 Add NV0000_CTRL_CMD_OS_UNIX_EXPORT_OBJECT_TO_FD to nvproxy.
Updates #10413

PiperOrigin-RevId: 632277477
2024-05-09 14:55:18 -07:00
Jamie LiuandgVisor bot 1e1334e88f nvproxy: track driver object dependencies
This is necessary to prevent osDescMem pinned page leaks when the osDescMem is
freed indirectly, e.g. by closing the `/dev/nvidiactl` FD that owns the
containing client.

- Switch from passing separate sentryIoctlParams to temporarily modifying
  ioctlParams in-place, in order to ensure that callers of *Invoke functions
  always observe ioctlParams updated by driver copy-out (including e.g. updated
  handles).

- Only pass NVOS64Parameters (rather than NVOS21Parameters) in NV_ESC_RM_ALLOC
  calls to the driver; this should behave equivalently (new comment in
  rmAllocInvoke()) and simplifies passing them to object registration callbacks
  (objAddLocked).

PiperOrigin-RevId: 627630863
2024-04-24 00:21:16 -07:00
Ayush RanjanandgVisor bot e23b5a711a Add NV0000_CTRL_CMD_SYSTEM_GET_P2P_CAPS_V2 to nvproxy.
Note that NV0000_CTRL_SYSTEM_GET_P2P_CAPS_V2_PARAMS changed in 550.40.07, but
it was still "simple" and can be handled with `rmControlSimple`. So no special
versioning logic needed.

PiperOrigin-RevId: 622926672
2024-04-08 12:56:15 -07:00
gVisor bot d554cabf9a Merge pull request #9997 from derpsteb:h100-cc-mode-clean
PiperOrigin-RevId: 621276476
2024-04-02 13:30:10 -07:00
Ayush RanjanandgVisor bot 8f1f1339bf Add support for 550.54.14 driver in nvproxy.
PiperOrigin-RevId: 617535894
2024-03-20 09:25:16 -07:00
Ayush RanjanandgVisor bot 8841a6e25c Add support for Stable Diffusion XL in nvproxy.
Tested on T4 GPU using image gcr.io/gvisor-presubmit/gpu/stable-diffusion-xl.

After this, the remaining error is a TTY error:
```
Error: your terminal supports neither 24-bit nor 8-bit colors. Other coloring
options aren't available
```
PiperOrigin-RevId: 610931919
2024-02-27 17:57:41 -08:00