From 4b1db872bd5eff09a947d723c6f7eb2cac6194c1 Mon Sep 17 00:00:00 2001 From: Nathan Wang Date: Fri, 27 Sep 2024 18:07:55 +0000 Subject: [PATCH] nvproxy: Add GF100_PROFILER allocation class and NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ control command --- pkg/abi/nvgpu/classes.go | 1 + pkg/abi/nvgpu/ctrl.go | 5 +++-- pkg/sentry/devices/nvproxy/version.go | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/abi/nvgpu/classes.go b/pkg/abi/nvgpu/classes.go index dbd9412ed..6c2b314d7 100644 --- a/pkg/abi/nvgpu/classes.go +++ b/pkg/abi/nvgpu/classes.go @@ -50,6 +50,7 @@ const ( NV50_THIRD_PARTY_P2P = 0x0000503c NV50_MEMORY_VIRTUAL = 0x000050a0 GT200_DEBUGGER = 0x000083de + GF100_PROFILER = 0x000090cc GF100_SUBDEVICE_MASTER = 0x000090e6 FERMI_CONTEXT_SHARE_A = 0x00009067 FERMI_VASPACE_A = 0x000090f1 diff --git a/pkg/abi/nvgpu/ctrl.go b/pkg/abi/nvgpu/ctrl.go index 8f97b1a9d..d15953348 100644 --- a/pkg/abi/nvgpu/ctrl.go +++ b/pkg/abi/nvgpu/ctrl.go @@ -485,7 +485,8 @@ const ( // From src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf.h: const ( - NV2080_CTRL_CMD_PERF_BOOST = 0x2080200a + NV2080_CTRL_CMD_PERF_BOOST = 0x2080200a + NV2080_CTRL_CMD_PERF_GET_CURRENT_PSTATE = 0x20802068 ) // From src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080rc.h: @@ -498,7 +499,7 @@ const ( // From src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080tmr.h: const ( NV2080_CTRL_CMD_TIMER_GET_GPU_CPU_TIME_CORRELATION_INFO = 0x20800406 - NV2080_CTRL_CMD_PERF_GET_CURRENT_PSTATE = 0x20802068 + NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ = 0x20800407 ) // From src/common/sdk/nvidia/inc/ctrl/ctrl503c.h: diff --git a/pkg/sentry/devices/nvproxy/version.go b/pkg/sentry/devices/nvproxy/version.go index ad32fae49..ea938932a 100644 --- a/pkg/sentry/devices/nvproxy/version.go +++ b/pkg/sentry/devices/nvproxy/version.go @@ -304,6 +304,7 @@ func Init() { nvgpu.NV2080_CTRL_CMD_RC_RELEASE_WATCHDOG_REQUESTS: rmControlSimple, nvgpu.NV2080_CTRL_CMD_RC_SOFT_DISABLE_WATCHDOG: rmControlSimple, nvgpu.NV2080_CTRL_CMD_TIMER_GET_GPU_CPU_TIME_CORRELATION_INFO: rmControlSimple, + nvgpu.NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ: rmControlSimple, nvgpu.NV503C_CTRL_CMD_REGISTER_VIDMEM: rmControlSimple, nvgpu.NV503C_CTRL_CMD_UNREGISTER_VIDMEM: rmControlSimple, nvgpu.NV83DE_CTRL_CMD_DEBUG_SET_EXCEPTION_MASK: rmControlSimple, @@ -353,6 +354,7 @@ func Init() { nvgpu.NV50_MEMORY_VIRTUAL: rmAllocSimple[nvgpu.NV_MEMORY_ALLOCATION_PARAMS], nvgpu.NV50_P2P: rmAllocSimple[nvgpu.NV503B_ALLOC_PARAMETERS], nvgpu.NV50_THIRD_PARTY_P2P: rmAllocSimple[nvgpu.NV503C_ALLOC_PARAMETERS], + nvgpu.GF100_PROFILER: rmAllocNoParams, nvgpu.GT200_DEBUGGER: rmAllocSMDebuggerSession, nvgpu.FERMI_CONTEXT_SHARE_A: rmAllocContextShare, nvgpu.FERMI_VASPACE_A: rmAllocSimple[nvgpu.NV_VASPACE_ALLOCATION_PARAMETERS], @@ -502,6 +504,7 @@ func Init() { nvgpu.NV2080_CTRL_CMD_RC_RELEASE_WATCHDOG_REQUESTS: nil, // No params. nvgpu.NV2080_CTRL_CMD_RC_SOFT_DISABLE_WATCHDOG: nil, // No params. nvgpu.NV2080_CTRL_CMD_TIMER_GET_GPU_CPU_TIME_CORRELATION_INFO: simpleIoctl("NV2080_CTRL_TIMER_GET_GPU_CPU_TIME_CORRELATION_INFO_PARAMS"), + nvgpu.NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ: simpleIoctl("NV2080_CTRL_CMD_TIMER_SET_GR_TICK_FREQ_PARAMS"), nvgpu.NV503C_CTRL_CMD_REGISTER_VIDMEM: simpleIoctl("NV503C_CTRL_REGISTER_VIDMEM_PARAMS"), nvgpu.NV503C_CTRL_CMD_UNREGISTER_VIDMEM: simpleIoctl("NV503C_CTRL_UNREGISTER_VIDMEM_PARAMS"), nvgpu.NV83DE_CTRL_CMD_DEBUG_SET_EXCEPTION_MASK: simpleIoctl("NV83DE_CTRL_DEBUG_SET_EXCEPTION_MASK_PARAMS"), @@ -552,6 +555,7 @@ func Init() { nvgpu.NV50_P2P: getStructName(nvgpu.NV503B_ALLOC_PARAMETERS{}), nvgpu.NV50_THIRD_PARTY_P2P: getStructName(nvgpu.NV503C_ALLOC_PARAMETERS{}), nvgpu.GT200_DEBUGGER: getStructName(nvgpu.NV83DE_ALLOC_PARAMETERS{}), + nvgpu.GF100_PROFILER: nil, // No params nvgpu.FERMI_CONTEXT_SHARE_A: getStructName(nvgpu.NV_CTXSHARE_ALLOCATION_PARAMETERS{}), nvgpu.FERMI_VASPACE_A: getStructName(nvgpu.NV_VASPACE_ALLOCATION_PARAMETERS{}), nvgpu.KEPLER_CHANNEL_GROUP_A: getStructName(nvgpu.NV_CHANNEL_GROUP_ALLOCATION_PARAMETERS{}),