[PATCH v2] drm/amd: Adjust output for discovery error handling

Alex Deucher alexdeucher at gmail.com
Tue Jun 17 19:54:26 UTC 2025


On Tue, Jun 17, 2025 at 2:31 PM Mario Limonciello <superm1 at kernel.org> wrote:
>
> From: Mario Limonciello <mario.limonciello at amd.com>
>
> 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 <m.seyfarth at gmail.com>
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4312
> Tested-by: Marcus Seyfarth <m.seyfarth at gmail.com>
> Fixes: 017fbb6690c22 ("drm/amdgpu/discovery: check ip_discovery fw file available")
> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
> 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
>


More information about the amd-gfx mailing list