Skip to content

Commit e6e1ecb

Browse files
ayushr2gvisor-bot
authored andcommitted
Add support for graphics in nvproxy.
PiperOrigin-RevId: 708100465
1 parent fb730ff commit e6e1ecb

File tree

11 files changed

+784
-187
lines changed

11 files changed

+784
-187
lines changed

pkg/abi/nvgpu/classes.go

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ func (id ClassID) String() string {
3535
const (
3636
NV01_ROOT = 0x00000000
3737
NV01_ROOT_NON_PRIV = 0x00000001
38+
NV01_EVENT = 0x00000005
3839
NV01_MEMORY_SYSTEM = 0x0000003e
40+
NV01_MEMORY_LOCAL_PRIVILEGED = 0x0000003f
3941
NV01_MEMORY_LOCAL_USER = 0x00000040
4042
NV01_ROOT_CLIENT = 0x00000041
4143
NV_MEMORY_EXTENDED_USER = 0x00000042
44+
NV01_MEMORY_VIRTUAL = 0x00000070
4245
NV01_MEMORY_SYSTEM_OS_DESCRIPTOR = 0x00000071
4346
NV01_EVENT_OS_EVENT = 0x00000079
4447
NV01_DEVICE_0 = 0x00000080
@@ -51,14 +54,20 @@ const (
5154
NV50_THIRD_PARTY_P2P = 0x0000503c
5255
NV50_MEMORY_VIRTUAL = 0x000050a0
5356
GT200_DEBUGGER = 0x000083de
57+
FERMI_TWOD_A = 0x0000902d
58+
FERMI_CONTEXT_SHARE_A = 0x00009067
59+
GF100_DISP_SW = 0x00009072
60+
GF100_ZBC_CLEAR = 0x00009096
5461
GF100_PROFILER = 0x000090cc
5562
GF100_SUBDEVICE_MASTER = 0x000090e6
56-
FERMI_CONTEXT_SHARE_A = 0x00009067
5763
FERMI_VASPACE_A = 0x000090f1
5864
KEPLER_CHANNEL_GROUP_A = 0x0000a06c
65+
KEPLER_INLINE_TO_MEMORY_B = 0x0000a140
66+
VOLTA_USERMODE_A = 0x0000c361
5967
TURING_USERMODE_A = 0x0000c461
6068
TURING_CHANNEL_GPFIFO_A = 0x0000c46f
6169
AMPERE_CHANNEL_GPFIFO_A = 0x0000c56f
70+
TURING_A = 0x0000c597
6271
TURING_DMA_COPY_A = 0x0000c5b5
6372
TURING_COMPUTE_A = 0x0000c5c0
6473
HOPPER_USERMODE_A = 0x0000c661
@@ -74,6 +83,11 @@ const (
7483
HOPPER_COMPUTE_A = 0x0000cbc0
7584
)
7685

86+
// From src/common/sdk/nvidia/inc/class/cl0000.h:
87+
const (
88+
NV01_NULL_OBJECT = 0x0
89+
)
90+
7791
// NV2081_ALLOC_PARAMETERS is the alloc params type for NV2081_BINAPI, from
7892
// src/common/sdk/nvidia/inc/class/cl2081.h.
7993
//
@@ -82,18 +96,34 @@ type NV2081_ALLOC_PARAMETERS struct {
8296
Reserved uint32 `nvproxy:"same"`
8397
}
8498

85-
// NV0005_ALLOC_PARAMETERS is the alloc params type for NV01_EVENT_OS_EVENT,
99+
// NV0005_ALLOC_PARAMETERS is the alloc params type for NV01_EVENT* classes
86100
// from src/common/sdk/nvidia/inc/class/cl0005.h.
87101
//
88102
// +marshal
89103
type NV0005_ALLOC_PARAMETERS struct {
90104
HParentClient Handle `nvproxy:"same"`
91105
HSrcResource Handle
92-
HClass uint32
106+
HClass ClassID
93107
NotifyIndex uint32
94108
Data P64 // actually FD for NV01_EVENT_OS_EVENT, see src/nvidia/src/kernel/rmapi/event.c:eventConstruct_IMPL() => src/nvidia/arch/nvalloc/unix/src/os.c:osUserHandleToKernelPtr()
95109
}
96110

111+
// From src/common/sdk/nvidia/inc/class/cl0070.h:
112+
const (
113+
NV_MEMORY_VIRTUAL_SYSMEM_DYNAMIC_HVASPACE = 0xffffffff
114+
)
115+
116+
// NV_MEMORY_VIRTUAL_ALLOCATION_PARAMS is the alloc params type for
117+
// NV01_MEMORY_VIRTUAL, from src/common/sdk/nvidia/inc/class/cl0070.h.
118+
//
119+
// +marshal
120+
type NV_MEMORY_VIRTUAL_ALLOCATION_PARAMS struct {
121+
Offset uint64 `nvproxy:"same"`
122+
Limit uint64
123+
HVASpace Handle
124+
Pad0 [4]byte
125+
}
126+
97127
// NV0080_ALLOC_PARAMETERS is the alloc params type for NV01_DEVICE_0, from
98128
// src/common/sdk/nvidia/inc/class/cl0080.h.
99129
//
@@ -317,6 +347,16 @@ type NV_HOPPER_USERMODE_A_PARAMS struct {
317347
Priv uint8
318348
}
319349

350+
// NV9072_ALLOCATION_PARAMETERS is the alloc param type for GF100_DISP_SW,
351+
// from src/common/sdk/nvidia/inc/class/cl9072.h.
352+
//
353+
// +marshal
354+
type NV9072_ALLOCATION_PARAMETERS struct {
355+
LogicalHeadID uint32 `nvproxy:"same"`
356+
DisplayMask uint32
357+
Caps uint32
358+
}
359+
320360
// NV00DE_ALLOC_PARAMETERS is the alloc param type for RM_USER_SHARED_DATA,
321361
// from src/common/sdk/nvidia/inc/class/cl00de.h.
322362
//

0 commit comments

Comments
 (0)