[bug report] drm/amdgpu: Add support for CIK parts
Dan Carpenter
dan.carpenter at oracle.com
Thu Jan 26 06:42:38 UTC 2017
This one still needs to be fixed as well.
regards,
dan carpenter
On Tue, Dec 13, 2016 at 01:34:17PM +0300, Dan Carpenter wrote:
> Hello Alex Deucher,
>
> The patch a2e73f56fa62: "drm/amdgpu: Add support for CIK parts" from
> Apr 20, 2015, leads to the following static checker warning:
>
> drivers/gpu/drm/amd/amdgpu/ci_dpm.c:6293 ci_dpm_sw_init()
> warn: 'adev->pm.dpm.dyn_state.vddc_dependency_on_dispclk.entries' double freed
>
> drivers/gpu/drm/amd/amdgpu/ci_dpm.c:6293 ci_dpm_sw_init()
> warn: 'adev->pm.dpm.ps' double freed
>
> drivers/gpu/drm/amd/amdgpu/ci_dpm.c
> 6274
> 6275 ret = ci_dpm_init_microcode(adev);
> 6276 if (ret)
> 6277 return ret;
> 6278
> 6279 INIT_WORK(&adev->pm.dpm.thermal.work, amdgpu_dpm_thermal_work_handler);
> 6280 mutex_lock(&adev->pm.mutex);
> 6281 ret = ci_dpm_init(adev);
>
> ci_dpm_init() has built-in calls to ci_dpm_fini().
>
> 6282 if (ret)
> 6283 goto dpm_failed;
> 6284 adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps;
> 6285 if (amdgpu_dpm == 1)
> 6286 amdgpu_pm_print_power_states(adev);
> 6287 mutex_unlock(&adev->pm.mutex);
> 6288 DRM_INFO("amdgpu: dpm initialized\n");
> 6289
> 6290 return 0;
> 6291
> 6292 dpm_failed:
> 6293 ci_dpm_fini(adev);
>
> Then we call it again here. This style of error handling is a layering
> violation and people think it makes the code so much simpler but it
> really doesn't at all... :/ Just have every function unwind it's own
> allocations, doing it that way basically writes a mirroring de-allocate
> function for every allocator for no effort.
>
> 6294 mutex_unlock(&adev->pm.mutex);
> 6295 DRM_ERROR("amdgpu: dpm initialization failed\n");
> 6296 return ret;
> 6297 }
>
> regards,
> dan carpenter
More information about the dri-devel
mailing list