snapshot: sagernet/gvisor v0.0.0-20260727.0-sing-box-mod.1 + SPEC 048 guard
Обновление снапшота с v0.0.0-20250811.0 на пин, которого требует sing-box после мержа 235 коммитов (upstream d620bbbf2 "Update gvisor to 20260727.0"). Прежний снапшот был взят 2026-08-04 ровно с той версии, на которой тогда стоял апстрим; разрыв возник 2026-08-05 вместе с его бампом. За год апстрим-gvisor изменил ~14 000 строк в 292 файлах. Значимое для нас — сетевой стек: tcp/connect.go (PMTU-discovery + исправление начального RTT/RTO: раньше задержка ACK внутри стека завышала стартовый таймаут на несколько RTT), tcp/snd.go, tcp/rcv.go, stack/conntrack.go, stack/packet_buffer.go. Всего 30 файлов в TCP и 37 в stack. Баг SPEC 048 апстрим НЕ исправил — проверено по коду новой версии: handleConnecting по-прежнему проверяет состояние endpoint'а, но не ep.h, а performHandshake так же зануляет h и отпускает мьютекс до Close(). Поэтому guard перенесён (12 строк) вместе со своим тестом (45 строк). Red/green проверен на новой базе: без guard'а тест падает с той же nil-паникой, что в полевом крашдампе; с ним зелёный.
This commit is contained in:
parent
ffebe42860
commit
117243aa02
293 changed files with 16413 additions and 2842 deletions
|
|
@ -16,6 +16,7 @@ package nvgpu
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"structs"
|
||||
)
|
||||
|
||||
// ClassID is a client class ID, in the sense of
|
||||
|
|
@ -58,7 +59,10 @@ const (
|
|||
NV01_DEVICE_0 = 0x00000080
|
||||
NV_SEMAPHORE_SURFACE = 0x000000da
|
||||
RM_USER_SHARED_DATA = 0x000000de
|
||||
NV_MEMORY_EXPORT = 0x000000e0
|
||||
NV_IMEX_SESSION = 0x000000f1
|
||||
NV_MEMORY_FABRIC = 0x000000f8
|
||||
NV_MEMORY_FABRIC_IMPORTED_REF = 0x000000fb
|
||||
NV_MEMORY_MULTICAST_FABRIC = 0x000000fd
|
||||
NV_MEMORY_MAPPER = 0x000000fe
|
||||
NV20_SUBDEVICE_0 = 0x00002080
|
||||
|
|
@ -67,56 +71,72 @@ const (
|
|||
NV50_THIRD_PARTY_P2P = 0x0000503c
|
||||
NV50_MEMORY_VIRTUAL = 0x000050a0
|
||||
GT200_DEBUGGER = 0x000083de
|
||||
MPS_COMPUTE = 0x0000900e
|
||||
FERMI_TWOD_A = 0x0000902d
|
||||
FERMI_CONTEXT_SHARE_A = 0x00009067
|
||||
GF100_DISP_SW = 0x00009072
|
||||
GF100_ZBC_CLEAR = 0x00009096
|
||||
GF100_SUBDEVICE_INFOROM = 0x000090e7
|
||||
GF100_PROFILER = 0x000090cc
|
||||
MAXWELL_PROFILER_DEVICE = 0x0000b2cc
|
||||
NV_COUNTER_COLLECTION_UNIT = 0x0000cbca
|
||||
GF100_SUBDEVICE_MASTER = 0x000090e6
|
||||
FERMI_VASPACE_A = 0x000090f1
|
||||
KEPLER_CHANNEL_GROUP_A = 0x0000a06c
|
||||
NVENC_SW_SESSION = 0x0000a0bc
|
||||
KEPLER_INLINE_TO_MEMORY_B = 0x0000a140
|
||||
NVB8B0_VIDEO_DECODER = 0x0000b8b0
|
||||
NVB8D1_VIDEO_NVJPG = 0x0000b8d1
|
||||
NVB8FA_VIDEO_OFA = 0x0000b8fa
|
||||
VOLTA_USERMODE_A = 0x0000c361
|
||||
TURING_USERMODE_A = 0x0000c461
|
||||
TURING_CHANNEL_GPFIFO_A = 0x0000c46f
|
||||
NVB8B0_VIDEO_DECODER = 0x0000b8b0 // Hopper
|
||||
NVC4B0_VIDEO_DECODER = 0x0000c4b0 // Turing
|
||||
NVC6B0_VIDEO_DECODER = 0x0000c6b0 // Ampere
|
||||
NVC7B0_VIDEO_DECODER = 0x0000c7b0 // Ampere
|
||||
NVC9B0_VIDEO_DECODER = 0x0000c9b0 // Ada
|
||||
NVCDB0_VIDEO_DECODER = 0x0000cdb0 // Blackwell
|
||||
NVC4B0_VIDEO_DECODER = 0x0000c4b0
|
||||
NVC4B7_VIDEO_ENCODER = 0x0000c4b7
|
||||
NVC7B7_VIDEO_ENCODER = 0x0000c7b7
|
||||
NVC9B7_VIDEO_ENCODER = 0x0000c9b7
|
||||
NVC4D1_VIDEO_NVJPG = 0x0000c4d1
|
||||
AMPERE_CHANNEL_GPFIFO_A = 0x0000c56f
|
||||
TURING_A = 0x0000c597
|
||||
TURING_DMA_COPY_A = 0x0000c5b5
|
||||
TURING_COMPUTE_A = 0x0000c5c0
|
||||
HOPPER_USERMODE_A = 0x0000c661
|
||||
BLACKWELL_USERMODE_A = 0x0000c761
|
||||
AMPERE_A = 0x0000c697
|
||||
NVC6B0_VIDEO_DECODER = 0x0000c6b0
|
||||
AMPERE_DMA_COPY_A = 0x0000c6b5
|
||||
AMPERE_COMPUTE_A = 0x0000c6c0
|
||||
NVC6FA_VIDEO_OFA = 0x0000c6fa
|
||||
BLACKWELL_USERMODE_A = 0x0000c761
|
||||
NVC7B0_VIDEO_DECODER = 0x0000c7b0
|
||||
AMPERE_DMA_COPY_B = 0x0000c7b5
|
||||
NVC7B7_VIDEO_ENCODER = 0x0000c7b7
|
||||
AMPERE_COMPUTE_B = 0x0000c7c0
|
||||
NVC7FA_VIDEO_OFA = 0x0000c7fa
|
||||
HOPPER_CHANNEL_GPFIFO_A = 0x0000c86f
|
||||
HOPPER_DMA_COPY_A = 0x0000c8b5
|
||||
BLACKWELL_CHANNEL_GPFIFO_A = 0x0000c96f
|
||||
ADA_A = 0x0000c997
|
||||
NVC9B0_VIDEO_DECODER = 0x0000c9b0
|
||||
BLACKWELL_DMA_COPY_A = 0x0000c9b5
|
||||
NVC9B7_VIDEO_ENCODER = 0x0000c9b7
|
||||
ADA_COMPUTE_A = 0x0000c9c0
|
||||
NVC9D1_VIDEO_NVJPG = 0x0000c9d1
|
||||
NVC9FA_VIDEO_OFA = 0x0000c9fa
|
||||
BLACKWELL_CHANNEL_GPFIFO_B = 0x0000ca6f
|
||||
BLACKWELL_DMA_COPY_B = 0x0000cab5
|
||||
ADA_A = 0x0000c997
|
||||
ADA_COMPUTE_A = 0x0000c9c0
|
||||
NV_CONFIDENTIAL_COMPUTE = 0x0000cb33
|
||||
HOPPER_A = 0x0000cb97
|
||||
HOPPER_SEC2_WORK_LAUNCH_A = 0x0000cba2
|
||||
HOPPER_COMPUTE_A = 0x0000cbc0
|
||||
BLACKWELL_INLINE_TO_MEMORY_A = 0x0000cd40
|
||||
BLACKWELL_A = 0x0000cd97
|
||||
NVCDB0_VIDEO_DECODER = 0x0000cdb0
|
||||
BLACKWELL_COMPUTE_A = 0x0000cdc0
|
||||
NVCDD1_VIDEO_NVJPG = 0x0000cdd1
|
||||
NVCDFA_VIDEO_OFA = 0x0000cdfa
|
||||
BLACKWELL_B = 0x0000ce97
|
||||
NVCEB7_VIDEO_ENCODER = 0x0000ceb7
|
||||
BLACKWELL_COMPUTE_B = 0x0000cec0
|
||||
NVCFB7_VIDEO_ENCODER = 0x0000cfb7
|
||||
NVD1B7_VIDEO_ENCODER = 0x0000d1b7
|
||||
)
|
||||
|
||||
// From src/common/sdk/nvidia/inc/class/cl0000.h:
|
||||
|
|
@ -129,6 +149,7 @@ const (
|
|||
//
|
||||
// +marshal
|
||||
type NV2081_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Reserved uint32
|
||||
}
|
||||
|
||||
|
|
@ -137,6 +158,7 @@ type NV2081_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV0005_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HParentClient Handle
|
||||
HSrcResource Handle
|
||||
HClass ClassID
|
||||
|
|
@ -159,6 +181,7 @@ const (
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_VIRTUAL_ALLOCATION_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
Offset uint64
|
||||
Limit uint64
|
||||
HVASpace Handle
|
||||
|
|
@ -175,6 +198,7 @@ const (
|
|||
//
|
||||
// +marshal
|
||||
type NV0080_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
DeviceID uint32
|
||||
HClientShare Handle
|
||||
HTargetClient Handle
|
||||
|
|
@ -193,6 +217,7 @@ type NV0080_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_SEMAPHORE_SURFACE_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HSemaphoreMem Handle
|
||||
HMaxSubmittedMem Handle
|
||||
flags uint64
|
||||
|
|
@ -203,6 +228,7 @@ type NV_SEMAPHORE_SURFACE_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV2080_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
SubDeviceID uint32
|
||||
}
|
||||
|
||||
|
|
@ -211,6 +237,7 @@ type NV2080_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CONTEXT_DMA_ALLOCATION_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
HSubDevice Handle
|
||||
Flags uint32
|
||||
HMemory Handle
|
||||
|
|
@ -224,6 +251,7 @@ type NV_CONTEXT_DMA_ALLOCATION_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_ALLOCATION_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
Owner uint32
|
||||
Type uint32
|
||||
Flags uint32
|
||||
|
|
@ -254,6 +282,7 @@ type NV_MEMORY_ALLOCATION_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_ALLOCATION_PARAMS_V545 struct {
|
||||
_ structs.HostLayout
|
||||
NV_MEMORY_ALLOCATION_PARAMS
|
||||
NumaNode int32
|
||||
_ uint32
|
||||
|
|
@ -263,6 +292,7 @@ type NV_MEMORY_ALLOCATION_PARAMS_V545 struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV503B_BAR1_P2P_DMA_INFO struct {
|
||||
_ structs.HostLayout
|
||||
DmaAddress uint64
|
||||
DmaSize uint64
|
||||
}
|
||||
|
|
@ -272,6 +302,7 @@ type NV503B_BAR1_P2P_DMA_INFO struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV503B_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HSubDevice Handle
|
||||
HPeerSubDevice Handle
|
||||
SubDevicePeerIDMask uint32
|
||||
|
|
@ -285,11 +316,31 @@ type NV503B_ALLOC_PARAMETERS struct {
|
|||
P2lBar1P2PDmaInfo NV503B_BAR1_P2P_DMA_INFO
|
||||
}
|
||||
|
||||
// NV503B_FABRIC_P2P_DMA_INFO from src/common/sdk/nvidia/inc/class/cl503b.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV503B_FABRIC_P2P_DMA_INFO struct {
|
||||
_ structs.HostLayout
|
||||
Gpa uint64
|
||||
}
|
||||
|
||||
// NV503B_ALLOC_PARAMETERS_V590 is the updated version of
|
||||
// NV503B_ALLOC_PARAMETERS since 590.44.01.
|
||||
//
|
||||
// +marshal
|
||||
type NV503B_ALLOC_PARAMETERS_V590 struct {
|
||||
_ structs.HostLayout
|
||||
NV503B_ALLOC_PARAMETERS
|
||||
L2pFabricP2PInfo NV503B_FABRIC_P2P_DMA_INFO
|
||||
P2lFabricP2PInfo NV503B_FABRIC_P2P_DMA_INFO
|
||||
}
|
||||
|
||||
// NV503C_ALLOC_PARAMETERS is the alloc params type for NV50_THIRD_PARTY_P2P,
|
||||
// from src/common/sdk/nvidia/inc/class/cl503c.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV503C_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Flags uint32
|
||||
}
|
||||
|
||||
|
|
@ -298,6 +349,7 @@ type NV503C_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV83DE_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HDebuggerClient_Obsolete Handle
|
||||
HAppClient Handle
|
||||
HClass3DObject Handle
|
||||
|
|
@ -308,6 +360,7 @@ type NV83DE_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CTXSHARE_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HVASpace Handle
|
||||
Flags uint32
|
||||
SubctxID uint32
|
||||
|
|
@ -318,6 +371,7 @@ type NV_CTXSHARE_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_VASPACE_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Index uint32
|
||||
Flags uint32
|
||||
VASize uint64
|
||||
|
|
@ -333,6 +387,7 @@ type NV_VASPACE_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_VASPACE_ALLOCATION_PARAMETERS_V580 struct {
|
||||
_ structs.HostLayout
|
||||
NV_VASPACE_ALLOCATION_PARAMETERS
|
||||
Pasid uint32
|
||||
Pad1 [4]byte
|
||||
|
|
@ -343,6 +398,7 @@ type NV_VASPACE_ALLOCATION_PARAMETERS_V580 struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CHANNEL_GROUP_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HObjectError Handle
|
||||
HObjectECCError Handle
|
||||
HVASpace Handle
|
||||
|
|
@ -356,6 +412,7 @@ type NV_CHANNEL_GROUP_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_DESC_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
Base uint64
|
||||
Size uint64
|
||||
AddressSpace uint32
|
||||
|
|
@ -365,8 +422,12 @@ type NV_MEMORY_DESC_PARAMS struct {
|
|||
// NV_BSP_ALLOCATION_PARAMETERS is the alloc params type for
|
||||
// NV*VIDEO_DECODER, from src/common/sdk/nvidia/inc/nvos.h.
|
||||
//
|
||||
// It is also used to represent the following driver structs:
|
||||
// - NV_NVDEC_ALLOCATION_PARAMETERS
|
||||
//
|
||||
// +marshal
|
||||
type NV_BSP_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Size uint32
|
||||
ProhibitMultipleInstances uint32
|
||||
EngineInstance uint32
|
||||
|
|
@ -375,8 +436,12 @@ type NV_BSP_ALLOCATION_PARAMETERS struct {
|
|||
// NV_MSENC_ALLOCATION_PARAMETERS is the alloc params type for
|
||||
// NV*_VIDEO_ENCODER, from src/common/sdk/nvidia/inc/nvos.h.
|
||||
//
|
||||
// It is also used to represent the following driver structs:
|
||||
// - NV_NVENC_ALLOCATION_PARAMETERS
|
||||
//
|
||||
// +marshal
|
||||
type NV_MSENC_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Size uint32
|
||||
ProhibitMultipleInstances uint32
|
||||
EngineInstance uint32
|
||||
|
|
@ -388,6 +453,7 @@ type NV_MSENC_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CHANNEL_ALLOC_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
HObjectError Handle
|
||||
HObjectBuffer Handle
|
||||
GPFIFOOffset uint64
|
||||
|
|
@ -421,17 +487,57 @@ type NV_CHANNEL_ALLOC_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CHANNEL_ALLOC_PARAMS_V570 struct {
|
||||
_ structs.HostLayout
|
||||
NV_CHANNEL_ALLOC_PARAMS
|
||||
TPCConfigID uint32
|
||||
_ uint32
|
||||
}
|
||||
|
||||
// NV_CHANNEL_ALLOC_PARAMS_V610 is the updated version of
|
||||
// NV_CHANNEL_ALLOC_PARAMS since 610.43.02.
|
||||
//
|
||||
// +marshal
|
||||
type NV_CHANNEL_ALLOC_PARAMS_V610 struct {
|
||||
_ structs.HostLayout
|
||||
HObjectError Handle
|
||||
HObjectBuffer Handle
|
||||
GPFIFOOffset uint64
|
||||
GPFIFOEntries uint32
|
||||
Flags uint32
|
||||
HContextShare Handle
|
||||
HVASpace Handle
|
||||
HHandleVASpace Handle
|
||||
HUserdMemory [NV_MAX_SUBDEVICES]Handle
|
||||
_ uint32
|
||||
UserdOffset [NV_MAX_SUBDEVICES]uint64
|
||||
EngineType uint32
|
||||
CID uint32
|
||||
SubDeviceID uint32
|
||||
HObjectECCError Handle
|
||||
InstanceMem NV_MEMORY_DESC_PARAMS
|
||||
UserdMem NV_MEMORY_DESC_PARAMS
|
||||
RamfcMem NV_MEMORY_DESC_PARAMS
|
||||
MthdbufMem NV_MEMORY_DESC_PARAMS
|
||||
HPhysChannelGroup Handle
|
||||
InternalFlags uint32
|
||||
ErrorNotifierMem NV_MEMORY_DESC_PARAMS
|
||||
ECCErrorNotifierMem NV_MEMORY_DESC_PARAMS
|
||||
ProcessID uint32
|
||||
SubProcessID uint32
|
||||
EncryptIv [CC_CHAN_ALLOC_IV_SIZE_DWORD]uint32
|
||||
DecryptIv [CC_CHAN_ALLOC_IV_SIZE_DWORD]uint32
|
||||
HmacNonce [CC_CHAN_ALLOC_NONCE_SIZE_DWORD]uint32
|
||||
TPCConfigID uint32
|
||||
_ uint32
|
||||
}
|
||||
|
||||
// NVB0B5_ALLOCATION_PARAMETERS is the alloc param type for TURING_DMA_COPY_A,
|
||||
// AMPERE_DMA_COPY_A, and AMPERE_DMA_COPY_B from
|
||||
// src/common/sdk/nvidia/inc/class/clb0b5sw.h.
|
||||
//
|
||||
// +marshal
|
||||
type NVB0B5_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Version uint32
|
||||
EngineType uint32
|
||||
}
|
||||
|
|
@ -441,6 +547,7 @@ type NVB0B5_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_GR_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Version uint32
|
||||
Flags uint32
|
||||
Size uint32
|
||||
|
|
@ -452,6 +559,7 @@ type NV_GR_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_HOPPER_USERMODE_A_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
Bar1Mapping uint8
|
||||
Priv uint8
|
||||
}
|
||||
|
|
@ -461,6 +569,7 @@ type NV_HOPPER_USERMODE_A_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV9072_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
LogicalHeadID uint32
|
||||
DisplayMask uint32
|
||||
Caps uint32
|
||||
|
|
@ -471,6 +580,7 @@ type NV9072_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV00DE_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Reserved uint32
|
||||
}
|
||||
|
||||
|
|
@ -479,21 +589,76 @@ type NV00DE_ALLOC_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV00DE_ALLOC_PARAMETERS_V545 struct {
|
||||
_ structs.HostLayout
|
||||
PolledDataMask uint64
|
||||
}
|
||||
|
||||
// +marshal
|
||||
type nv00f8Map struct {
|
||||
_ structs.HostLayout
|
||||
offset uint64
|
||||
hVidMem Handle
|
||||
flags uint32
|
||||
}
|
||||
|
||||
// From src/common/sdk/nvidia/inc/class/cl00e0.h:
|
||||
const (
|
||||
NV_MEM_EXPORT_UUID_LEN = 16
|
||||
NV_MEM_EXPORT_METADATA_LEN = 64
|
||||
)
|
||||
|
||||
// NV_EXPORT_MEM_PACKET is from
|
||||
// src/common/sdk/nvidia/inc/class/cl00e0.h
|
||||
//
|
||||
// +marshal
|
||||
type NV_EXPORT_MEM_PACKET struct {
|
||||
_ structs.HostLayout
|
||||
UUID [NV_MEM_EXPORT_UUID_LEN]uint8
|
||||
Opaque [16]uint8
|
||||
}
|
||||
|
||||
// NV00E0_ALLOCATION_PARAMETERS is the alloc params type for NV_MEMORY_EXPORT,
|
||||
// from src/common/sdk/nvidia/inc/class/cl00e0.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV00E0_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
IMEXChannel uint32
|
||||
Packet NV_EXPORT_MEM_PACKET
|
||||
NumMaxHandles uint16
|
||||
Pad0 [2]byte
|
||||
Flags uint32
|
||||
Metadata [NV_MEM_EXPORT_METADATA_LEN]uint8
|
||||
DeviceInstanceMask uint32
|
||||
GIIDMasks [NV_MAX_DEVICES]uint32
|
||||
NumCurHandles uint16
|
||||
Pad1 [2]byte
|
||||
}
|
||||
|
||||
// NV00F1_ALLOCATION_PARAMETERS is the alloc params type for NV_IMEX_SESSION,
|
||||
// from src/common/sdk/nvidia/inc/class/cl00f1.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV00F1_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
CapDescriptor uint64
|
||||
Flags uint32
|
||||
Pad0 [4]byte
|
||||
// Despite being P64-typed by the driver, pOsEvent is a file descriptor
|
||||
// whose numerical value is used by the driver. See
|
||||
// src/nvidia/src/kernel/compute/imex_session_api.c:imexsessionapiConstruct_IMPL()
|
||||
// => src/nvidia/arch/nvalloc/unix/src/os.c:osUserHandleToKernelPtr().
|
||||
POsEvent P64
|
||||
NodeID uint16
|
||||
Pad1 [6]byte
|
||||
}
|
||||
|
||||
// NV00F8_ALLOCATION_PARAMETERS is the alloc param type for NV_MEMORY_FABRIC,
|
||||
// from src/common/sdk/nvidia/inc/class/cl00f8.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV00F8_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Alignment uint64
|
||||
AllocSize uint64
|
||||
PageSize uint64
|
||||
|
|
@ -502,18 +667,32 @@ type NV00F8_ALLOCATION_PARAMETERS struct {
|
|||
Map nv00f8Map
|
||||
}
|
||||
|
||||
// From src/common/sdk/nvidia/inc/class/cl00e0.h
|
||||
const (
|
||||
NV_MEM_EXPORT_UUID_LEN = 16
|
||||
)
|
||||
|
||||
// NV_EXPORT_MEM_PACKET is from
|
||||
// src/common/sdk/nvidia/inc/class/cl00e0.h
|
||||
// NV00FB_ALLOCATION_PARAMETERS is the alloc param type for
|
||||
// NV_MEMORY_FABRIC_IMPORTED_REF, from
|
||||
// src/common/sdk/nvidia/inc/class/cl00fb.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV_EXPORT_MEM_PACKET struct {
|
||||
UUID [NV_MEM_EXPORT_UUID_LEN]uint8
|
||||
Opaque [16]uint8
|
||||
type NV00FB_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
ExportUUID [NV_MEM_EXPORT_UUID_LEN]uint8
|
||||
Index uint16
|
||||
Pad0 [2]byte
|
||||
Flags uint32
|
||||
ID uint64
|
||||
}
|
||||
|
||||
// HasPOsEvent is a type constraint for allocation parameter structs containing
|
||||
// an optional pOsEvent field. Despite being P64-typed by the driver, pOsEvent
|
||||
// is a file descriptor whose numerical value is resolved by the driver. So it
|
||||
// must be translated from a sandbox FD to a host FD. See
|
||||
// src/nvidia/src/kernel/mem_mgr/mem_multicast_fabric.c:_memMulticastFabricDescriptorEnqueueWait()
|
||||
// => src/nvidia/arch/nvalloc/unix/src/os.c:osUserHandleToKernelPtr().
|
||||
//
|
||||
// This is necessary because, as of this writing (Go 1.20), there is no way to
|
||||
// enable field access using a Go type constraint.
|
||||
type HasPOsEvent interface {
|
||||
GetPOsEvent() P64
|
||||
SetPOsEvent(P64)
|
||||
}
|
||||
|
||||
// NV00FD_ALLOCATION_PARAMETERS is the alloc param type for NV_MEMORY_MULTICAST_FABRIC
|
||||
|
|
@ -521,13 +700,25 @@ type NV_EXPORT_MEM_PACKET struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV00FD_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Alignment uint64
|
||||
AllocSize uint64
|
||||
PageSize uint32
|
||||
AllocFlags uint32
|
||||
NumGPUs uint32
|
||||
_ uint32
|
||||
POsEvent P64
|
||||
// POsEvent is an optional file descriptor; see HasPOsEvent.
|
||||
POsEvent P64
|
||||
}
|
||||
|
||||
// GetPOsEvent implements HasPOsEvent.GetPOsEvent.
|
||||
func (p *NV00FD_ALLOCATION_PARAMETERS) GetPOsEvent() P64 {
|
||||
return p.POsEvent
|
||||
}
|
||||
|
||||
// SetPOsEvent implements HasPOsEvent.SetPOsEvent.
|
||||
func (p *NV00FD_ALLOCATION_PARAMETERS) SetPOsEvent(posEvent P64) {
|
||||
p.POsEvent = posEvent
|
||||
}
|
||||
|
||||
// NV00FD_ALLOCATION_PARAMETERS_V545 is the updated version of
|
||||
|
|
@ -535,17 +726,47 @@ type NV00FD_ALLOCATION_PARAMETERS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV00FD_ALLOCATION_PARAMETERS_V545 struct {
|
||||
_ structs.HostLayout
|
||||
ExpPacket NV_EXPORT_MEM_PACKET
|
||||
Index uint16
|
||||
_ [6]byte
|
||||
NV00FD_ALLOCATION_PARAMETERS
|
||||
}
|
||||
|
||||
// NV00FD_ALLOCATION_PARAMETERS_V590 is the updated version of
|
||||
// NV00FD_ALLOCATION_PARAMETERS since 590.44.01.
|
||||
//
|
||||
// +marshal
|
||||
type NV00FD_ALLOCATION_PARAMETERS_V590 struct {
|
||||
_ structs.HostLayout
|
||||
ExpPacket NV_EXPORT_MEM_PACKET
|
||||
Index uint16
|
||||
_ [6]byte
|
||||
Alignment uint64
|
||||
AllocSize uint64
|
||||
PageSize uint64
|
||||
AllocFlags uint32
|
||||
NumGPUs uint32
|
||||
// POsEvent is an optional file descriptor; see HasPOsEvent.
|
||||
POsEvent P64
|
||||
}
|
||||
|
||||
// GetPOsEvent implements HasPOsEvent.GetPOsEvent.
|
||||
func (p *NV00FD_ALLOCATION_PARAMETERS_V590) GetPOsEvent() P64 {
|
||||
return p.POsEvent
|
||||
}
|
||||
|
||||
// SetPOsEvent implements HasPOsEvent.SetPOsEvent.
|
||||
func (p *NV00FD_ALLOCATION_PARAMETERS_V590) SetPOsEvent(posEvent P64) {
|
||||
p.POsEvent = posEvent
|
||||
}
|
||||
|
||||
// NV_MEMORY_MAPPER_ALLOCATION_PARAMS is the alloc param type for
|
||||
// NV_MEMORY_MAPPER, from src/common/sdk/nvidia/inc/class/cl00fe.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_MAPPER_ALLOCATION_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
unused uint8
|
||||
}
|
||||
|
||||
|
|
@ -554,6 +775,7 @@ type NV_MEMORY_MAPPER_ALLOCATION_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_MAPPER_ALLOCATION_PARAMS_V550 struct {
|
||||
_ structs.HostLayout
|
||||
HSemaphoreSurface Handle
|
||||
MaxQueueSize uint32
|
||||
}
|
||||
|
|
@ -563,6 +785,7 @@ type NV_MEMORY_MAPPER_ALLOCATION_PARAMS_V550 struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_MEMORY_MAPPER_ALLOCATION_PARAMS_V555 struct {
|
||||
_ structs.HostLayout
|
||||
NV_MEMORY_MAPPER_ALLOCATION_PARAMS_V550
|
||||
HNotificationMemory Handle
|
||||
_ uint32
|
||||
|
|
@ -574,6 +797,7 @@ type NV_MEMORY_MAPPER_ALLOCATION_PARAMS_V555 struct {
|
|||
//
|
||||
// +marshal
|
||||
type NV_CONFIDENTIAL_COMPUTE_ALLOC_PARAMS struct {
|
||||
_ structs.HostLayout
|
||||
Handle Handle
|
||||
}
|
||||
|
||||
|
|
@ -582,9 +806,51 @@ type NV_CONFIDENTIAL_COMPUTE_ALLOC_PARAMS struct {
|
|||
//
|
||||
// +marshal
|
||||
type NVA0BC_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
CodecType uint32
|
||||
HResolution uint32
|
||||
VResolution uint32
|
||||
Version uint32
|
||||
HMem Handle
|
||||
}
|
||||
|
||||
// NV_NVJPG_ALLOCATION_PARAMETERS is the alloc params type for
|
||||
// NVxxD1_VIDEO_NVJPG classes, from src/common/sdk/nvidia/inc/nvos.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV_NVJPG_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Size uint32
|
||||
ProhibitMultipleInstances uint32
|
||||
EngineInstance uint32
|
||||
}
|
||||
|
||||
// NV_OFA_ALLOCATION_PARAMETERS is the alloc params type for
|
||||
// NVxxFA_VIDEO_OFA classes, from src/common/sdk/nvidia/inc/nvos.h.
|
||||
//
|
||||
// +marshal
|
||||
type NV_OFA_ALLOCATION_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
Size uint32
|
||||
ProhibitMultipleInstances uint32
|
||||
}
|
||||
|
||||
// NV_OFA_ALLOCATION_PARAMETERS_V545 is the updated version of
|
||||
// NV_OFA_ALLOCATION_PARAMETERS since 545.23.06.
|
||||
//
|
||||
// +marshal
|
||||
type NV_OFA_ALLOCATION_PARAMETERS_V545 struct {
|
||||
_ structs.HostLayout
|
||||
NV_OFA_ALLOCATION_PARAMETERS
|
||||
EngineInstance uint32
|
||||
}
|
||||
|
||||
// NVB2CC_ALLOC_PARAMETERS is the alloc params type for MAXWELL_PROFILER_DEVICE,
|
||||
// from src/common/sdk/nvidia/inc/class/clb2cc.h.
|
||||
//
|
||||
// +marshal
|
||||
type NVB2CC_ALLOC_PARAMETERS struct {
|
||||
_ structs.HostLayout
|
||||
HClientTarget Handle
|
||||
HContextTarget Handle
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue