(cherry picked from commit af77e083a208dbd4f5de7037d247c51e0e5d4322)
This commit is contained in:
Milos Tijanic 2024-06-27 19:21:59 +02:00 committed by Gaurav Juvekar
parent 74ee05e160
commit 171c735e57
No known key found for this signature in database
GPG Key ID: 7043410E102D7F5E
20 changed files with 693 additions and 71 deletions

View File

@ -2,6 +2,8 @@
## Release 555 Entries ## Release 555 Entries
### [555.58] 2024-06-27
### [555.52.04] 2024-06-05 ### [555.52.04] 2024-06-05
### [555.42.02] 2024-05-21 ### [555.42.02] 2024-05-21

View File

@ -1,7 +1,7 @@
# NVIDIA Linux Open GPU Kernel Module Source # NVIDIA Linux Open GPU Kernel Module Source
This is the source release of the NVIDIA Linux open GPU kernel modules, This is the source release of the NVIDIA Linux open GPU kernel modules,
version 555.52.04. version 555.58.
## How to Build ## How to Build
@ -17,7 +17,7 @@ as root:
Note that the kernel modules built here must be used with GSP Note that the kernel modules built here must be used with GSP
firmware and user-space NVIDIA GPU driver components from a corresponding firmware and user-space NVIDIA GPU driver components from a corresponding
555.52.04 driver release. This can be achieved by installing 555.58 driver release. This can be achieved by installing
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules` the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
option. E.g., option. E.g.,
@ -188,7 +188,7 @@ encountered specific to them.
For details on feature support and limitations, see the NVIDIA GPU driver For details on feature support and limitations, see the NVIDIA GPU driver
end user README here: end user README here:
https://us.download.nvidia.com/XFree86/Linux-x86_64/555.52.04/README/kernel_open.html https://us.download.nvidia.com/XFree86/Linux-x86_64/555.58/README/kernel_open.html
For vGPU support, please refer to the README.vgpu packaged in the vGPU Host For vGPU support, please refer to the README.vgpu packaged in the vGPU Host
Package for more details. Package for more details.

View File

@ -72,7 +72,7 @@ EXTRA_CFLAGS += -I$(src)/common/inc
EXTRA_CFLAGS += -I$(src) EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"555.52.04\" EXTRA_CFLAGS += -DNV_VERSION_STRING=\"555.58\"
ifneq ($(SYSSRCHOST1X),) ifneq ($(SYSSRCHOST1X),)
EXTRA_CFLAGS += -I$(SYSSRCHOST1X) EXTRA_CFLAGS += -I$(SYSSRCHOST1X)

View File

@ -36,25 +36,25 @@
// and then checked back in. You cannot make changes to these sections without // and then checked back in. You cannot make changes to these sections without
// corresponding changes to the buildmeister script // corresponding changes to the buildmeister script
#ifndef NV_BUILD_BRANCH #ifndef NV_BUILD_BRANCH
#define NV_BUILD_BRANCH r555_97 #define NV_BUILD_BRANCH r555_00
#endif #endif
#ifndef NV_PUBLIC_BRANCH #ifndef NV_PUBLIC_BRANCH
#define NV_PUBLIC_BRANCH r555_97 #define NV_PUBLIC_BRANCH r555_00
#endif #endif
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) #if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r555/r555_97-144" #define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r555/r555_00-164"
#define NV_BUILD_CHANGELIST_NUM (34376233) #define NV_BUILD_CHANGELIST_NUM (34441657)
#define NV_BUILD_TYPE "Official" #define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "rel/gpu_drv/r555/r555_97-144" #define NV_BUILD_NAME "rel/gpu_drv/r555/r555_00-164"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34376233) #define NV_LAST_OFFICIAL_CHANGELIST_NUM (34441657)
#else /* Windows builds */ #else /* Windows builds */
#define NV_BUILD_BRANCH_VERSION "r555_97-2" #define NV_BUILD_BRANCH_VERSION "r555_00-166"
#define NV_BUILD_CHANGELIST_NUM (34367477) #define NV_BUILD_CHANGELIST_NUM (34441657)
#define NV_BUILD_TYPE "Official" #define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "555.99" #define NV_BUILD_NAME "556.09"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34367477) #define NV_LAST_OFFICIAL_CHANGELIST_NUM (34441657)
#define NV_BUILD_BRANCH_BASE_VERSION R555 #define NV_BUILD_BRANCH_BASE_VERSION R555
#endif #endif
// End buildmeister python edited section // End buildmeister python edited section

View File

@ -4,7 +4,7 @@
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \ #if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1) (defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
#define NV_VERSION_STRING "555.52.04" #define NV_VERSION_STRING "555.58"
#else #else

View File

@ -79,6 +79,7 @@ typedef enum
NVDUMP_COMPONENT_ENG_GSP, NVDUMP_COMPONENT_ENG_GSP,
NVDUMP_COMPONENT_ENG_INFOROM, NVDUMP_COMPONENT_ENG_INFOROM,
NVDUMP_COMPONENT_ENG_GCX, NVDUMP_COMPONENT_ENG_GCX,
NVDUMP_COMPONENT_ENG_KGSP,
// The following components are global to the system: // The following components are global to the system:
NVDUMP_COMPONENT_SYS_RCDB = 0x400, NVDUMP_COMPONENT_SYS_RCDB = 0x400,
NVDUMP_COMPONENT_SYS_SYSINFO, NVDUMP_COMPONENT_SYS_SYSINFO,

View File

@ -17,9 +17,9 @@ extern const PRB_MSG_DESC prb_messages_dcl[];
// Message maximum lengths // Message maximum lengths
// Does not include repeated fields, strings and byte arrays. // Does not include repeated fields, strings and byte arrays.
#define DCL_ENGINES_LEN 130 #define DCL_ENGINES_LEN 136
#define DCL_DCLMSG_LEN 567 #define DCL_DCLMSG_LEN 573
#define DCL_ERRORBLOCK_LEN 571 #define DCL_ERRORBLOCK_LEN 577
extern const PRB_FIELD_DESC prb_fields_dcl_engines[]; extern const PRB_FIELD_DESC prb_fields_dcl_engines[];
@ -28,7 +28,7 @@ extern const PRB_FIELD_DESC prb_fields_dcl_engines[];
#define DCL_ENGINES_ENG_MC (&prb_fields_dcl_engines[1]) #define DCL_ENGINES_ENG_MC (&prb_fields_dcl_engines[1])
// 'Engines' field lengths // 'Engines' field lengths
#define DCL_ENGINES_ENG_GPU_LEN 59 #define DCL_ENGINES_ENG_GPU_LEN 65
#define DCL_ENGINES_ENG_MC_LEN 69 #define DCL_ENGINES_ENG_MC_LEN 69
extern const PRB_FIELD_DESC prb_fields_dcl_dclmsg[]; extern const PRB_FIELD_DESC prb_fields_dcl_dclmsg[];
@ -49,7 +49,7 @@ extern const PRB_FIELD_DESC prb_fields_dcl_dclmsg[];
#define DCL_DCLMSG_JOURNAL_BADREAD_LEN 70 #define DCL_DCLMSG_JOURNAL_BADREAD_LEN 70
#define DCL_DCLMSG_JOURNAL_BUGCHECK_LEN 69 #define DCL_DCLMSG_JOURNAL_BUGCHECK_LEN 69
#define DCL_DCLMSG_RCCOUNTER_LEN 64 #define DCL_DCLMSG_RCCOUNTER_LEN 64
#define DCL_DCLMSG_ENGINE_LEN 133 #define DCL_DCLMSG_ENGINE_LEN 139
extern const PRB_FIELD_DESC prb_fields_dcl_errorblock[]; extern const PRB_FIELD_DESC prb_fields_dcl_errorblock[];
@ -57,7 +57,7 @@ extern const PRB_FIELD_DESC prb_fields_dcl_errorblock[];
#define DCL_ERRORBLOCK_DATA (&prb_fields_dcl_errorblock[0]) #define DCL_ERRORBLOCK_DATA (&prb_fields_dcl_errorblock[0])
// 'ErrorBlock' field lengths // 'ErrorBlock' field lengths
#define DCL_ERRORBLOCK_DATA_LEN 570 #define DCL_ERRORBLOCK_DATA_LEN 576
extern const PRB_SERVICE_DESC prb_services_dcl[]; extern const PRB_SERVICE_DESC prb_services_dcl[];

View File

@ -194,6 +194,18 @@ const PRB_FIELD_DESC prb_fields_nvdebug_eng_gpu[] = {
PRB_MAYBE_FIELD_NAME("regs") PRB_MAYBE_FIELD_NAME("regs")
PRB_MAYBE_FIELD_DEFAULT(0) PRB_MAYBE_FIELD_DEFAULT(0)
}, },
{
39,
{
PRB_OPTIONAL,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("rusd_mask")
PRB_MAYBE_FIELD_DEFAULT(0)
},
}; };
// 'Nvd' field defaults // 'Nvd' field defaults
@ -214,6 +226,36 @@ const PRB_FIELD_DESC prb_fields_nvdebug_eng_nvd[] = {
}, },
}; };
// 'KGsp' field defaults
// 'KGsp' field descriptors
const PRB_FIELD_DESC prb_fields_nvdebug_eng_kgsp[] = {
{
1,
{
PRB_REPEATED,
PRB_MESSAGE,
0,
},
NVDEBUG_ENG_KGSP_RPCINFO,
0,
PRB_MAYBE_FIELD_NAME("rpc_history")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
2,
{
PRB_REPEATED,
PRB_MESSAGE,
0,
},
NVDEBUG_ENG_KGSP_RPCINFO,
0,
PRB_MAYBE_FIELD_NAME("event_history")
PRB_MAYBE_FIELD_DEFAULT(0)
},
};
// 'RmData' field defaults // 'RmData' field defaults
// 'RmData' field descriptors // 'RmData' field descriptors
@ -262,6 +304,72 @@ const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc_pcibarinfo[] = {
}, },
}; };
// 'RpcInfo' field defaults
// 'RpcInfo' field descriptors
const PRB_FIELD_DESC prb_fields_nvdebug_eng_kgsp_rpcinfo[] = {
{
1,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("function")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
2,
{
PRB_REQUIRED,
PRB_UINT64,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("ts_start")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
3,
{
PRB_REQUIRED,
PRB_UINT64,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("ts_end")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
4,
{
PRB_OPTIONAL,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("data0")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
5,
{
PRB_OPTIONAL,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("data1")
PRB_MAYBE_FIELD_DEFAULT(0)
},
};
// Message descriptors // Message descriptors
const PRB_MSG_DESC prb_messages_nvdebug_eng[] = { const PRB_MSG_DESC prb_messages_nvdebug_eng[] = {
{ {
@ -270,7 +378,7 @@ const PRB_MSG_DESC prb_messages_nvdebug_eng[] = {
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Mc") PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Mc")
}, },
{ {
12, 13,
prb_fields_nvdebug_eng_gpu, prb_fields_nvdebug_eng_gpu,
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Gpu") PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Gpu")
}, },
@ -279,6 +387,11 @@ const PRB_MSG_DESC prb_messages_nvdebug_eng[] = {
prb_fields_nvdebug_eng_nvd, prb_fields_nvdebug_eng_nvd,
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Nvd") PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Nvd")
}, },
{
2,
prb_fields_nvdebug_eng_kgsp,
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.KGsp")
},
{ {
1, 1,
prb_fields_nvdebug_eng_mc_rmdata, prb_fields_nvdebug_eng_mc_rmdata,
@ -289,6 +402,11 @@ const PRB_MSG_DESC prb_messages_nvdebug_eng[] = {
prb_fields_nvdebug_eng_mc_pcibarinfo, prb_fields_nvdebug_eng_mc_pcibarinfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Mc.PciBarInfo") PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.Mc.PciBarInfo")
}, },
{
5,
prb_fields_nvdebug_eng_kgsp_rpcinfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.Eng.KGsp.RpcInfo")
},
}; };
// Service descriptors // Service descriptors

View File

@ -11,16 +11,20 @@ extern const PRB_MSG_DESC prb_messages_nvdebug_eng[];
#define NVDEBUG_ENG_MC (&prb_messages_nvdebug_eng[0]) #define NVDEBUG_ENG_MC (&prb_messages_nvdebug_eng[0])
#define NVDEBUG_ENG_GPU (&prb_messages_nvdebug_eng[1]) #define NVDEBUG_ENG_GPU (&prb_messages_nvdebug_eng[1])
#define NVDEBUG_ENG_NVD (&prb_messages_nvdebug_eng[2]) #define NVDEBUG_ENG_NVD (&prb_messages_nvdebug_eng[2])
#define NVDEBUG_ENG_MC_RMDATA (&prb_messages_nvdebug_eng[3]) #define NVDEBUG_ENG_KGSP (&prb_messages_nvdebug_eng[3])
#define NVDEBUG_ENG_MC_PCIBARINFO (&prb_messages_nvdebug_eng[4]) #define NVDEBUG_ENG_MC_RMDATA (&prb_messages_nvdebug_eng[4])
#define NVDEBUG_ENG_MC_PCIBARINFO (&prb_messages_nvdebug_eng[5])
#define NVDEBUG_ENG_KGSP_RPCINFO (&prb_messages_nvdebug_eng[6])
// Message maximum lengths // Message maximum lengths
// Does not include repeated fields, strings and byte arrays. // Does not include repeated fields, strings and byte arrays.
#define NVDEBUG_ENG_MC_LEN 66 #define NVDEBUG_ENG_MC_LEN 66
#define NVDEBUG_ENG_GPU_LEN 56 #define NVDEBUG_ENG_GPU_LEN 62
#define NVDEBUG_ENG_NVD_LEN 30 #define NVDEBUG_ENG_NVD_LEN 30
#define NVDEBUG_ENG_KGSP_LEN 88
#define NVDEBUG_ENG_MC_RMDATA_LEN 6 #define NVDEBUG_ENG_MC_RMDATA_LEN 6
#define NVDEBUG_ENG_MC_PCIBARINFO_LEN 22 #define NVDEBUG_ENG_MC_PCIBARINFO_LEN 22
#define NVDEBUG_ENG_KGSP_RPCINFO_LEN 40
extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc[];
@ -49,6 +53,7 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_gpu[];
#define NVDEBUG_ENG_GPU_IS_LOST (&prb_fields_nvdebug_eng_gpu[9]) #define NVDEBUG_ENG_GPU_IS_LOST (&prb_fields_nvdebug_eng_gpu[9])
#define NVDEBUG_ENG_GPU_IS_ACCESSIBLE (&prb_fields_nvdebug_eng_gpu[10]) #define NVDEBUG_ENG_GPU_IS_ACCESSIBLE (&prb_fields_nvdebug_eng_gpu[10])
#define NVDEBUG_ENG_GPU_REGS (&prb_fields_nvdebug_eng_gpu[11]) #define NVDEBUG_ENG_GPU_REGS (&prb_fields_nvdebug_eng_gpu[11])
#define NVDEBUG_ENG_GPU_RUSD_MASK (&prb_fields_nvdebug_eng_gpu[12])
// 'Gpu' field lengths // 'Gpu' field lengths
#define NVDEBUG_ENG_GPU_GPU_ID_LEN 5 #define NVDEBUG_ENG_GPU_GPU_ID_LEN 5
@ -63,6 +68,7 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_gpu[];
#define NVDEBUG_ENG_GPU_IS_LOST_LEN 1 #define NVDEBUG_ENG_GPU_IS_LOST_LEN 1
#define NVDEBUG_ENG_GPU_IS_ACCESSIBLE_LEN 1 #define NVDEBUG_ENG_GPU_IS_ACCESSIBLE_LEN 1
#define NVDEBUG_ENG_GPU_REGS_LEN 29 #define NVDEBUG_ENG_GPU_REGS_LEN 29
#define NVDEBUG_ENG_GPU_RUSD_MASK_LEN 5
extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_nvd[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_nvd[];
@ -72,6 +78,16 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_nvd[];
// 'Nvd' field lengths // 'Nvd' field lengths
#define NVDEBUG_ENG_NVD_REGS_LEN 29 #define NVDEBUG_ENG_NVD_REGS_LEN 29
extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_kgsp[];
// 'KGsp' field descriptor pointers
#define NVDEBUG_ENG_KGSP_RPC_HISTORY (&prb_fields_nvdebug_eng_kgsp[0])
#define NVDEBUG_ENG_KGSP_EVENT_HISTORY (&prb_fields_nvdebug_eng_kgsp[1])
// 'KGsp' field lengths
#define NVDEBUG_ENG_KGSP_RPC_HISTORY_LEN 43
#define NVDEBUG_ENG_KGSP_EVENT_HISTORY_LEN 43
extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc_rmdata[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc_rmdata[];
// 'RmData' field descriptor pointers // 'RmData' field descriptor pointers
@ -90,6 +106,22 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_mc_pcibarinfo[];
#define NVDEBUG_ENG_MC_PCIBARINFO_OFFSET_LEN 10 #define NVDEBUG_ENG_MC_PCIBARINFO_OFFSET_LEN 10
#define NVDEBUG_ENG_MC_PCIBARINFO_LENGTH_LEN 10 #define NVDEBUG_ENG_MC_PCIBARINFO_LENGTH_LEN 10
extern const PRB_FIELD_DESC prb_fields_nvdebug_eng_kgsp_rpcinfo[];
// 'RpcInfo' field descriptor pointers
#define NVDEBUG_ENG_KGSP_RPCINFO_FUNCTION (&prb_fields_nvdebug_eng_kgsp_rpcinfo[0])
#define NVDEBUG_ENG_KGSP_RPCINFO_TS_START (&prb_fields_nvdebug_eng_kgsp_rpcinfo[1])
#define NVDEBUG_ENG_KGSP_RPCINFO_TS_END (&prb_fields_nvdebug_eng_kgsp_rpcinfo[2])
#define NVDEBUG_ENG_KGSP_RPCINFO_DATA0 (&prb_fields_nvdebug_eng_kgsp_rpcinfo[3])
#define NVDEBUG_ENG_KGSP_RPCINFO_DATA1 (&prb_fields_nvdebug_eng_kgsp_rpcinfo[4])
// 'RpcInfo' field lengths
#define NVDEBUG_ENG_KGSP_RPCINFO_FUNCTION_LEN 5
#define NVDEBUG_ENG_KGSP_RPCINFO_TS_START_LEN 10
#define NVDEBUG_ENG_KGSP_RPCINFO_TS_END_LEN 10
#define NVDEBUG_ENG_KGSP_RPCINFO_DATA0_LEN 5
#define NVDEBUG_ENG_KGSP_RPCINFO_DATA1_LEN 5
extern const PRB_SERVICE_DESC prb_services_nvdebug_eng[]; extern const PRB_SERVICE_DESC prb_services_nvdebug_eng[];
// Service descriptor pointers // Service descriptor pointers

View File

@ -102,13 +102,18 @@ const struct NVOC_CLASS_DEF __nvoc_class_def_KernelGsp =
/*pExportInfo=*/ &__nvoc_export_info_KernelGsp /*pExportInfo=*/ &__nvoc_export_info_KernelGsp
}; };
// 5 down-thunk(s) defined to bridge methods in KernelGsp from superclasses // 6 down-thunk(s) defined to bridge methods in KernelGsp from superclasses
// kgspConstructEngine: virtual override (engstate) base (engstate) // kgspConstructEngine: virtual override (engstate) base (engstate)
static NV_STATUS __nvoc_down_thunk_KernelGsp_engstateConstructEngine(struct OBJGPU *pGpu, struct OBJENGSTATE *pKernelGsp, ENGDESCRIPTOR arg3) { static NV_STATUS __nvoc_down_thunk_KernelGsp_engstateConstructEngine(struct OBJGPU *pGpu, struct OBJENGSTATE *pKernelGsp, ENGDESCRIPTOR arg3) {
return kgspConstructEngine(pGpu, (struct KernelGsp *)(((unsigned char *) pKernelGsp) - __nvoc_rtti_KernelGsp_OBJENGSTATE.offset), arg3); return kgspConstructEngine(pGpu, (struct KernelGsp *)(((unsigned char *) pKernelGsp) - __nvoc_rtti_KernelGsp_OBJENGSTATE.offset), arg3);
} }
// kgspStateInitLocked: virtual override (engstate) base (engstate)
static NV_STATUS __nvoc_down_thunk_KernelGsp_engstateStateInitLocked(struct OBJGPU *pGpu, struct OBJENGSTATE *pKernelGsp) {
return kgspStateInitLocked(pGpu, (struct KernelGsp *)(((unsigned char *) pKernelGsp) - __nvoc_rtti_KernelGsp_OBJENGSTATE.offset));
}
// kgspRegisterIntrService: virtual override (intrserv) base (intrserv) // kgspRegisterIntrService: virtual override (intrserv) base (intrserv)
static void __nvoc_down_thunk_KernelGsp_intrservRegisterIntrService(struct OBJGPU *pGpu, struct IntrService *pKernelGsp, IntrServiceRecord pRecords[175]) { static void __nvoc_down_thunk_KernelGsp_intrservRegisterIntrService(struct OBJGPU *pGpu, struct IntrService *pKernelGsp, IntrServiceRecord pRecords[175]) {
kgspRegisterIntrService(pGpu, (struct KernelGsp *)(((unsigned char *) pKernelGsp) - __nvoc_rtti_KernelGsp_IntrService.offset), pRecords); kgspRegisterIntrService(pGpu, (struct KernelGsp *)(((unsigned char *) pKernelGsp) - __nvoc_rtti_KernelGsp_IntrService.offset), pRecords);
@ -130,7 +135,7 @@ static void __nvoc_down_thunk_KernelGsp_kcrashcatEngineReadEmem(struct KernelCra
} }
// 29 up-thunk(s) defined to bridge methods in KernelGsp to superclasses // 28 up-thunk(s) defined to bridge methods in KernelGsp to superclasses
// kgspInitMissing: virtual inherited (engstate) base (engstate) // kgspInitMissing: virtual inherited (engstate) base (engstate)
static void __nvoc_up_thunk_OBJENGSTATE_kgspInitMissing(POBJGPU pGpu, struct KernelGsp *pEngstate) { static void __nvoc_up_thunk_OBJENGSTATE_kgspInitMissing(POBJGPU pGpu, struct KernelGsp *pEngstate) {
@ -147,11 +152,6 @@ static NV_STATUS __nvoc_up_thunk_OBJENGSTATE_kgspStatePreInitUnlocked(POBJGPU pG
return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *) pEngstate) + __nvoc_rtti_KernelGsp_OBJENGSTATE.offset)); return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *) pEngstate) + __nvoc_rtti_KernelGsp_OBJENGSTATE.offset));
} }
// kgspStateInitLocked: virtual inherited (engstate) base (engstate)
static NV_STATUS __nvoc_up_thunk_OBJENGSTATE_kgspStateInitLocked(POBJGPU pGpu, struct KernelGsp *pEngstate) {
return engstateStateInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *) pEngstate) + __nvoc_rtti_KernelGsp_OBJENGSTATE.offset));
}
// kgspStateInitUnlocked: virtual inherited (engstate) base (engstate) // kgspStateInitUnlocked: virtual inherited (engstate) base (engstate)
static NV_STATUS __nvoc_up_thunk_OBJENGSTATE_kgspStateInitUnlocked(POBJGPU pGpu, struct KernelGsp *pEngstate) { static NV_STATUS __nvoc_up_thunk_OBJENGSTATE_kgspStateInitUnlocked(POBJGPU pGpu, struct KernelGsp *pEngstate) {
return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *) pEngstate) + __nvoc_rtti_KernelGsp_OBJENGSTATE.offset)); return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *) pEngstate) + __nvoc_rtti_KernelGsp_OBJENGSTATE.offset));
@ -407,6 +407,10 @@ static void __nvoc_init_funcTable_KernelGsp_1(KernelGsp *pThis, RmHalspecOwner *
pThis->__kgspConstructEngine__ = &kgspConstructEngine_IMPL; pThis->__kgspConstructEngine__ = &kgspConstructEngine_IMPL;
pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_down_thunk_KernelGsp_engstateConstructEngine; pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_down_thunk_KernelGsp_engstateConstructEngine;
// kgspStateInitLocked -- virtual override (engstate) base (engstate)
pThis->__kgspStateInitLocked__ = &kgspStateInitLocked_IMPL;
pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__ = &__nvoc_down_thunk_KernelGsp_engstateStateInitLocked;
// kgspRegisterIntrService -- virtual override (intrserv) base (intrserv) // kgspRegisterIntrService -- virtual override (intrserv) base (intrserv)
pThis->__kgspRegisterIntrService__ = &kgspRegisterIntrService_IMPL; pThis->__kgspRegisterIntrService__ = &kgspRegisterIntrService_IMPL;
pThis->__nvoc_base_IntrService.__intrservRegisterIntrService__ = &__nvoc_down_thunk_KernelGsp_intrservRegisterIntrService; pThis->__nvoc_base_IntrService.__intrservRegisterIntrService__ = &__nvoc_down_thunk_KernelGsp_intrservRegisterIntrService;
@ -1272,9 +1276,6 @@ static void __nvoc_init_funcTable_KernelGsp_1(KernelGsp *pThis, RmHalspecOwner *
// kgspStatePreInitUnlocked -- virtual inherited (engstate) base (engstate) // kgspStatePreInitUnlocked -- virtual inherited (engstate) base (engstate)
pThis->__kgspStatePreInitUnlocked__ = &__nvoc_up_thunk_OBJENGSTATE_kgspStatePreInitUnlocked; pThis->__kgspStatePreInitUnlocked__ = &__nvoc_up_thunk_OBJENGSTATE_kgspStatePreInitUnlocked;
// kgspStateInitLocked -- virtual inherited (engstate) base (engstate)
pThis->__kgspStateInitLocked__ = &__nvoc_up_thunk_OBJENGSTATE_kgspStateInitLocked;
// kgspStateInitUnlocked -- virtual inherited (engstate) base (engstate) // kgspStateInitUnlocked -- virtual inherited (engstate) base (engstate)
pThis->__kgspStateInitUnlocked__ = &__nvoc_up_thunk_OBJENGSTATE_kgspStateInitUnlocked; pThis->__kgspStateInitUnlocked__ = &__nvoc_up_thunk_OBJENGSTATE_kgspStateInitUnlocked;
@ -1349,7 +1350,7 @@ static void __nvoc_init_funcTable_KernelGsp_1(KernelGsp *pThis, RmHalspecOwner *
// kgspGetWFL0Offset -- virtual halified (singleton optimized) inherited (kcrashcatEngine) base (kflcn) // kgspGetWFL0Offset -- virtual halified (singleton optimized) inherited (kcrashcatEngine) base (kflcn)
pThis->__kgspGetWFL0Offset__ = &__nvoc_up_thunk_KernelCrashCatEngine_kgspGetWFL0Offset; pThis->__kgspGetWFL0Offset__ = &__nvoc_up_thunk_KernelCrashCatEngine_kgspGetWFL0Offset;
} // End __nvoc_init_funcTable_KernelGsp_1 with approximately 195 basic block(s). } // End __nvoc_init_funcTable_KernelGsp_1 with approximately 196 basic block(s).
// Initialize vtable(s) for 82 virtual method(s). // Initialize vtable(s) for 82 virtual method(s).

View File

@ -332,6 +332,7 @@ struct KernelGsp {
// Vtable with 82 per-object function pointers // Vtable with 82 per-object function pointers
NV_STATUS (*__kgspConstructEngine__)(struct OBJGPU *, struct KernelGsp * /*this*/, ENGDESCRIPTOR); // virtual override (engstate) base (engstate) NV_STATUS (*__kgspConstructEngine__)(struct OBJGPU *, struct KernelGsp * /*this*/, ENGDESCRIPTOR); // virtual override (engstate) base (engstate)
NV_STATUS (*__kgspStateInitLocked__)(struct OBJGPU *, struct KernelGsp * /*this*/); // virtual override (engstate) base (engstate)
void (*__kgspRegisterIntrService__)(struct OBJGPU *, struct KernelGsp * /*this*/, IntrServiceRecord *); // virtual override (intrserv) base (intrserv) void (*__kgspRegisterIntrService__)(struct OBJGPU *, struct KernelGsp * /*this*/, IntrServiceRecord *); // virtual override (intrserv) base (intrserv)
NvU32 (*__kgspServiceInterrupt__)(struct OBJGPU *, struct KernelGsp * /*this*/, IntrServiceServiceInterruptArguments *); // virtual override (intrserv) base (intrserv) NvU32 (*__kgspServiceInterrupt__)(struct OBJGPU *, struct KernelGsp * /*this*/, IntrServiceServiceInterruptArguments *); // virtual override (intrserv) base (intrserv)
void (*__kgspConfigureFalcon__)(struct OBJGPU *, struct KernelGsp * /*this*/); // halified (3 hals) body void (*__kgspConfigureFalcon__)(struct OBJGPU *, struct KernelGsp * /*this*/); // halified (3 hals) body
@ -387,7 +388,6 @@ struct KernelGsp {
void (*__kgspInitMissing__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate) void (*__kgspInitMissing__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStatePreInitLocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate) NV_STATUS (*__kgspStatePreInitLocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStatePreInitUnlocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate) NV_STATUS (*__kgspStatePreInitUnlocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStateInitLocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStateInitUnlocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate) NV_STATUS (*__kgspStateInitUnlocked__)(POBJGPU, struct KernelGsp * /*this*/); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStatePreLoad__)(POBJGPU, struct KernelGsp * /*this*/, NvU32); // virtual inherited (engstate) base (engstate) NV_STATUS (*__kgspStatePreLoad__)(POBJGPU, struct KernelGsp * /*this*/, NvU32); // virtual inherited (engstate) base (engstate)
NV_STATUS (*__kgspStateLoad__)(POBJGPU, struct KernelGsp * /*this*/, NvU32); // virtual inherited (engstate) base (engstate) NV_STATUS (*__kgspStateLoad__)(POBJGPU, struct KernelGsp * /*this*/, NvU32); // virtual inherited (engstate) base (engstate)
@ -512,6 +512,8 @@ NV_STATUS __nvoc_objCreate_KernelGsp(KernelGsp**, Dynamic*, NvU32);
// Wrapper macros // Wrapper macros
#define kgspConstructEngine_FNPTR(pKernelGsp) pKernelGsp->__kgspConstructEngine__ #define kgspConstructEngine_FNPTR(pKernelGsp) pKernelGsp->__kgspConstructEngine__
#define kgspConstructEngine(pGpu, pKernelGsp, arg3) kgspConstructEngine_DISPATCH(pGpu, pKernelGsp, arg3) #define kgspConstructEngine(pGpu, pKernelGsp, arg3) kgspConstructEngine_DISPATCH(pGpu, pKernelGsp, arg3)
#define kgspStateInitLocked_FNPTR(pKernelGsp) pKernelGsp->__kgspStateInitLocked__
#define kgspStateInitLocked(pGpu, pKernelGsp) kgspStateInitLocked_DISPATCH(pGpu, pKernelGsp)
#define kgspRegisterIntrService_FNPTR(pKernelGsp) pKernelGsp->__kgspRegisterIntrService__ #define kgspRegisterIntrService_FNPTR(pKernelGsp) pKernelGsp->__kgspRegisterIntrService__
#define kgspRegisterIntrService(pGpu, pKernelGsp, pRecords) kgspRegisterIntrService_DISPATCH(pGpu, pKernelGsp, pRecords) #define kgspRegisterIntrService(pGpu, pKernelGsp, pRecords) kgspRegisterIntrService_DISPATCH(pGpu, pKernelGsp, pRecords)
#define kgspServiceInterrupt_FNPTR(pKernelGsp) pKernelGsp->__kgspServiceInterrupt__ #define kgspServiceInterrupt_FNPTR(pKernelGsp) pKernelGsp->__kgspServiceInterrupt__
@ -672,8 +674,6 @@ NV_STATUS __nvoc_objCreate_KernelGsp(KernelGsp**, Dynamic*, NvU32);
#define kgspStatePreInitLocked(pGpu, pEngstate) kgspStatePreInitLocked_DISPATCH(pGpu, pEngstate) #define kgspStatePreInitLocked(pGpu, pEngstate) kgspStatePreInitLocked_DISPATCH(pGpu, pEngstate)
#define kgspStatePreInitUnlocked_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStatePreInitUnlocked__ #define kgspStatePreInitUnlocked_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStatePreInitUnlocked__
#define kgspStatePreInitUnlocked(pGpu, pEngstate) kgspStatePreInitUnlocked_DISPATCH(pGpu, pEngstate) #define kgspStatePreInitUnlocked(pGpu, pEngstate) kgspStatePreInitUnlocked_DISPATCH(pGpu, pEngstate)
#define kgspStateInitLocked_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__
#define kgspStateInitLocked(pGpu, pEngstate) kgspStateInitLocked_DISPATCH(pGpu, pEngstate)
#define kgspStateInitUnlocked_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStateInitUnlocked__ #define kgspStateInitUnlocked_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStateInitUnlocked__
#define kgspStateInitUnlocked(pGpu, pEngstate) kgspStateInitUnlocked_DISPATCH(pGpu, pEngstate) #define kgspStateInitUnlocked(pGpu, pEngstate) kgspStateInitUnlocked_DISPATCH(pGpu, pEngstate)
#define kgspStatePreLoad_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStatePreLoad__ #define kgspStatePreLoad_FNPTR(pEngstate) pEngstate->__nvoc_base_OBJENGSTATE.__engstateStatePreLoad__
@ -736,6 +736,10 @@ static inline NV_STATUS kgspConstructEngine_DISPATCH(struct OBJGPU *pGpu, struct
return pKernelGsp->__kgspConstructEngine__(pGpu, pKernelGsp, arg3); return pKernelGsp->__kgspConstructEngine__(pGpu, pKernelGsp, arg3);
} }
static inline NV_STATUS kgspStateInitLocked_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) {
return pKernelGsp->__kgspStateInitLocked__(pGpu, pKernelGsp);
}
static inline void kgspRegisterIntrService_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[175]) { static inline void kgspRegisterIntrService_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[175]) {
pKernelGsp->__kgspRegisterIntrService__(pGpu, pKernelGsp, pRecords); pKernelGsp->__kgspRegisterIntrService__(pGpu, pKernelGsp, pRecords);
} }
@ -956,10 +960,6 @@ static inline NV_STATUS kgspStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct K
return pEngstate->__kgspStatePreInitUnlocked__(pGpu, pEngstate); return pEngstate->__kgspStatePreInitUnlocked__(pGpu, pEngstate);
} }
static inline NV_STATUS kgspStateInitLocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) {
return pEngstate->__kgspStateInitLocked__(pGpu, pEngstate);
}
static inline NV_STATUS kgspStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { static inline NV_STATUS kgspStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) {
return pEngstate->__kgspStateInitUnlocked__(pGpu, pEngstate); return pEngstate->__kgspStateInitUnlocked__(pGpu, pEngstate);
} }
@ -1062,6 +1062,8 @@ static inline NvU32 kgspGetWFL0Offset_DISPATCH(struct KernelGsp *arg_this) {
NV_STATUS kgspConstructEngine_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, ENGDESCRIPTOR arg3); NV_STATUS kgspConstructEngine_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, ENGDESCRIPTOR arg3);
NV_STATUS kgspStateInitLocked_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp);
void kgspRegisterIntrService_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[175]); void kgspRegisterIntrService_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[175]);
NvU32 kgspServiceInterrupt_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceServiceInterruptArguments *pParams); NvU32 kgspServiceInterrupt_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceServiceInterruptArguments *pParams);

View File

@ -194,6 +194,18 @@ const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo[] = {
PRB_MAYBE_FIELD_NAME("bugcheck_count") PRB_MAYBE_FIELD_NAME("bugcheck_count")
PRB_MAYBE_FIELD_DEFAULT(0) PRB_MAYBE_FIELD_DEFAULT(0)
}, },
{
13,
{
PRB_OPTIONAL,
PRB_MESSAGE,
0,
},
NVDEBUG_SYSTEMINFO_RESOURCESERVER,
0,
PRB_MAYBE_FIELD_NAME("resserv_info")
PRB_MAYBE_FIELD_DEFAULT(0)
},
}; };
// 'GpuInfo' field defaults // 'GpuInfo' field defaults
@ -236,6 +248,18 @@ const PRB_FIELD_DESC prb_fields_nvdebug_gpuinfo[] = {
PRB_MAYBE_FIELD_NAME("eng_nvd") PRB_MAYBE_FIELD_NAME("eng_nvd")
PRB_MAYBE_FIELD_DEFAULT(0) PRB_MAYBE_FIELD_DEFAULT(0)
}, },
{
24,
{
PRB_REPEATED,
PRB_MESSAGE,
0,
},
NVDEBUG_ENG_KGSP,
0,
PRB_MAYBE_FIELD_NAME("eng_kgsp")
PRB_MAYBE_FIELD_DEFAULT(0)
},
}; };
// 'NvDump' field defaults // 'NvDump' field defaults
@ -838,15 +862,189 @@ const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_timeinfo[] = {
}, },
}; };
// 'ResourceServer' field defaults
// 'ResourceServer' field descriptors
const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver[] = {
{
1,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("num_clients")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
2,
{
PRB_REQUIRED,
PRB_UINT64,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("num_resources")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
3,
{
PRB_REPEATED,
PRB_MESSAGE,
0,
},
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO,
0,
PRB_MAYBE_FIELD_NAME("client_info")
PRB_MAYBE_FIELD_DEFAULT(0)
},
};
// 'ClientInfo' field defaults
// 'ClientInfo' field descriptors
const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[] = {
{
1,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("client_handle")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
2,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("process_id")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
3,
{
PRB_REQUIRED,
PRB_STRING,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("process_name")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
4,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("flags")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
5,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("priv_level")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
6,
{
PRB_REPEATED,
PRB_MESSAGE,
0,
},
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION,
0,
PRB_MAYBE_FIELD_NAME("allocations")
PRB_MAYBE_FIELD_DEFAULT(0)
},
};
// 'ClientAllocation' field defaults
// 'ClientAllocation' field descriptors
const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[] = {
{
1,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("object_handle")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
2,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("object_class_id")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
3,
{
PRB_REQUIRED,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("parent_handle")
PRB_MAYBE_FIELD_DEFAULT(0)
},
{
4,
{
PRB_OPTIONAL,
PRB_UINT32,
0,
},
0,
0,
PRB_MAYBE_FIELD_NAME("gpu_instance")
PRB_MAYBE_FIELD_DEFAULT(0)
},
};
// Message descriptors // Message descriptors
const PRB_MSG_DESC prb_messages_nvdebug[] = { const PRB_MSG_DESC prb_messages_nvdebug[] = {
{ {
12, 13,
prb_fields_nvdebug_systeminfo, prb_fields_nvdebug_systeminfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo") PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo")
}, },
{ {
3, 4,
prb_fields_nvdebug_gpuinfo, prb_fields_nvdebug_gpuinfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.GpuInfo") PRB_MAYBE_MESSAGE_NAME("NvDebug.GpuInfo")
}, },
@ -900,6 +1098,21 @@ const PRB_MSG_DESC prb_messages_nvdebug[] = {
prb_fields_nvdebug_systeminfo_timeinfo, prb_fields_nvdebug_systeminfo_timeinfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo.TimeInfo") PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo.TimeInfo")
}, },
{
3,
prb_fields_nvdebug_systeminfo_resourceserver,
PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo.ResourceServer")
},
{
6,
prb_fields_nvdebug_systeminfo_resourceserver_clientinfo,
PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo.ResourceServer.ClientInfo")
},
{
4,
prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation,
PRB_MAYBE_MESSAGE_NAME("NvDebug.SystemInfo.ResourceServer.ClientInfo.ClientAllocation")
},
}; };
// Service descriptors // Service descriptors

View File

@ -35,12 +35,15 @@ extern const PRB_MSG_DESC prb_messages_nvdebug[];
#define NVDEBUG_SYSTEMINFO_CONFIG (&prb_messages_nvdebug[9]) #define NVDEBUG_SYSTEMINFO_CONFIG (&prb_messages_nvdebug[9])
#define NVDEBUG_SYSTEMINFO_ERRORSTATE (&prb_messages_nvdebug[10]) #define NVDEBUG_SYSTEMINFO_ERRORSTATE (&prb_messages_nvdebug[10])
#define NVDEBUG_SYSTEMINFO_TIMEINFO (&prb_messages_nvdebug[11]) #define NVDEBUG_SYSTEMINFO_TIMEINFO (&prb_messages_nvdebug[11])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER (&prb_messages_nvdebug[12])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO (&prb_messages_nvdebug[13])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION (&prb_messages_nvdebug[14])
// Message maximum lengths // Message maximum lengths
// Does not include repeated fields, strings and byte arrays. // Does not include repeated fields, strings and byte arrays.
#define NVDEBUG_SYSTEMINFO_LEN 275 #define NVDEBUG_SYSTEMINFO_LEN 354
#define NVDEBUG_GPUINFO_LEN 164 #define NVDEBUG_GPUINFO_LEN 262
#define NVDEBUG_NVDUMP_LEN 1308 #define NVDEBUG_NVDUMP_LEN 1570
#define NVDEBUG_SYSTEMINFO_NORTHBRIDGEINFO_LEN 12 #define NVDEBUG_SYSTEMINFO_NORTHBRIDGEINFO_LEN 12
#define NVDEBUG_SYSTEMINFO_SOCINFO_LEN 12 #define NVDEBUG_SYSTEMINFO_SOCINFO_LEN 12
#define NVDEBUG_SYSTEMINFO_CPUINFO_LEN 24 #define NVDEBUG_SYSTEMINFO_CPUINFO_LEN 24
@ -50,6 +53,9 @@ extern const PRB_MSG_DESC prb_messages_nvdebug[];
#define NVDEBUG_SYSTEMINFO_CONFIG_LEN 12 #define NVDEBUG_SYSTEMINFO_CONFIG_LEN 12
#define NVDEBUG_SYSTEMINFO_ERRORSTATE_LEN 14 #define NVDEBUG_SYSTEMINFO_ERRORSTATE_LEN 14
#define NVDEBUG_SYSTEMINFO_TIMEINFO_LEN 45 #define NVDEBUG_SYSTEMINFO_TIMEINFO_LEN 45
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_LEN 75
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_LEN 54
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_LEN 24
extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo[];
@ -66,6 +72,7 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo[];
#define NVDEBUG_SYSTEMINFO_TIME_SINCE_BOOT (&prb_fields_nvdebug_systeminfo[9]) #define NVDEBUG_SYSTEMINFO_TIME_SINCE_BOOT (&prb_fields_nvdebug_systeminfo[9])
#define NVDEBUG_SYSTEMINFO_TIME_INFO (&prb_fields_nvdebug_systeminfo[10]) #define NVDEBUG_SYSTEMINFO_TIME_INFO (&prb_fields_nvdebug_systeminfo[10])
#define NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT (&prb_fields_nvdebug_systeminfo[11]) #define NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT (&prb_fields_nvdebug_systeminfo[11])
#define NVDEBUG_SYSTEMINFO_RESSERV_INFO (&prb_fields_nvdebug_systeminfo[12])
// 'SystemInfo' field lengths // 'SystemInfo' field lengths
#define NVDEBUG_SYSTEMINFO_TIMESTAMP_LEN 10 #define NVDEBUG_SYSTEMINFO_TIMESTAMP_LEN 10
@ -80,6 +87,7 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo[];
#define NVDEBUG_SYSTEMINFO_TIME_SINCE_BOOT_LEN 5 #define NVDEBUG_SYSTEMINFO_TIME_SINCE_BOOT_LEN 5
#define NVDEBUG_SYSTEMINFO_TIME_INFO_LEN 48 #define NVDEBUG_SYSTEMINFO_TIME_INFO_LEN 48
#define NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT_LEN 5 #define NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT_LEN 5
#define NVDEBUG_SYSTEMINFO_RESSERV_INFO_LEN 78
extern const PRB_FIELD_DESC prb_fields_nvdebug_gpuinfo[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_gpuinfo[];
@ -87,11 +95,13 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_gpuinfo[];
#define NVDEBUG_GPUINFO_ENG_GPU (&prb_fields_nvdebug_gpuinfo[0]) #define NVDEBUG_GPUINFO_ENG_GPU (&prb_fields_nvdebug_gpuinfo[0])
#define NVDEBUG_GPUINFO_ENG_MC (&prb_fields_nvdebug_gpuinfo[1]) #define NVDEBUG_GPUINFO_ENG_MC (&prb_fields_nvdebug_gpuinfo[1])
#define NVDEBUG_GPUINFO_ENG_NVD (&prb_fields_nvdebug_gpuinfo[2]) #define NVDEBUG_GPUINFO_ENG_NVD (&prb_fields_nvdebug_gpuinfo[2])
#define NVDEBUG_GPUINFO_ENG_KGSP (&prb_fields_nvdebug_gpuinfo[3])
// 'GpuInfo' field lengths // 'GpuInfo' field lengths
#define NVDEBUG_GPUINFO_ENG_GPU_LEN 59 #define NVDEBUG_GPUINFO_ENG_GPU_LEN 65
#define NVDEBUG_GPUINFO_ENG_MC_LEN 69 #define NVDEBUG_GPUINFO_ENG_MC_LEN 69
#define NVDEBUG_GPUINFO_ENG_NVD_LEN 33 #define NVDEBUG_GPUINFO_ENG_NVD_LEN 33
#define NVDEBUG_GPUINFO_ENG_KGSP_LEN 91
extern const PRB_FIELD_DESC prb_fields_nvdebug_nvdump[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_nvdump[];
@ -103,11 +113,11 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_nvdump[];
#define NVDEBUG_NVDUMP_SYSTEM_INFO_GSPRM (&prb_fields_nvdebug_nvdump[4]) #define NVDEBUG_NVDUMP_SYSTEM_INFO_GSPRM (&prb_fields_nvdebug_nvdump[4])
// 'NvDump' field lengths // 'NvDump' field lengths
#define NVDEBUG_NVDUMP_SYSTEM_INFO_LEN 278 #define NVDEBUG_NVDUMP_SYSTEM_INFO_LEN 357
#define NVDEBUG_NVDUMP_DCL_MSG_LEN 570 #define NVDEBUG_NVDUMP_DCL_MSG_LEN 576
#define NVDEBUG_NVDUMP_GPU_INFO_LEN 167 #define NVDEBUG_NVDUMP_GPU_INFO_LEN 265
#define NVDEBUG_NVDUMP_EXCEPTION_ADDRESS_LEN 10 #define NVDEBUG_NVDUMP_EXCEPTION_ADDRESS_LEN 10
#define NVDEBUG_NVDUMP_SYSTEM_INFO_GSPRM_LEN 278 #define NVDEBUG_NVDUMP_SYSTEM_INFO_GSPRM_LEN 357
extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_northbridgeinfo[]; extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_northbridgeinfo[];
@ -243,6 +253,50 @@ extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_timeinfo[];
#define NVDEBUG_SYSTEMINFO_TIMEINFO_TIME_SINCE_BOOT_US_LEN 5 #define NVDEBUG_SYSTEMINFO_TIMEINFO_TIME_SINCE_BOOT_US_LEN 5
#define NVDEBUG_SYSTEMINFO_TIMEINFO_TIME_SINCE_BOOT_SEC_LEN 5 #define NVDEBUG_SYSTEMINFO_TIMEINFO_TIME_SINCE_BOOT_SEC_LEN 5
extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver[];
// 'ResourceServer' field descriptor pointers
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_CLIENTS (&prb_fields_nvdebug_systeminfo_resourceserver[0])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_RESOURCES (&prb_fields_nvdebug_systeminfo_resourceserver[1])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENT_INFO (&prb_fields_nvdebug_systeminfo_resourceserver[2])
// 'ResourceServer' field lengths
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_CLIENTS_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_RESOURCES_LEN 10
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENT_INFO_LEN 57
extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[];
// 'ClientInfo' field descriptor pointers
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENT_HANDLE (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[0])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_ID (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[1])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_NAME (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[2])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_FLAGS (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[3])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PRIV_LEVEL (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[4])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_ALLOCATIONS (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo[5])
// 'ClientInfo' field lengths
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENT_HANDLE_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_ID_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_NAME_LEN 1
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_FLAGS_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PRIV_LEVEL_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_ALLOCATIONS_LEN 27
extern const PRB_FIELD_DESC prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[];
// 'ClientAllocation' field descriptor pointers
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_HANDLE (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[0])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_CLASS_ID (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[1])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_PARENT_HANDLE (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[2])
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_GPU_INSTANCE (&prb_fields_nvdebug_systeminfo_resourceserver_clientinfo_clientallocation[3])
// 'ClientAllocation' field lengths
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_HANDLE_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_CLASS_ID_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_PARENT_HANDLE_LEN 5
#define NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_GPU_INSTANCE_LEN 5
extern const PRB_SERVICE_DESC prb_services_nvdebug[]; extern const PRB_SERVICE_DESC prb_services_nvdebug[];
// Service descriptor pointers // Service descriptor pointers

View File

@ -53,7 +53,7 @@ TYPEDEF_BITVECTOR(MC_ENGINE_BITVECTOR);
#define RPC_TIMEOUT_LIMIT_PRINT_RATE_THRESH 3 // rate limit after 3 prints #define RPC_TIMEOUT_LIMIT_PRINT_RATE_THRESH 3 // rate limit after 3 prints
#define RPC_TIMEOUT_LIMIT_PRINT_RATE_SKIP 29 // skip 29 of 30 prints #define RPC_TIMEOUT_LIMIT_PRINT_RATE_SKIP 29 // skip 29 of 30 prints
#define RPC_HISTORY_DEPTH 8 #define RPC_HISTORY_DEPTH 128
typedef struct RpcHistoryEntry typedef struct RpcHistoryEntry
{ {

View File

@ -628,7 +628,7 @@ rmGpuLockFree(NvU32 gpuInst)
// Disable GPUs Interrupts thus blocking the ISR from // Disable GPUs Interrupts thus blocking the ISR from
// entering. // entering.
// //
static void _gpuLocksAcquireDisableInterrupts(NvU32 gpuInst, NvBool bInIsr) static void _gpuLocksAcquireDisableInterrupts(NvU32 gpuInst, NvU32 flags)
{ {
OBJGPU *pGpu = gpumgrGetGpu(gpuInst); OBJGPU *pGpu = gpumgrGetGpu(gpuInst);
@ -653,6 +653,7 @@ static void _gpuLocksAcquireDisableInterrupts(NvU32 gpuInst, NvBool bInIsr)
if (osLockShouldToggleInterrupts(pGpu)) if (osLockShouldToggleInterrupts(pGpu))
{ {
Intr *pIntr = GPU_GET_INTR(pGpu); Intr *pIntr = GPU_GET_INTR(pGpu);
NvBool isIsr = !!(flags & GPU_LOCK_FLAGS_COND_ACQUIRE);
NvBool bBcEnabled = gpumgrGetBcEnabledStatus(pGpu); NvBool bBcEnabled = gpumgrGetBcEnabledStatus(pGpu);
// Always disable intrs for cond code // Always disable intrs for cond code
@ -666,10 +667,10 @@ static void _gpuLocksAcquireDisableInterrupts(NvU32 gpuInst, NvBool bInIsr)
tmrRmCallbackIntrDisable(pTmr, pGpu); tmrRmCallbackIntrDisable(pTmr, pGpu);
} }
osDisableInterrupts(pGpu, bInIsr); osDisableInterrupts(pGpu, isIsr);
if ((pIntr != NULL) && pIntr->getProperty(pIntr, PDB_PROP_INTR_USE_INTR_MASK_FOR_LOCKING) && if ((pIntr != NULL) && pIntr->getProperty(pIntr, PDB_PROP_INTR_USE_INTR_MASK_FOR_LOCKING) &&
(bInIsr == NV_FALSE) ) (isIsr == NV_FALSE) )
{ {
NvU64 oldIrql; NvU64 oldIrql;
NvU32 intrMaskFlags; NvU32 intrMaskFlags;
@ -714,7 +715,7 @@ _rmGpuLocksAcquire(NvU32 gpuMask, NvU32 flags, NvU32 module, void *ra, NvU32 *pG
NvU32 gpuMaskLocked = 0; NvU32 gpuMaskLocked = 0;
GPULOCK *pAllocLock = &rmGpuLockInfo.gpuAllocLock; GPULOCK *pAllocLock = &rmGpuLockInfo.gpuAllocLock;
GPULOCK *pGpuLock; GPULOCK *pGpuLock;
NvBool bHighIrql, bInIsr, bCondAcquireCheck; NvBool bHighIrql, bCondAcquireCheck;
NvU32 maxLockableGpuInst; NvU32 maxLockableGpuInst;
NvU64 threadId = portThreadGetCurrentThreadId(); NvU64 threadId = portThreadGetCurrentThreadId();
NvU64 priority = 0; NvU64 priority = 0;
@ -726,7 +727,6 @@ _rmGpuLocksAcquire(NvU32 gpuMask, NvU32 flags, NvU32 module, void *ra, NvU32 *pG
NvU32 loopCount; NvU32 loopCount;
bHighIrql = (portSyncExSafeToSleep() == NV_FALSE); bHighIrql = (portSyncExSafeToSleep() == NV_FALSE);
bInIsr = portUtilIsInterruptContext();
bCondAcquireCheck = ((flags & GPU_LOCK_FLAGS_COND_ACQUIRE) != 0); bCondAcquireCheck = ((flags & GPU_LOCK_FLAGS_COND_ACQUIRE) != 0);
if (pGpuLockedMask) if (pGpuLockedMask)
@ -1065,7 +1065,7 @@ per_gpu_lock_acquired:
if (gpuInst != GPU_INST_ALLOC_LOCK) if (gpuInst != GPU_INST_ALLOC_LOCK)
{ {
// now disable interrupts // now disable interrupts
_gpuLocksAcquireDisableInterrupts(gpuInst, bInIsr); _gpuLocksAcquireDisableInterrupts(gpuInst, flags);
// mark this one as locked // mark this one as locked
gpuMaskLocked |= NVBIT(gpuInst); gpuMaskLocked |= NVBIT(gpuInst);

View File

@ -1272,6 +1272,98 @@ _rcdbGetTimeInfo
return nvStatus; return nvStatus;
} }
static NV_STATUS
_rcdbGetResourceServerData
(
PRB_ENCODER *pPrbEnc,
NVD_STATE *pNvDumpState,
const PRB_FIELD_DESC *pFieldDesc
)
{
NV_STATUS nvStatus = NV_OK;
NvU8 startingDepth = prbEncNestingLevel(pPrbEnc);
NV_CHECK_OK_OR_RETURN(LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, pFieldDesc));
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_CLIENTS,
serverGetClientCount(&g_resServ));
prbEncAddUInt64(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_NUM_RESOURCES,
serverGetResourceCount(&g_resServ));
for (RmClient **ppClient = serverutilGetFirstClientUnderLock();
ppClient;
ppClient = serverutilGetNextClientUnderLock(ppClient))
{
if (*ppClient == NULL)
continue;
RmClient *pRmClient = *ppClient;
RsClient *pRsClient = staticCast(pRmClient, RsClient);
NV_CHECK_OK_OR_GOTO(nvStatus, LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENT_INFO),
out);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENT_HANDLE,
pRsClient->hClient);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_ID,
pRmClient->ProcID);
prbEncAddString(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PROCESS_NAME,
pRmClient->name);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_FLAGS,
pRmClient->Flags);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_PRIV_LEVEL,
(NvU32)pRmClient->cachedPrivilege);
RS_ITERATOR it = clientRefIter(pRsClient, 0, 0, RS_ITERATE_DESCENDANTS, NV_TRUE);
while (clientRefIterNext(it.pClient, &it))
{
if (it.pResourceRef == NULL || it.pResourceRef->pResource == NULL)
continue;
RsResource *pRes = it.pResourceRef->pResource;
RmResource *pRmRes = dynamicCast(pRes, RmResource);
NV_CHECK_OK_OR_GOTO(nvStatus, LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_ALLOCATIONS),
out);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_HANDLE,
it.pResourceRef->hResource);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_OBJECT_CLASS_ID,
it.pResourceRef->externalClassId);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_PARENT_HANDLE,
((it.pResourceRef->pParentRef != NULL) ? it.pResourceRef->pParentRef->hResource : 0));
prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_RESOURCESERVER_CLIENTINFO_CLIENTALLOCATION_GPU_INSTANCE,
((pRmRes != NULL) ? pRmRes->rpcGpuInstance : 0xFFFFFFFF));
prbEncNestedEnd(pPrbEnc);
}
prbEncNestedEnd(pPrbEnc);
}
prbEncNestedEnd(pPrbEnc);
out:
// Unwind the protobuf to the correct depth.
NV_CHECK_OK(nvStatus, LEVEL_ERROR,
prbEncUnwindNesting(pPrbEnc, startingDepth));
return nvStatus;
}
static const char * GPU_NA_UUID = "N/A"; static const char * GPU_NA_UUID = "N/A";
NV_STATUS NV_STATUS
@ -1318,6 +1410,10 @@ rcdbDumpSystemInfo_IMPL
_rcdbGetTimeInfo(pPrbEnc, pNvDumpState, NVDEBUG_SYSTEMINFO_TIME_INFO), _rcdbGetTimeInfo(pPrbEnc, pNvDumpState, NVDEBUG_SYSTEMINFO_TIME_INFO),
External_Cleanup); External_Cleanup);
NV_CHECK_OK_OR_GOTO(nvStatus, LEVEL_ERROR,
_rcdbGetResourceServerData(pPrbEnc, pNvDumpState, NVDEBUG_SYSTEMINFO_RESSERV_INFO),
External_Cleanup);
prbEncAddUInt32(pPrbEnc, prbEncAddUInt32(pPrbEnc,
NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT, NVDEBUG_SYSTEMINFO_BUGCHECK_COUNT,
pRcDB->BugcheckCount); pRcDB->BugcheckCount);

View File

@ -393,6 +393,7 @@ nvdDumpComponent_IMPL
case NVDUMP_COMPONENT_ENG_HDA: case NVDUMP_COMPONENT_ENG_HDA:
case NVDUMP_COMPONENT_ENG_MSENC: case NVDUMP_COMPONENT_ENG_MSENC:
case NVDUMP_COMPONENT_ENG_GSP: case NVDUMP_COMPONENT_ENG_GSP:
case NVDUMP_COMPONENT_ENG_KGSP:
{ {
status = nvdDoEngineDump(pGpu, status = nvdDoEngineDump(pGpu,
pNvd, pNvd,

View File

@ -88,6 +88,10 @@ _gpuDumpEngine_CommonFields
NVDEBUG_ENG_GPU_IS_ACCESSIBLE, NVDEBUG_ENG_GPU_IS_ACCESSIBLE,
pNvDumpState->bGpuAccessible); pNvDumpState->bGpuAccessible);
prbEncAddUInt32(pPrbEnc,
NVDEBUG_ENG_GPU_RUSD_MASK,
pGpu->userSharedData.lastPolledDataMask);
return rmStatus; return rmStatus;
} }
@ -136,7 +140,7 @@ gpuDumpCallbackRegister_IMPL
_gpuDumpEngineFunc, _gpuDumpEngineFunc,
NVDUMP_COMPONENT_ENG_GPU, NVDUMP_COMPONENT_ENG_GPU,
REF_DEF(NVD_ENGINE_FLAGS_PRIORITY, _MED) | REF_DEF(NVD_ENGINE_FLAGS_PRIORITY, _MED) |
REF_DEF(NVD_ENGINE_FLAGS_SOURCE, _GSP), REF_DEF(NVD_ENGINE_FLAGS_SOURCE, _BOTH),
(void *)pGpu); (void *)pGpu);
} }
} }

View File

@ -29,6 +29,7 @@
#include "kernel/core/locks.h" #include "kernel/core/locks.h"
#include "kernel/diagnostics/gpu_acct.h" #include "kernel/diagnostics/gpu_acct.h"
#include "kernel/diagnostics/journal.h" #include "kernel/diagnostics/journal.h"
#include "kernel/diagnostics/nv_debug_dump.h"
#include "kernel/gpu/fifo/kernel_channel.h" #include "kernel/gpu/fifo/kernel_channel.h"
#include "kernel/gpu/gsp/gsp_trace_rats_macro.h" #include "kernel/gpu/gsp/gsp_trace_rats_macro.h"
#include "kernel/gpu/intr/engine_idx.h" #include "kernel/gpu/intr/engine_idx.h"
@ -66,6 +67,8 @@
#include "core/locks.h" #include "core/locks.h"
#include "kernel/gpu/intr/intr.h" #include "kernel/gpu/intr/intr.h"
#include "kernel/gpu/gr/fecs_event_list.h" #include "kernel/gpu/gr/fecs_event_list.h"
#include "lib/protobuf/prb_util.h"
#include "g_nvdebug_pb.h"
#define RPC_STRUCTURES #define RPC_STRUCTURES
#define RPC_GENERIC_UNION #define RPC_GENERIC_UNION
@ -155,6 +158,8 @@ static NV_STATUS _kgspGetSectionNameForPrefix(OBJGPU *pGpu, KernelGsp *pKernelGs
static NV_STATUS _kgspRpcGspEventFecsError(OBJGPU *, OBJRPC *); static NV_STATUS _kgspRpcGspEventFecsError(OBJGPU *, OBJRPC *);
static void _kgspRpcGspEventHandleFecsBufferError(NvU32, void *); static void _kgspRpcGspEventHandleFecsBufferError(NvU32, void *);
static NV_STATUS _kgspDumpEngineFunc(OBJGPU*, PRB_ENCODER*, NVD_STATE*, void*);
static void static void
_kgspGetActiveRpcDebugData _kgspGetActiveRpcDebugData
( (
@ -320,13 +325,17 @@ _kgspCompleteRpcHistoryEntry
NvU32 historyIndex; NvU32 historyIndex;
NvU32 historyEntry; NvU32 historyEntry;
// Complete the current entry (it should be active)
// TODO: assert that ts_end == 0 here when continuation record timestamps are fixed
NV_ASSERT_OR_RETURN_VOID(pHistory[current].ts_start != 0);
pHistory[current].ts_end = osGetTimestamp(); pHistory[current].ts_end = osGetTimestamp();
// //
// Complete any previous entries that aren't marked complete yet, using the same timestamp // Complete any previous entries that aren't marked complete yet, using the same timestamp
// (we may not have explicitly waited for them) // (we may not have explicitly waited for them)
// //
for (historyIndex = 0; historyIndex < RPC_HISTORY_DEPTH; historyIndex++) for (historyIndex = 1; historyIndex < RPC_HISTORY_DEPTH; historyIndex++)
{ {
historyEntry = (current + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH; historyEntry = (current + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH;
if (pHistory[historyEntry].ts_start != 0 && if (pHistory[historyEntry].ts_start != 0 &&
@ -334,6 +343,10 @@ _kgspCompleteRpcHistoryEntry
{ {
pHistory[historyEntry].ts_end = pHistory[current].ts_end; pHistory[historyEntry].ts_end = pHistory[current].ts_end;
} }
else
{
break;
}
} }
} }
@ -1660,7 +1673,6 @@ _tsDiffToDuration
{ {
duration /= 1000; duration /= 1000;
*pDurationUnitsChar = 'm'; *pDurationUnitsChar = 'm';
}
// 9999ms then 10s // 9999ms then 10s
if (duration >= 10000) if (duration >= 10000)
@ -1668,6 +1680,7 @@ _tsDiffToDuration
duration /= 1000; duration /= 1000;
*pDurationUnitsChar = ' '; // so caller can always just append 's' *pDurationUnitsChar = ' '; // so caller can always just append 's'
} }
}
return duration; return duration;
} }
@ -1763,6 +1776,7 @@ kgspLogRpcDebugInfo
NvU32 historyIndex; NvU32 historyIndex;
NvU32 historyEntry; NvU32 historyEntry;
NvU64 activeData[2]; NvU64 activeData[2];
const NvU32 rpcEntriesToLog = (RPC_HISTORY_DEPTH > 8) ? 8 : RPC_HISTORY_DEPTH;
_kgspGetActiveRpcDebugData(pRpc, pMsgHdr->function, _kgspGetActiveRpcDebugData(pRpc, pMsgHdr->function,
&activeData[0], &activeData[1]); &activeData[0], &activeData[1]);
@ -1777,7 +1791,7 @@ kgspLogRpcDebugInfo
gpuGetInstance(pGpu)); gpuGetInstance(pGpu));
NV_ERROR_LOG_DATA(pGpu, errorNum, NV_ERROR_LOG_DATA(pGpu, errorNum,
" entry function data0 data1 ts_start ts_end duration actively_polling\n"); " entry function data0 data1 ts_start ts_end duration actively_polling\n");
for (historyIndex = 0; historyIndex < RPC_HISTORY_DEPTH; historyIndex++) for (historyIndex = 0; historyIndex < rpcEntriesToLog; historyIndex++)
{ {
historyEntry = (pRpc->rpcHistoryCurrent + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH; historyEntry = (pRpc->rpcHistoryCurrent + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH;
_kgspLogRpcHistoryEntry(pGpu, errorNum, historyIndex, &pRpc->rpcHistory[historyEntry], _kgspLogRpcHistoryEntry(pGpu, errorNum, historyIndex, &pRpc->rpcHistory[historyEntry],
@ -1789,7 +1803,7 @@ kgspLogRpcDebugInfo
gpuGetInstance(pGpu)); gpuGetInstance(pGpu));
NV_ERROR_LOG_DATA(pGpu, errorNum, NV_ERROR_LOG_DATA(pGpu, errorNum,
" entry function data0 data1 ts_start ts_end duration during_incomplete_rpc\n"); " entry function data0 data1 ts_start ts_end duration during_incomplete_rpc\n");
for (historyIndex = 0; historyIndex < RPC_HISTORY_DEPTH; historyIndex++) for (historyIndex = 0; historyIndex < rpcEntriesToLog; historyIndex++)
{ {
historyEntry = (pRpc->rpcEventHistoryCurrent + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH; historyEntry = (pRpc->rpcEventHistoryCurrent + RPC_HISTORY_DEPTH - historyIndex) % RPC_HISTORY_DEPTH;
_kgspLogRpcHistoryEntry(pGpu, errorNum, historyIndex, &pRpc->rpcEventHistory[historyEntry], _kgspLogRpcHistoryEntry(pGpu, errorNum, historyIndex, &pRpc->rpcEventHistory[historyEntry],
@ -2749,6 +2763,28 @@ done:
return nvStatus; return nvStatus;
} }
NV_STATUS kgspStateInitLocked_IMPL(OBJGPU *pGpu, KernelGsp *pKernelGsp)
{
NvDebugDump *pNvd = GPU_GET_NVD(pGpu);
if (pNvd != NULL)
{
//
// Register as PRIORITY_CRITICAL so it runs sooner and we get more of the
// useful RPC history and not too many DUMP_COMPONENT and similar RPCs
// invoked by other engines' dump functions
//
nvdEngineSignUp(pGpu,
pNvd,
_kgspDumpEngineFunc,
NVDUMP_COMPONENT_ENG_KGSP,
REF_DEF(NVD_ENGINE_FLAGS_PRIORITY, _CRITICAL) |
REF_DEF(NVD_ENGINE_FLAGS_SOURCE, _CPU),
(void *)pGpu);
}
return NV_OK;
}
/*! /*!
* Convert VBIOS version containing Version and OemVersion packed together to * Convert VBIOS version containing Version and OemVersion packed together to
* a string representation. * a string representation.
@ -4566,3 +4602,65 @@ NvU64 kgspGetWprEndMargin_IMPL(OBJGPU *pGpu, KernelGsp *pKernelGsp)
pWprMeta->flags &= ~GSP_FW_FLAGS_RECOVERY_MARGIN_PRESENT; pWprMeta->flags &= ~GSP_FW_FLAGS_RECOVERY_MARGIN_PRESENT;
return 0; return 0;
} }
static NV_STATUS _kgspDumpEngineFunc
(
OBJGPU *pGpu,
PRB_ENCODER *pPrbEnc,
NVD_STATE *pNvDumpState,
void *pvData
)
{
OBJRPC *pRpc = GPU_GET_RPC(pGpu);
NV_STATUS nvStatus = NV_OK;
NvU8 startingDepth = prbEncNestingLevel(pPrbEnc);
NV_CHECK_OK_OR_RETURN(LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, NVDEBUG_GPUINFO_ENG_KGSP));
for (NvU32 i = 0; i < RPC_HISTORY_DEPTH; i++)
{
NvU32 entryIdx = (pRpc->rpcHistoryCurrent + RPC_HISTORY_DEPTH - i) % RPC_HISTORY_DEPTH;
RpcHistoryEntry *entry = &pRpc->rpcHistory[entryIdx];
if (entry->function == 0)
break;
NV_CHECK_OK_OR_RETURN(LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, NVDEBUG_ENG_KGSP_RPC_HISTORY));
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_FUNCTION, entry->function);
prbEncAddUInt64(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_TS_START, entry->ts_start);
prbEncAddUInt64(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_TS_END, entry->ts_end);
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_DATA0, entry->data[0]);
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_DATA1, entry->data[1]);
prbEncNestedEnd(pPrbEnc);
}
for (NvU32 i = 0; i < RPC_HISTORY_DEPTH; i++)
{
NvU32 entryIdx = (pRpc->rpcEventHistoryCurrent + RPC_HISTORY_DEPTH - i) % RPC_HISTORY_DEPTH;
RpcHistoryEntry *entry = &pRpc->rpcEventHistory[entryIdx];
if (entry->function == 0)
break;
NV_CHECK_OK_OR_RETURN(LEVEL_ERROR,
prbEncNestedStart(pPrbEnc, NVDEBUG_ENG_KGSP_EVENT_HISTORY));
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_FUNCTION, entry->function);
prbEncAddUInt64(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_TS_START, entry->ts_start);
prbEncAddUInt64(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_TS_END, entry->ts_end);
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_DATA0, entry->data[0]);
prbEncAddUInt32(pPrbEnc, NVDEBUG_ENG_KGSP_RPCINFO_DATA1, entry->data[1]);
prbEncNestedEnd(pPrbEnc);
}
// Unwind the protobuf to the correct depth.
NV_CHECK_OK_OR_CAPTURE_FIRST_ERROR(nvStatus, LEVEL_ERROR,
prbEncUnwindNesting(pPrbEnc, startingDepth));
return nvStatus;
}

View File

@ -1,4 +1,4 @@
NVIDIA_VERSION = 555.52.04 NVIDIA_VERSION = 555.58
# This file. # This file.
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST)) VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))