From: Mario Limonciello <[email protected]>

commit 017fbb6690c22 ("drm/amdgpu/discovery: check ip_discovery fw file
available") added support for reading an amdgpu IP discovery bin file
for some specific products. If it's not found then it will fallback to
hardcoded values. However if it's not found there is also a lot of noise
about missing files and errors.

Adjust the error handling to decrease most messages to DEBUG and to show
users less about missing files.

Reported-by: Marcus Seyfarth <[email protected]>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4312
Tested-by: Marcus Seyfarth <[email protected]>
Fixes: 017fbb6690c22 ("drm/amdgpu/discovery: check ip_discovery fw file 
available")
Signed-off-by: Mario Limonciello <[email protected]>
---
v2:
 * Add tag
 * Push error message into default flow only
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 25 ++++++++-----------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index a0e9bf9b27108..a29bd807e59f8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -321,10 +321,9 @@ static int amdgpu_discovery_read_binary_from_file(struct 
amdgpu_device *adev,
        const struct firmware *fw;
        int r;
 
-       r = request_firmware(&fw, fw_name, adev->dev);
+       r = firmware_request_nowarn(&fw, fw_name, adev->dev);
        if (r) {
-               dev_err(adev->dev, "can't load firmware \"%s\"\n",
-                       fw_name);
+               drm_info(&adev->ddev, "Optional firmware \"%s\" was not 
found\n", fw_name);
                return r;
        }
 
@@ -459,16 +458,12 @@ static int amdgpu_discovery_init(struct amdgpu_device 
*adev)
        /* Read from file if it is the preferred option */
        fw_name = amdgpu_discovery_get_fw_name(adev);
        if (fw_name != NULL) {
-               dev_info(adev->dev, "use ip discovery information from file");
+               drm_dbg(&adev->ddev, "use ip discovery information from file");
                r = amdgpu_discovery_read_binary_from_file(adev, 
adev->mman.discovery_bin, fw_name);
-
-               if (r) {
-                       dev_err(adev->dev, "failed to read ip discovery binary 
from file\n");
-                       r = -EINVAL;
+               if (r)
                        goto out;
-               }
-
        } else {
+               drm_dbg(&adev->ddev, "use ip discovery information from 
memory");
                r = amdgpu_discovery_read_binary_from_mem(
                        adev, adev->mman.discovery_bin);
                if (r)
@@ -1338,10 +1333,8 @@ static int amdgpu_discovery_reg_base_init(struct 
amdgpu_device *adev)
        int r;
 
        r = amdgpu_discovery_init(adev);
-       if (r) {
-               DRM_ERROR("amdgpu_discovery_init failed\n");
+       if (r)
                return r;
-       }
 
        wafl_ver = 0;
        adev->gfx.xcc_mask = 0;
@@ -2579,8 +2572,10 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device 
*adev)
                break;
        default:
                r = amdgpu_discovery_reg_base_init(adev);
-               if (r)
-                       return -EINVAL;
+               if (r) {
+                       drm_err(&adev->ddev, "discovery failed: %d\n", r);
+                       return r;
+               }
 
                amdgpu_discovery_harvest_ip(adev);
                amdgpu_discovery_get_gfx_info(adev);
-- 
2.43.0

Reply via email to