1 /*
2 * SPDX-FileCopyrightText: Copyright (c) 2008-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 * SPDX-License-Identifier: MIT
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 */
23
24 #ifndef __vgpu_dev_nv_rpc_vgpu_h__
25 #define __vgpu_dev_nv_rpc_vgpu_h__
26
27
28 //******************************************************************************
29 //
30 // Declarations for the RPC VGPU module.
31 //
32 // Description:
33 // This module declares the RPC interface functions/macros for VGPU.
34 //
35 //******************************************************************************
36
NV_RM_RPC_ALLOC_LOCAL_USER(OBJGPU * pGpu,...)37 static NV_INLINE void NV_RM_RPC_ALLOC_LOCAL_USER(OBJGPU *pGpu, ...) { }
NV_RM_RPC_ALLOC_VIDMEM(OBJGPU * pGpu,...)38 static NV_INLINE void NV_RM_RPC_ALLOC_VIDMEM(OBJGPU *pGpu, ...) { }
NV_RM_RPC_ALLOC_VIRTMEM(OBJGPU * pGpu,...)39 static NV_INLINE void NV_RM_RPC_ALLOC_VIRTMEM(OBJGPU *pGpu, ...) { }
NV_RM_RPC_MAP_MEMORY(OBJGPU * pGpu,...)40 static NV_INLINE void NV_RM_RPC_MAP_MEMORY(OBJGPU *pGpu, ...) { }
NV_RM_RPC_UNMAP_MEMORY(OBJGPU * pGpu,...)41 static NV_INLINE void NV_RM_RPC_UNMAP_MEMORY(OBJGPU *pGpu, ...) { }
NV_RM_RPC_READ_EDID(OBJGPU * pGpu,...)42 static NV_INLINE void NV_RM_RPC_READ_EDID(OBJGPU *pGpu, ...) { }
NV_RM_RPC_DMA_FILL_PTE_MEM(OBJGPU * pGpu,...)43 static NV_INLINE void NV_RM_RPC_DMA_FILL_PTE_MEM(OBJGPU *pGpu, ...) { }
NV_RM_RPC_CREATE_FB_SEGMENT(OBJGPU * pGpu,...)44 static NV_INLINE void NV_RM_RPC_CREATE_FB_SEGMENT(OBJGPU *pGpu, ...) { }
NV_RM_RPC_DESTROY_FB_SEGMENT(OBJGPU * pGpu,...)45 static NV_INLINE void NV_RM_RPC_DESTROY_FB_SEGMENT(OBJGPU *pGpu, ...) { }
NV_RM_RPC_DEFERRED_API_CONTROL(OBJGPU * pGpu,...)46 static NV_INLINE void NV_RM_RPC_DEFERRED_API_CONTROL(OBJGPU *pGpu, ...) { }
NV_RM_RPC_REMOVE_DEFERRED_API(OBJGPU * pGpu,...)47 static NV_INLINE void NV_RM_RPC_REMOVE_DEFERRED_API(OBJGPU *pGpu, ...) { }
NV_RM_RPC_FREE_VIDMEM_VIRT(OBJGPU * pGpu,...)48 static NV_INLINE void NV_RM_RPC_FREE_VIDMEM_VIRT(OBJGPU *pGpu, ...) { }
NV_RM_RPC_MAP_SEMA_MEMORY(OBJGPU * pGpu,...)49 static NV_INLINE void NV_RM_RPC_MAP_SEMA_MEMORY(OBJGPU *pGpu, ...) { }
NV_RM_RPC_UNMAP_SEMA_MEMORY(OBJGPU * pGpu,...)50 static NV_INLINE void NV_RM_RPC_UNMAP_SEMA_MEMORY(OBJGPU *pGpu, ...) { }
NV_RM_RPC_TDR_SET_TIMEOUT_STATE(OBJGPU * pGpu,...)51 static NV_INLINE void NV_RM_RPC_TDR_SET_TIMEOUT_STATE(OBJGPU *pGpu, ...) { }
NV_RM_RPC_GET_CONSOLIDATED_STATIC_INFO(OBJGPU * pGpu,...)52 static NV_INLINE void NV_RM_RPC_GET_CONSOLIDATED_STATIC_INFO(OBJGPU *pGpu, ...) { }
NV_RM_RPC_GET_STATIC_PSTATE_INFO(OBJGPU * pGpu,...)53 static NV_INLINE void NV_RM_RPC_GET_STATIC_PSTATE_INFO(OBJGPU *pGpu, ...) { }
NV_RM_RPC_UPDATE_PDE_2(OBJGPU * pGpu,...)54 static NV_INLINE void NV_RM_RPC_UPDATE_PDE_2(OBJGPU *pGpu, ...) { }
NV_RM_RPC_TRANSLATE_GUEST_GPU_PTES(OBJGPU * pGpu,...)55 static NV_INLINE void NV_RM_RPC_TRANSLATE_GUEST_GPU_PTES(OBJGPU *pGpu, ...) { }
NV_RM_RPC_SET_SEMA_MEM_VALIDATION_STATE(OBJGPU * pGpu,...)56 static NV_INLINE void NV_RM_RPC_SET_SEMA_MEM_VALIDATION_STATE(OBJGPU *pGpu, ...) { }
NV_RM_RPC_RESET_CURRENT_GR_CONTEXT(OBJGPU * pGpu,...)57 static NV_INLINE void NV_RM_RPC_RESET_CURRENT_GR_CONTEXT(OBJGPU *pGpu, ...) { }
NV_RM_RPC_ALLOC_CONTEXT_DMA(OBJGPU * pGpu,...)58 static NV_INLINE void NV_RM_RPC_ALLOC_CONTEXT_DMA(OBJGPU *pGpu, ...) { }
NV_RM_RPC_GET_PLCABLE_ADDRESS_KIND(OBJGPU * pGpu,...)59 static NV_INLINE void NV_RM_RPC_GET_PLCABLE_ADDRESS_KIND(OBJGPU *pGpu, ...) { }
NV_RM_RPC_UPDATE_GPU_PDES(OBJGPU * pGpu,...)60 static NV_INLINE void NV_RM_RPC_UPDATE_GPU_PDES(OBJGPU *pGpu, ...) { }
61
62 /*
63 * LOG RPC. This message produces a log line in the display plugin's log
64 * XXX: make this accept variable parameters like printf
65 */
66 #define NV_RM_RPC_LOG(pgpu, logstr, loglevel) \
67 do \
68 { \
69 OBJRPC *pRpc = GPU_GET_RPC(pgpu); \
70 if (pRpc != NULL) \
71 rpcLog_HAL(pgpu, pRpc, logstr, loglevel); \
72 } while(0)
73
74 #define NV_RM_RPC_SET_GUEST_SYSTEM_INFO_EXT(pGpu, status) \
75 do \
76 { \
77 /* VGPU only */ \
78 OBJRPC *pRpc = GPU_GET_VGPU_RPC(pGpu); \
79 if ((status == NV_OK) && (pRpc != NULL)) \
80 status = rpcSetGuestSystemInfoExt_HAL(pGpu,pRpc); \
81 } while(0)
82
83 #define NV_RM_RPC_SET_SURFACE_PROPERTIES(pGpu, hClient, pParams, bSkipCompare, status) \
84 do \
85 { \
86 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
87 if ((status == NV_OK) && (pRpc != NULL)) \
88 status = rpcSetSurfaceProperties_HAL(pGpu, pRpc, hClient, pParams, bSkipCompare); \
89 } while (0)
90
91 #define NV_RM_RPC_CLEANUP_SURFACE(pGpu, pParams, status) \
92 do \
93 { \
94 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
95 if ((status == NV_OK) && (pRpc != NULL)) \
96 status = rpcCleanupSurface_HAL(pGpu, pRpc, pParams); \
97 } while (0)
98
99 #define NV_RM_RPC_SWITCH_TO_VGA(pGpu, status) \
100 do \
101 { \
102 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
103 if ((status == NV_OK) && (pRpc != NULL)) \
104 status = rpcSwitchToVga_HAL(pGpu, pRpc); \
105 } while (0)
106
107 #define NV_RM_RPC_GET_STATIC_DATA(pGpu, status) \
108 do \
109 { \
110 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
111 if ((status == NV_OK) && (pRpc != NULL)) \
112 status = rpcGetStaticData_HAL(pGpu, pRpc); \
113 } while (0)
114
115 #define NV_RM_RPC_GET_CONSOLIDATED_GR_STATIC_INFO(pGpu, status) \
116 do \
117 { \
118 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
119 if ((status == NV_OK) && (pRpc != NULL)) \
120 status = rpcGetConsolidatedGrStaticInfo_HAL(pGpu, pRpc); \
121 } while (0)
122
123 #define NV_RM_RPC_GET_ENCODER_CAPACITY(pGpu, hClient, hObject, encoderCapacity, status) \
124 do \
125 { \
126 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
127 if ((status == NV_OK) && (pRpc != NULL)) \
128 status = rpcGetEncoderCapacity_HAL(pGpu, pRpc, hClient, hObject, encoderCapacity); \
129 } while(0)
130
131 #define NV_RM_RPC_DISABLE_CHANNELS(pGpu, bDisable, status) \
132 do \
133 { \
134 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
135 if ((status == NV_OK) && (pRpc != NULL)) \
136 status = rpcDisableChannels_HAL(pGpu, pRpc, bDisable); \
137 } while(0)
138
139 #define NV_RM_RPC_SAVE_HIBERNATION_DATA(pGpu, status) \
140 do \
141 { \
142 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
143 if ((status == NV_OK) && (pRpc != NULL)) \
144 status = rpcSaveHibernationData_HAL(pGpu, pRpc); \
145 } while(0)
146
147 #define NV_RM_RPC_RESTORE_HIBERNATION_DATA(pGpu, status) \
148 do \
149 { \
150 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
151 if ((status == NV_OK) && (pRpc != NULL)) \
152 status = rpcRestoreHibernationData_HAL(pGpu, pRpc); \
153 } while(0)
154
155 #define NV_RM_RPC_PERF_GET_LEVEL_INFO(pGpu, hClient, hObject, pParams, pPerfClkInfos, status) \
156 do \
157 { \
158 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
159 NV_ASSERT(pRpc != NULL); \
160 if ((status == NV_OK) && (pRpc != NULL)) \
161 status = rpcPerfGetLevelInfo_HAL(pGpu, pRpc, hClient, hObject, pParams, pPerfClkInfos); \
162 else if (pRpc == NULL) \
163 status = NV_ERR_INSUFFICIENT_RESOURCES; \
164 } while(0)
165
166 #define NV_RM_RPC_GET_ENGINE_UTILIZATION(pGpu, hClient, hObject, cmd, pParamStructPtr, paramSize, status) \
167 do { \
168 OBJRPC *pRpc = GPU_GET_RPC(pGpu); \
169 if ((status == NV_OK) && (pRpc != NULL)) \
170 status = rpcGetEngineUtilizationWrapper_HAL(pGpu, pRpc, hClient, hObject, cmd, \
171 pParamStructPtr, paramSize); \
172 } while(0) \
173
174 #endif // __vgpu_dev_nv_rpc_vgpu_h__
175