diff --git a/pkg/abi/nvgpu/classes.go b/pkg/abi/nvgpu/classes.go index a167384b6..5d9a13b37 100644 --- a/pkg/abi/nvgpu/classes.go +++ b/pkg/abi/nvgpu/classes.go @@ -34,11 +34,14 @@ const ( TURING_CHANNEL_GPFIFO_A = 0x0000c46f AMPERE_CHANNEL_GPFIFO_A = 0x0000c56f TURING_DMA_COPY_A = 0x0000c5b5 - AMPERE_DMA_COPY_A = 0x0000c6b5 - AMPERE_DMA_COPY_B = 0x0000c7b5 TURING_COMPUTE_A = 0x0000c5c0 + HOPPER_USERMODE_A = 0x0000c661 + AMPERE_DMA_COPY_A = 0x0000c6b5 AMPERE_COMPUTE_A = 0x0000c6c0 + AMPERE_DMA_COPY_B = 0x0000c7b5 + HOPPER_DMA_COPY_A = 0x0000c8b5 ADA_COMPUTE_A = 0x0000c9c0 + HOPPER_COMPUTE_A = 0x0000cbc0 ) // NV0005_ALLOC_PARAMETERS is the alloc params type for NV01_EVENT_OS_EVENT, @@ -197,3 +200,12 @@ type NV_GR_ALLOCATION_PARAMETERS struct { Size uint32 Caps uint32 } + +// NV_HOPPER_USERMODE_A_PARAMS is the alloc param type for HOPPER_USERMODE_A, +// from src/common/sdk/nvidia/inc/nvos.h. +// +// +marshal +type NV_HOPPER_USERMODE_A_PARAMS struct { + Bar1Mapping uint8 + Priv uint8 +} diff --git a/pkg/abi/nvgpu/ctrl.go b/pkg/abi/nvgpu/ctrl.go index 69a4d0a4f..04547ccd1 100644 --- a/pkg/abi/nvgpu/ctrl.go +++ b/pkg/abi/nvgpu/ctrl.go @@ -53,8 +53,9 @@ const ( // From src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000system.h: const ( - NV0000_CTRL_CMD_SYSTEM_GET_BUILD_VERSION = 0x101 - NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS = 0x136 + NV0000_CTRL_CMD_SYSTEM_GET_BUILD_VERSION = 0x101 + NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS = 0x136 + NV0000_CTRL_CMD_SYSTEM_GET_P2P_CAPS_MATRIX = 0x13a ) // +marshal @@ -160,6 +161,7 @@ const ( NV2080_CTRL_CMD_GPU_GET_ENGINES_V2 = 0x20800170 NV2080_CTRL_CMD_GPU_GET_ACTIVE_PARTITION_IDS = 0x2080018b NV2080_CTRL_CMD_GPU_GET_COMPUTE_POLICY_CONFIG = 0x20800195 + NV2080_CTRL_CMD_GET_GPU_FABRIC_PROBE_INFO = 0x208001a3 ) // From src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gr.h: diff --git a/pkg/sentry/devices/nvproxy/frontend.go b/pkg/sentry/devices/nvproxy/frontend.go index 65984a3c8..a8f4c78db 100644 --- a/pkg/sentry/devices/nvproxy/frontend.go +++ b/pkg/sentry/devices/nvproxy/frontend.go @@ -547,6 +547,7 @@ func rmControl(fi *frontendIoctlState) (uintptr, error) { nvgpu.NV0000_CTRL_CMD_GPU_GET_MEMOP_ENABLE, nvgpu.NV0000_CTRL_CMD_SYNC_GPU_BOOST_GROUP_INFO, nvgpu.NV0000_CTRL_CMD_SYSTEM_GET_FABRIC_STATUS, + nvgpu.NV0000_CTRL_CMD_SYSTEM_GET_P2P_CAPS_MATRIX, nvgpu.NV0080_CTRL_CMD_FB_GET_CAPS_V2, nvgpu.NV0080_CTRL_CMD_GPU_GET_NUM_SUBDEVICES, nvgpu.NV0080_CTRL_CMD_GPU_QUERY_SW_STATE_PERSISTENCE, @@ -572,6 +573,7 @@ func rmControl(fi *frontendIoctlState) (uintptr, error) { nvgpu.NV2080_CTRL_CMD_GPU_GET_ENGINES_V2, nvgpu.NV2080_CTRL_CMD_GPU_GET_ACTIVE_PARTITION_IDS, nvgpu.NV2080_CTRL_CMD_GPU_GET_COMPUTE_POLICY_CONFIG, + nvgpu.NV2080_CTRL_CMD_GET_GPU_FABRIC_PROBE_INFO, nvgpu.NV2080_CTRL_CMD_GR_SET_CTXSW_PREEMPTION_MODE, nvgpu.NV2080_CTRL_CMD_GR_GET_CTX_BUFFER_SIZE, nvgpu.NV2080_CTRL_CMD_GR_GET_GLOBAL_SM_ORDER, @@ -769,10 +771,12 @@ func rmAlloc(fi *frontendIoctlState) (uintptr, error) { return rmAllocSimple[nvgpu.NV_CHANNEL_GROUP_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64) case nvgpu.TURING_CHANNEL_GPFIFO_A, nvgpu.AMPERE_CHANNEL_GPFIFO_A: return rmAllocSimple[nvgpu.NV_CHANNEL_ALLOC_PARAMS](fi, &ioctlParams, isNVOS64) - case nvgpu.TURING_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_B: + case nvgpu.TURING_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_A, nvgpu.AMPERE_DMA_COPY_B, nvgpu.HOPPER_DMA_COPY_A: return rmAllocSimple[nvgpu.NVB0B5_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64) - case nvgpu.TURING_COMPUTE_A, nvgpu.AMPERE_COMPUTE_A, nvgpu.ADA_COMPUTE_A: + case nvgpu.TURING_COMPUTE_A, nvgpu.AMPERE_COMPUTE_A, nvgpu.ADA_COMPUTE_A, nvgpu.HOPPER_COMPUTE_A: return rmAllocSimple[nvgpu.NV_GR_ALLOCATION_PARAMETERS](fi, &ioctlParams, isNVOS64) + case nvgpu.HOPPER_USERMODE_A: + return rmAllocSimple[nvgpu.NV_HOPPER_USERMODE_A_PARAMS](fi, &ioctlParams, isNVOS64) case nvgpu.GF100_SUBDEVICE_MASTER, nvgpu.TURING_USERMODE_A: