[Nouveau] [bug report] drm/nouveau/gsp/r535: add support for booting GSP-RM
Danilo Krummrich
me at dakr.org
Tue Nov 7 19:06:25 UTC 2023
On 11/7/23 20:00, Danilo Krummrich wrote:
> On 11/7/23 15:34, Dan Carpenter wrote:
>> Hello Ben Skeggs,
>>
>> The patch 176fdcbddfd2: "drm/nouveau/gsp/r535: add support for
>> booting GSP-RM" from Sep 19, 2023 (linux-next), leads to the
>> following Smatch static checker warning:
>>
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1016 r535_gsp_rpc_unloading_guest_driver()
>> warn: 'rpc' isn't an ERR_PTR
>>
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
>> 1010 static int
>> 1011 r535_gsp_rpc_unloading_guest_driver(struct nvkm_gsp *gsp, bool suspend)
>> 1012 {
>> 1013 rpc_unloading_guest_driver_v1F_07 *rpc;
>> 1014
>> 1015 rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_UNLOADING_GUEST_DRIVER, sizeof(*rpc));
>>
>> nvkm_gsp_rpc_get() returns NULL on error.
>
> There are also code paths where it can return an ERR_PTR. I think we need to check for IS_ERR_OR_NULL()...
Sorry, this is wrong, I just saw that r535_gsp_cmdq_get() calls r535_gsp_cmdq_get()
which returns an ERR_PTR. Put it neither handles the return value of
r535_gsp_cmdq_get() as ERR_PTR nor does it pass it through.
>
>>
>> --> 1016 if (IS_ERR(rpc))
>> 1017 return PTR_ERR(rpc);
>> 1018
>> 1019 if (suspend) {
>> 1020 rpc->bInPMTransition = 1;
>> 1021 rpc->bGc6Entering = 0;
>> 1022 rpc->newLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3;
>> 1023 } else {
>> 1024 rpc->bInPMTransition = 0;
>> 1025 rpc->bGc6Entering = 0;
>> 1026 rpc->newLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_0;
>> 1027 }
>> 1028
>> 1029 return nvkm_gsp_rpc_wr(gsp, rpc, true);
>> 1030 }
>>
>> regards,
>> dan carpenter
More information about the Nouveau
mailing list