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