1 #ifndef _G_OBJGPUMON_NVOC_H_ 2 #define _G_OBJGPUMON_NVOC_H_ 3 #include "nvoc/runtime.h" 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* 10 * SPDX-FileCopyrightText: Copyright (c) 2014-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 11 * SPDX-License-Identifier: MIT 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a 14 * copy of this software and associated documentation files (the "Software"), 15 * to deal in the Software without restriction, including without limitation 16 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 * and/or sell copies of the Software, and to permit persons to whom the 18 * Software is furnished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included in 21 * all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 26 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 28 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 29 * DEALINGS IN THE SOFTWARE. 30 */ 31 32 #include "g_objgpumon_nvoc.h" 33 34 #ifndef _OBJGPUMON_H_ 35 #define _OBJGPUMON_H_ 36 37 /****************** Resource Manager Defines and Structures *****************\ 38 * * 39 * Defines and structures used for the Gpumon Object. * 40 * * 41 \****************************************************************************/ 42 43 #include "gpu/gpu.h" 44 #include "gpu/eng_state.h" 45 46 #include "ctrl/ctrl2080/ctrl2080perf.h" 47 48 typedef struct OBJGPUMON *POBJGPUMON; 49 50 #ifdef NVOC_OBJGPUMON_H_PRIVATE_ACCESS_ALLOWED 51 #define PRIVATE_FIELD(x) x 52 #else 53 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x) 54 #endif 55 struct OBJGPUMON { 56 const struct NVOC_RTTI *__nvoc_rtti; 57 struct OBJENGSTATE __nvoc_base_OBJENGSTATE; 58 struct Object *__nvoc_pbase_Object; 59 struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE; 60 struct OBJGPUMON *__nvoc_pbase_OBJGPUMON; 61 NV_STATUS (*__gpumonStateLoad__)(POBJGPU, struct OBJGPUMON *, NvU32); 62 NV_STATUS (*__gpumonStateUnload__)(POBJGPU, struct OBJGPUMON *, NvU32); 63 NV_STATUS (*__gpumonStateInitLocked__)(POBJGPU, struct OBJGPUMON *); 64 NV_STATUS (*__gpumonStatePreLoad__)(POBJGPU, struct OBJGPUMON *, NvU32); 65 NV_STATUS (*__gpumonStatePostUnload__)(POBJGPU, struct OBJGPUMON *, NvU32); 66 void (*__gpumonStateDestroy__)(POBJGPU, struct OBJGPUMON *); 67 NV_STATUS (*__gpumonStatePreUnload__)(POBJGPU, struct OBJGPUMON *, NvU32); 68 NV_STATUS (*__gpumonStateInitUnlocked__)(POBJGPU, struct OBJGPUMON *); 69 void (*__gpumonInitMissing__)(POBJGPU, struct OBJGPUMON *); 70 NV_STATUS (*__gpumonStatePreInitLocked__)(POBJGPU, struct OBJGPUMON *); 71 NV_STATUS (*__gpumonStatePreInitUnlocked__)(POBJGPU, struct OBJGPUMON *); 72 NV_STATUS (*__gpumonStatePostLoad__)(POBJGPU, struct OBJGPUMON *, NvU32); 73 NV_STATUS (*__gpumonConstructEngine__)(POBJGPU, struct OBJGPUMON *, ENGDESCRIPTOR); 74 NvBool (*__gpumonIsPresent__)(POBJGPU, struct OBJGPUMON *); 75 }; 76 77 #ifndef __NVOC_CLASS_OBJGPUMON_TYPEDEF__ 78 #define __NVOC_CLASS_OBJGPUMON_TYPEDEF__ 79 typedef struct OBJGPUMON OBJGPUMON; 80 #endif /* __NVOC_CLASS_OBJGPUMON_TYPEDEF__ */ 81 82 #ifndef __nvoc_class_id_OBJGPUMON 83 #define __nvoc_class_id_OBJGPUMON 0x2b424b 84 #endif /* __nvoc_class_id_OBJGPUMON */ 85 86 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJGPUMON; 87 88 #define __staticCast_OBJGPUMON(pThis) \ 89 ((pThis)->__nvoc_pbase_OBJGPUMON) 90 91 #ifdef __nvoc_objgpumon_h_disabled 92 #define __dynamicCast_OBJGPUMON(pThis) ((OBJGPUMON*)NULL) 93 #else //__nvoc_objgpumon_h_disabled 94 #define __dynamicCast_OBJGPUMON(pThis) \ 95 ((OBJGPUMON*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJGPUMON))) 96 #endif //__nvoc_objgpumon_h_disabled 97 98 #define PDB_PROP_GPUMON_IS_MISSING_BASE_CAST __nvoc_base_OBJENGSTATE. 99 #define PDB_PROP_GPUMON_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING 100 101 NV_STATUS __nvoc_objCreateDynamic_OBJGPUMON(OBJGPUMON**, Dynamic*, NvU32, va_list); 102 103 NV_STATUS __nvoc_objCreate_OBJGPUMON(OBJGPUMON**, Dynamic*, NvU32); 104 #define __objCreate_OBJGPUMON(ppNewObj, pParent, createFlags) \ 105 __nvoc_objCreate_OBJGPUMON((ppNewObj), staticCast((pParent), Dynamic), (createFlags)) 106 107 #define gpumonStateLoad(pGpu, pEngstate, arg0) gpumonStateLoad_DISPATCH(pGpu, pEngstate, arg0) 108 #define gpumonStateUnload(pGpu, pEngstate, arg0) gpumonStateUnload_DISPATCH(pGpu, pEngstate, arg0) 109 #define gpumonStateInitLocked(pGpu, pEngstate) gpumonStateInitLocked_DISPATCH(pGpu, pEngstate) 110 #define gpumonStatePreLoad(pGpu, pEngstate, arg0) gpumonStatePreLoad_DISPATCH(pGpu, pEngstate, arg0) 111 #define gpumonStatePostUnload(pGpu, pEngstate, arg0) gpumonStatePostUnload_DISPATCH(pGpu, pEngstate, arg0) 112 #define gpumonStateDestroy(pGpu, pEngstate) gpumonStateDestroy_DISPATCH(pGpu, pEngstate) 113 #define gpumonStatePreUnload(pGpu, pEngstate, arg0) gpumonStatePreUnload_DISPATCH(pGpu, pEngstate, arg0) 114 #define gpumonStateInitUnlocked(pGpu, pEngstate) gpumonStateInitUnlocked_DISPATCH(pGpu, pEngstate) 115 #define gpumonInitMissing(pGpu, pEngstate) gpumonInitMissing_DISPATCH(pGpu, pEngstate) 116 #define gpumonStatePreInitLocked(pGpu, pEngstate) gpumonStatePreInitLocked_DISPATCH(pGpu, pEngstate) 117 #define gpumonStatePreInitUnlocked(pGpu, pEngstate) gpumonStatePreInitUnlocked_DISPATCH(pGpu, pEngstate) 118 #define gpumonStatePostLoad(pGpu, pEngstate, arg0) gpumonStatePostLoad_DISPATCH(pGpu, pEngstate, arg0) 119 #define gpumonConstructEngine(pGpu, pEngstate, arg0) gpumonConstructEngine_DISPATCH(pGpu, pEngstate, arg0) 120 #define gpumonIsPresent(pGpu, pEngstate) gpumonIsPresent_DISPATCH(pGpu, pEngstate) 121 void gpumonGetContextProcessInfo_GM107(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, const char **arg3); 122 123 124 #ifdef __nvoc_objgpumon_h_disabled 125 static inline void gpumonGetContextProcessInfo(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, const char **arg3) { 126 NV_ASSERT_FAILED_PRECOMP("OBJGPUMON was disabled!"); 127 } 128 #else //__nvoc_objgpumon_h_disabled 129 #define gpumonGetContextProcessInfo(pGpu, pGpumon, arg0, arg1, arg2, arg3) gpumonGetContextProcessInfo_GM107(pGpu, pGpumon, arg0, arg1, arg2, arg3) 130 #endif //__nvoc_objgpumon_h_disabled 131 132 #define gpumonGetContextProcessInfo_HAL(pGpu, pGpumon, arg0, arg1, arg2, arg3) gpumonGetContextProcessInfo(pGpu, pGpumon, arg0, arg1, arg2, arg3) 133 134 static inline NV_STATUS gpumonStateLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 135 return pEngstate->__gpumonStateLoad__(pGpu, pEngstate, arg0); 136 } 137 138 static inline NV_STATUS gpumonStateUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 139 return pEngstate->__gpumonStateUnload__(pGpu, pEngstate, arg0); 140 } 141 142 static inline NV_STATUS gpumonStateInitLocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 143 return pEngstate->__gpumonStateInitLocked__(pGpu, pEngstate); 144 } 145 146 static inline NV_STATUS gpumonStatePreLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 147 return pEngstate->__gpumonStatePreLoad__(pGpu, pEngstate, arg0); 148 } 149 150 static inline NV_STATUS gpumonStatePostUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 151 return pEngstate->__gpumonStatePostUnload__(pGpu, pEngstate, arg0); 152 } 153 154 static inline void gpumonStateDestroy_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 155 pEngstate->__gpumonStateDestroy__(pGpu, pEngstate); 156 } 157 158 static inline NV_STATUS gpumonStatePreUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 159 return pEngstate->__gpumonStatePreUnload__(pGpu, pEngstate, arg0); 160 } 161 162 static inline NV_STATUS gpumonStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 163 return pEngstate->__gpumonStateInitUnlocked__(pGpu, pEngstate); 164 } 165 166 static inline void gpumonInitMissing_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 167 pEngstate->__gpumonInitMissing__(pGpu, pEngstate); 168 } 169 170 static inline NV_STATUS gpumonStatePreInitLocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 171 return pEngstate->__gpumonStatePreInitLocked__(pGpu, pEngstate); 172 } 173 174 static inline NV_STATUS gpumonStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 175 return pEngstate->__gpumonStatePreInitUnlocked__(pGpu, pEngstate); 176 } 177 178 static inline NV_STATUS gpumonStatePostLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) { 179 return pEngstate->__gpumonStatePostLoad__(pGpu, pEngstate, arg0); 180 } 181 182 static inline NV_STATUS gpumonConstructEngine_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, ENGDESCRIPTOR arg0) { 183 return pEngstate->__gpumonConstructEngine__(pGpu, pEngstate, arg0); 184 } 185 186 static inline NvBool gpumonIsPresent_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) { 187 return pEngstate->__gpumonIsPresent__(pGpu, pEngstate); 188 } 189 190 NV_STATUS gpumonGetPerfmonUtilSamples_IMPL(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NV2080_CTRL_PERF_GPUMON_PERFMON_UTIL_SAMPLE *arg0, NvU32 arg1, NvU32 *arg2); 191 192 #ifdef __nvoc_objgpumon_h_disabled 193 static inline NV_STATUS gpumonGetPerfmonUtilSamples(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NV2080_CTRL_PERF_GPUMON_PERFMON_UTIL_SAMPLE *arg0, NvU32 arg1, NvU32 *arg2) { 194 NV_ASSERT_FAILED_PRECOMP("OBJGPUMON was disabled!"); 195 return NV_ERR_NOT_SUPPORTED; 196 } 197 #else //__nvoc_objgpumon_h_disabled 198 #define gpumonGetPerfmonUtilSamples(pGpu, pGpumon, arg0, arg1, arg2) gpumonGetPerfmonUtilSamples_IMPL(pGpu, pGpumon, arg0, arg1, arg2) 199 #endif //__nvoc_objgpumon_h_disabled 200 201 #undef PRIVATE_FIELD 202 203 204 #endif //_OBJGPUMON_H_ 205 206 #ifdef __cplusplus 207 } // extern "C" 208 #endif 209 #endif // _G_OBJGPUMON_NVOC_H_ 210