summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
diff options
context:
space:
mode:
authorPrike Liang <Prike.Liang@amd.com>2024-12-02 14:13:02 +0800
committerAlex Deucher <alexander.deucher@amd.com>2024-12-10 10:26:50 -0500
commitd2382f29ce5467c4e5704eac1f55ad9d3f9ca970 (patch)
treeb9fbce85f79be43970f0321c3066053700ef9a6f /drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
parenta567db808ec9482d8b4ce5f9e5fcbc9e6c5a6da9 (diff)
downloadlinux-d2382f29ce5467c4e5704eac1f55ad9d3f9ca970.tar.gz
linux-d2382f29ce5467c4e5704eac1f55ad9d3f9ca970.tar.bz2
linux-d2382f29ce5467c4e5704eac1f55ad9d3f9ca970.zip
drm/amdgpu: Avoid to release the FW twice in the validated error
There will to release the FW twice when the FW validated error. Even if the release_firmware() will further validate the FW whether is empty, but that will be redundant and inefficient. Signed-off-by: Prike Liang <Prike.Liang@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
index 4c7b53648a50..d3cd76c6dab3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
@@ -1461,11 +1461,13 @@ int amdgpu_ucode_request(struct amdgpu_device *adev, const struct firmware **fw,
return -ENODEV;
r = amdgpu_ucode_validate(*fw);
- if (r) {
+ if (r)
+ /*
+ * The amdgpu_ucode_request() should be paired with amdgpu_ucode_release()
+ * regardless of success/failure, and the amdgpu_ucode_release() takes care of
+ * firmware release and need to avoid redundant release FW operation here.
+ */
dev_dbg(adev->dev, "\"%s\" failed to validate\n", fname);
- release_firmware(*fw);
- *fw = NULL;
- }
return r;
}