From 1d6470e8f78f9dafb100d41fa1b99e0beb6ad086 Mon Sep 17 00:00:00 2001 From: Jonathon Belotti Date: Tue, 2 Jul 2024 13:43:31 +0000 Subject: [PATCH] nvproxy: add missing uvm peer access ioctl --- pkg/abi/nvgpu/uvm.go | 16 ++++++++++++++++ pkg/sentry/devices/nvproxy/seccomp_filters.go | 8 ++++++++ pkg/sentry/devices/nvproxy/version.go | 2 ++ 3 files changed, 26 insertions(+) diff --git a/pkg/abi/nvgpu/uvm.go b/pkg/abi/nvgpu/uvm.go index 3a61a9f44..c9def87d9 100644 --- a/pkg/abi/nvgpu/uvm.go +++ b/pkg/abi/nvgpu/uvm.go @@ -27,6 +27,8 @@ const ( UVM_UNREGISTER_GPU_VASPACE = 26 UVM_REGISTER_CHANNEL = 27 UVM_UNREGISTER_CHANNEL = 28 + UVM_ENABLE_PEER_ACCESS = 29 + UVM_DISABLE_PEER_ACCESS = 30 UVM_SET_RANGE_GROUP = 31 UVM_MAP_EXTERNAL_ALLOCATION = 33 UVM_FREE = 34 @@ -127,6 +129,20 @@ type UVM_UNREGISTER_CHANNEL_PARAMS struct { RMStatus uint32 } +// +marshal +type UVM_ENABLE_PEER_ACCESS_PARAMS struct { + GPUUUIDA NvUUID + GPUUUIDB NvUUID + RMStatus uint32 +} + +// +marshal +type UVM_DISABLE_PEER_ACCESS_PARAMS struct { + GPUUUIDA NvUUID + GPUUUIDB NvUUID + RMStatus uint32 +} + // +marshal type UVM_SET_RANGE_GROUP_PARAMS struct { RangeGroupID uint64 diff --git a/pkg/sentry/devices/nvproxy/seccomp_filters.go b/pkg/sentry/devices/nvproxy/seccomp_filters.go index a497ba97a..dedec73c9 100644 --- a/pkg/sentry/devices/nvproxy/seccomp_filters.go +++ b/pkg/sentry/devices/nvproxy/seccomp_filters.go @@ -134,6 +134,14 @@ func Filters() seccomp.SyscallRules { seccomp.NonNegativeFD{}, seccomp.EqualTo(nvgpu.UVM_UNREGISTER_CHANNEL), }, + seccomp.PerArg{ + seccomp.NonNegativeFD{}, + seccomp.EqualTo(nvgpu.UVM_ENABLE_PEER_ACCESS), + }, + seccomp.PerArg{ + seccomp.NonNegativeFD{}, + seccomp.EqualTo(nvgpu.UVM_DISABLE_PEER_ACCESS), + }, seccomp.PerArg{ seccomp.NonNegativeFD{}, seccomp.EqualTo(nvgpu.UVM_SET_RANGE_GROUP), diff --git a/pkg/sentry/devices/nvproxy/version.go b/pkg/sentry/devices/nvproxy/version.go index f0131d9bd..d284f6d14 100644 --- a/pkg/sentry/devices/nvproxy/version.go +++ b/pkg/sentry/devices/nvproxy/version.go @@ -182,6 +182,8 @@ func Init() { nvgpu.UVM_UNREGISTER_GPU_VASPACE: uvmIoctlSimple[nvgpu.UVM_UNREGISTER_GPU_VASPACE_PARAMS], nvgpu.UVM_REGISTER_CHANNEL: uvmIoctlHasFrontendFD[nvgpu.UVM_REGISTER_CHANNEL_PARAMS], nvgpu.UVM_UNREGISTER_CHANNEL: uvmIoctlSimple[nvgpu.UVM_UNREGISTER_CHANNEL_PARAMS], + nvgpu.UVM_ENABLE_PEER_ACCESS: uvmIoctlSimple[nvgpu.UVM_ENABLE_PEER_ACCESS_PARAMS], + nvgpu.UVM_DISABLE_PEER_ACCESS: uvmIoctlSimple[nvgpu.UVM_DISABLE_PEER_ACCESS_PARAMS], nvgpu.UVM_SET_RANGE_GROUP: uvmIoctlSimple[nvgpu.UVM_SET_RANGE_GROUP_PARAMS], nvgpu.UVM_MAP_EXTERNAL_ALLOCATION: uvmIoctlHasFrontendFD[nvgpu.UVM_MAP_EXTERNAL_ALLOCATION_PARAMS], nvgpu.UVM_FREE: uvmIoctlSimple[nvgpu.UVM_FREE_PARAMS],