lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 17 Apr 2018 12:41:48 -0400
From:   Andres Rodriguez <andresx7@...il.com>
To:     Christian König <christian.koenig@....com>,
        linux-kernel@...r.kernel.org
Cc:     andresx7@...il.com, gregkh@...uxfoundation.org, mcgrof@...nel.org,
        alexdeucher@...il.com, kvalo@...eaurora.org,
        arend.vanspriel@...adcom.com
Subject: Re: [PATCH 6/8] drm/amdgpu: use firmware_request_nowarn to load
 firmware



On 2018-04-17 11:52 AM, Christian König wrote:
> Am 17.04.2018 um 17:41 schrieb Andres Rodriguez:
>>
>>
>> On 2018-04-17 11:33 AM, Christian König wrote:
>>> Am 17.04.2018 um 17:07 schrieb Andres Rodriguez:
>>>>
>>>>
>>>> On 2018-04-17 04:48 AM, Christian König wrote:
>>>>> Well this is a rather big NAK for this patch.
>>>>>
>>>>> Only a small fraction of the firmware files amdgpu uses are 
>>>>> actually optional (the ones with the *_2.bin name). All other files 
>>>>> are mandatory for correct driver operation.
>>>>>
>>>>> There is a fallback when actually no firmware files at all are 
>>>>> found, in this case we at least try to get a picture on the screen 
>>>>> so that the user gets a hint on what is wrong. But this path isn't 
>>>>> tested well and breaks from time to time.
>>>>>
>>>>> So when you get a message like "Direct firmware load for * failed 
>>>>> with error -2" even if it's one of the "*_2.bin" files that is a 
>>>>> clear hint that you should update your firmware package.
>>>>
>>>> The amdgpu driver already provides clear messages when a required 
>>>> firmware file is not found. After request_firmware() returns an 
>>>> error, we will print:
>>>> "{ip_name}: Failed to load firmware {fw_name}"
>>>>
>>>> When the firmware is optional, we won't print that message, and 
>>>> handle the firmware load in an appropriate way (re-use _1 firmware 
>>>> for_2 etc.)
>>>>
>>>> Note that we care about informing the user *only* if the firmware 
>>>> was not found. If the firmware ends up coming from the fallback 
>>>> loader, but we do receive it, then we don't really care.
>>>
>>> And that is exactly what I disagree on. Even when we used the 
>>> fallback there should definitely be an error message that the real 
>>> firmware wasn't found
>>
>> The request_firmware() fallback does fetch the real firmware. Why 
>> should a user configuration knob produce an error message if the 
>> behaviour is valid?
> 
> Because the behavior isn't valid.
> 
> We ran the fallback path which is not optimal and the user should 
> consider installing the missing firmware. There definitely should be a 
> message about that.

I think I misused the word fallback and that has led to some confusion, 
sorry about that. There is the fallback path inside request_firmware() 
(formerly known as the usermode helper), and there is the fallback path 
in amdgpu.

The first, if request_firmware() can't find built-in firmware it can 
query the usermodehelper for the file and retrieve it. This will result 
in the real firmware file being retrieved and optimal behaviour from the 
amdgpu side. In this case request_firmware() returns success.

The second, if request_firmware() completely fails, we will try some 
strategies like loading the firmware of the primary engine into the 
secondary engine. Or disabling the engine, etc. This leads to less than 
optimal behaviour in some cases, and we should warn the user 
appropriately. We do produce errors where appropriate in this scenario 
inside amdgpu.

Maybe I'm going a bit overzealous here trying two kill two birds with 
one stone. There are two cases that I wanted to improve on the amdgpu side:

First case, Usermodehelper: disabled - Firmware: not found, but optional
------------------------------------------------------------------------

This was my main motivation for writing these changes. In this scenario 
we would get the "Direct firmware load failed with error..." message. 
And then the driver would self correct and load correctly.

For some combinations of ASICs + fw files this is expected behaviour, 
e.g. mec_2.bin on polaris10. And having that error message in the kernel 
log would lead users to think there is something wrong with their 
firmware install, when in reality everything is ok.

Second case, Usermodehelper: enabled - Firmware: found
------------------------------------------------------

This is where I might be overextending myself, but I think we do have an 
opportunity for a big improvement.

In this scenario we will produce the output:
"Direct firmware load for * failed with error -2"
"Falling back to user helper"

I don't think those messages are particularly useful in the amdgpu case. 
If the user configured their system to use the usermodehelper, why 
should we be producing two*n_firmware_files lines of spew for regular 
operation? That is a lot of message flooding, and I don't see the purpose.

If the intent of the message is to help the user know that they need to 
install/update their linux-firmware package, then we have the error message:
"{ip_name}: Failed to load firmware {fw_name}"

And that should point the user in the proper direction to fix their issue.

Regards,
Andres


> 
> I agree that it's also a good idea to note that we hit the fallback and 
> not only that the firmware was missing, but that is a different issue.
> 
> Additional to that it isn't the job of the driver to print messages 
> about missing firmware, so the extra message about that should be removed.
> 

> Regards,
> Christian.
> 
>>
>> Regards,
>> Andres
>>
>>
>>>
>>> We should probably add a message that the fallback is used and remove 
>>> the error message that the firmware couldn't be loaded.
>>>
>>> Regards,
>>> Christian.
>>>
>>>>
>>>> This is specially important since we don't print a success message 
>>>> on firmware load. So if we hit the fallback loader, the user will 
>>>> see a warning followed by silence, so it could cause confusion on 
>>>> whether the firmware load succeed or not.
>>>>
>>>> These are my 2c in the matter.
>>>>
>>>> Regards,
>>>> Andres
>>>>
>>>>
>>>>>
>>>>> Regards,
>>>>> Christian.
>>>>>
>>>>> Am 17.04.2018 um 00:24 schrieb Andres Rodriguez:
>>>>>> Currently, during the normal boot process the amdgpu driver will 
>>>>>> produce
>>>>>> spew like the following in dmesg:
>>>>>> Direct firmware load for amdgpu/polaris10_mec_2.bin failed with 
>>>>>> error -2
>>>>>>
>>>>>> This happens when amdgpu tries to load optional firmware files. So 
>>>>>> the
>>>>>> error does not affect the startup sequence.
>>>>>>
>>>>>> This patch switches the amdgpu to use firmware_request_nowarn(), 
>>>>>> which
>>>>>> will not produce the warnings mentioned above. Hopefully resulting 
>>>>>> in a
>>>>>> cleaner bootup log.
>>>>>>
>>>>>> Signed-off-by: Andres Rodriguez <andresx7@...il.com>
>>>>>> ---
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c    |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  4 ++--
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h  |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c    |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c    |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c    |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/ci_dpm.c        |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/cik_sdma.c      |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c      |  8 ++++----
>>>>>>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      | 12 +++++------
>>>>>>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      | 32 
>>>>>> +++++++++++++++---------------
>>>>>>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +++++------
>>>>>>   drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c      |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c      |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c      |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/psp_v10_0.c     |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/psp_v3_1.c      |  4 ++--
>>>>>>   drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c     |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c     |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c     |  2 +-
>>>>>>   drivers/gpu/drm/amd/amdgpu/si_dpm.c        |  2 +-
>>>>>>   21 files changed, 51 insertions(+), 51 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>>>>> index 4466f3535e2d..6c950811c0a5 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
>>>>>> @@ -811,7 +811,7 @@ static int amdgpu_cgs_get_firmware_info(struct 
>>>>>> cgs_device *cgs_device,
>>>>>>                   return -EINVAL;
>>>>>>               }
>>>>>> -            err = request_firmware(&adev->pm.fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->pm.fw, fw_name, 
>>>>>> adev->dev);
>>>>>>               if (err) {
>>>>>>                   DRM_ERROR("Failed to request firmware\n");
>>>>>>                   return err;
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>>> index af1b879a9ee9..d6225619e69f 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>>>>> @@ -696,7 +696,7 @@ bool amdgpu_device_need_post(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           if (adev->asic_type == CHIP_FIJI) {
>>>>>>               int err;
>>>>>>               uint32_t fw_ver;
>>>>>> -            err = request_firmware(&adev->pm.fw, 
>>>>>> "amdgpu/fiji_smc.bin", adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->pm.fw, 
>>>>>> "amdgpu/fiji_smc.bin", adev->dev);
>>>>>>               /* force vPost if error occured */
>>>>>>               if (err)
>>>>>>                   return true;
>>>>>> @@ -1133,7 +1133,7 @@ static int 
>>>>>> amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_gpu_info.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->firmware.gpu_info_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->firmware.gpu_info_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>       if (err) {
>>>>>>           dev_err(adev->dev,
>>>>>>               "Failed to load gpu_info firmware \"%s\"\n",
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
>>>>>> index 30b5500dc152..0acd1f3d14c8 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
>>>>>> @@ -196,7 +196,7 @@ enum AMDGPU_UCODE_STATUS {
>>>>>>   struct amdgpu_firmware_info {
>>>>>>       /* ucode ID */
>>>>>>       enum AMDGPU_UCODE_ID ucode_id;
>>>>>> -    /* request_firmware */
>>>>>> +    /* firmware_request */
>>>>>>       const struct firmware *fw;
>>>>>>       /* starting mc address */
>>>>>>       uint64_t mc_addr;
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
>>>>>> index b2eae86bf906..4de018d45081 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
>>>>>> @@ -171,7 +171,7 @@ int amdgpu_uvd_sw_init(struct amdgpu_device 
>>>>>> *adev)
>>>>>>           return -EINVAL;
>>>>>>       }
>>>>>> -    r = request_firmware(&adev->uvd.fw, fw_name, adev->dev);
>>>>>> +    r = firmware_request_nowarn(&adev->uvd.fw, fw_name, adev->dev);
>>>>>>       if (r) {
>>>>>>           dev_err(adev->dev, "amdgpu_uvd: Can't load firmware 
>>>>>> \"%s\"\n",
>>>>>>               fw_name);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>>>>>> index d274ae535530..b6af824a2f44 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>>>>>> @@ -138,7 +138,7 @@ int amdgpu_vce_sw_init(struct amdgpu_device 
>>>>>> *adev, unsigned long size)
>>>>>>           return -EINVAL;
>>>>>>       }
>>>>>> -    r = request_firmware(&adev->vce.fw, fw_name, adev->dev);
>>>>>> +    r = firmware_request_nowarn(&adev->vce.fw, fw_name, adev->dev);
>>>>>>       if (r) {
>>>>>>           dev_err(adev->dev, "amdgpu_vce: Can't load firmware 
>>>>>> \"%s\"\n",
>>>>>>               fw_name);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>>> index 837962118dbc..bd650b87e281 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>>> @@ -67,7 +67,7 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
>>>>>>           return -EINVAL;
>>>>>>       }
>>>>>> -    r = request_firmware(&adev->vcn.fw, fw_name, adev->dev);
>>>>>> +    r = firmware_request_nowarn(&adev->vcn.fw, fw_name, adev->dev);
>>>>>>       if (r) {
>>>>>>           dev_err(adev->dev, "amdgpu_vcn: Can't load firmware 
>>>>>> \"%s\"\n",
>>>>>>               fw_name);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
>>>>>> index a0943aa8d1d3..95e1edc1311d 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
>>>>>> @@ -5849,7 +5849,7 @@ static int ci_dpm_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->pm.fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->pm.fw, fw_name, adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->pm.fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
>>>>>> index 6e8278e689b1..93c8acca0360 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
>>>>>> @@ -135,7 +135,7 @@ static int cik_sdma_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "radeon/%s_sdma.bin", chip_name);
>>>>>>           else
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "radeon/%s_sdma1.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           if (err)
>>>>>>               goto out;
>>>>>>           err = amdgpu_ucode_validate(adev->sdma.instance[i].fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
>>>>>> index 9870d83b68c1..8aebab5edf15 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
>>>>>> @@ -335,7 +335,7 @@ static int gfx_v6_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.pfp_fw);
>>>>>> @@ -346,7 +346,7 @@ static int gfx_v6_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.pfp_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.me_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.me_fw);
>>>>>> @@ -357,7 +357,7 @@ static int gfx_v6_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.me_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.ce_fw);
>>>>>> @@ -368,7 +368,7 @@ static int gfx_v6_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.ce_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.rlc_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>>>>> index a066c5eda135..35a0e46464a5 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>>>>> @@ -926,7 +926,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.pfp_fw);
>>>>>> @@ -934,7 +934,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           goto out;
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.me_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.me_fw);
>>>>>> @@ -942,7 +942,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           goto out;
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.ce_fw);
>>>>>> @@ -950,7 +950,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           goto out;
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.mec_fw);
>>>>>> @@ -959,7 +959,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       if (adev->asic_type == CHIP_KAVERI) {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec2.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.mec2_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.mec2_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           if (err)
>>>>>>               goto out;
>>>>>>           err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
>>>>>> @@ -968,7 +968,7 @@ static int gfx_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.rlc_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>>>>> index 4e694ae9f308..c16cd96a1557 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>>>>> @@ -936,14 +936,14 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       if (adev->asic_type >= CHIP_POLARIS10 && adev->asic_type <= 
>>>>>> CHIP_POLARIS12) {
>>>>>>           snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_pfp_2.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>           if (err == -ENOENT) {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_pfp.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.pfp_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           }
>>>>>>       } else {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       }
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> @@ -956,14 +956,14 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       if (adev->asic_type >= CHIP_POLARIS10 && adev->asic_type <= 
>>>>>> CHIP_POLARIS12) {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me_2.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>           if (err == -ENOENT) {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_me.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.me_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           }
>>>>>>       } else {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       }
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> @@ -977,14 +977,14 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       if (adev->asic_type >= CHIP_POLARIS10 && adev->asic_type <= 
>>>>>> CHIP_POLARIS12) {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce_2.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>           if (err == -ENOENT) {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_ce.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.ce_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           }
>>>>>>       } else {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       }
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> @@ -1007,7 +1007,7 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           adev->virt.chained_ib_support = false;
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.rlc_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
>>>>>> @@ -1057,14 +1057,14 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       if (adev->asic_type >= CHIP_POLARIS10 && adev->asic_type <= 
>>>>>> CHIP_POLARIS12) {
>>>>>>           snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_mec_2.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>           if (err == -ENOENT) {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_mec.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.mec_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           }
>>>>>>       } else {
>>>>>>           snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", 
>>>>>> chip_name);
>>>>>> -        err = request_firmware(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       }
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> @@ -1079,14 +1079,14 @@ static int gfx_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           (adev->asic_type != CHIP_TOPAZ)) {
>>>>>>           if (adev->asic_type >= CHIP_POLARIS10 && adev->asic_type 
>>>>>> <= CHIP_POLARIS12) {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_mec2_2.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.mec2_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.mec2_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>               if (err == -ENOENT) {
>>>>>>                   snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_mec2.bin", chip_name);
>>>>>> -                err = request_firmware(&adev->gfx.mec2_fw, 
>>>>>> fw_name, adev->dev);
>>>>>> +                err = firmware_request_nowarn(&adev->gfx.mec2_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>               }
>>>>>>           } else {
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_mec2.bin", chip_name);
>>>>>> -            err = request_firmware(&adev->gfx.mec2_fw, fw_name, 
>>>>>> adev->dev);
>>>>>> +            err = firmware_request_nowarn(&adev->gfx.mec2_fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           }
>>>>>>           if (!err) {
>>>>>>               err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>>>>> index c06479615e8a..9f70012c81ad 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>>>>> @@ -370,7 +370,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.pfp_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.pfp_fw);
>>>>>> @@ -381,7 +381,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.pfp_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.me_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.me_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.me_fw);
>>>>>> @@ -392,7 +392,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.me_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.ce_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.ce_fw);
>>>>>> @@ -403,7 +403,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       adev->gfx.ce_feature_version = 
>>>>>> le32_to_cpu(cp_hdr->ucode_feature_version);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.rlc_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.rlc_fw);
>>>>>> @@ -449,7 +449,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           adev->gfx.rlc.register_restore[i] = le32_to_cpu(tmp[i]);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.mec_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->gfx.mec_fw);
>>>>>> @@ -461,7 +461,7 @@ static int gfx_v9_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->gfx.mec2_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (!err) {
>>>>>>           err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
>>>>>>           if (err)
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
>>>>>> index 8e28270d1ea9..4192a5a0c444 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
>>>>>> @@ -136,7 +136,7 @@ static int gmc_v6_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>           snprintf(fw_name, sizeof(fw_name), "radeon/si58_mc.bin");
>>>>>>       else
>>>>>>           snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->mc.fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->mc.fw, fw_name, adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>>>> index 86e9d682c59e..06deba7f707d 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>>>> @@ -151,7 +151,7 @@ static int gmc_v7_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       else
>>>>>>           snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->mc.fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->mc.fw, fw_name, adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->mc.fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
>>>>>> index 9a813d834f1a..cbce96198dbc 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
>>>>>> @@ -235,7 +235,7 @@ static int gmc_v8_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->mc.fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->mc.fw, fw_name, adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->mc.fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
>>>>>> index 5a9fe24697f9..718722ef1835 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
>>>>>> @@ -105,7 +105,7 @@ int psp_v10_0_init_microcode(struct 
>>>>>> psp_context *psp)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_asd.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->psp.asd_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->psp.asd_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
>>>>>> index 19bd1934e63d..dd5261577d9b 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
>>>>>> @@ -111,7 +111,7 @@ int psp_v3_1_init_microcode(struct psp_context 
>>>>>> *psp)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sos.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->psp.sos_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->psp.sos_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> @@ -131,7 +131,7 @@ int psp_v3_1_init_microcode(struct psp_context 
>>>>>> *psp)
>>>>>>                   le32_to_cpu(hdr->sos_offset_bytes);
>>>>>>       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_asd.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->psp.asd_fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->psp.asd_fw, fw_name, 
>>>>>> adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
>>>>>> index d4787ad4d346..a2afbaacc7e5 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
>>>>>> @@ -146,7 +146,7 @@ static int sdma_v2_4_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma.bin", chip_name);
>>>>>>           else
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma1.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           if (err)
>>>>>>               goto out;
>>>>>>           err = amdgpu_ucode_validate(adev->sdma.instance[i].fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
>>>>>> index 521978c40537..75d2a9cc9268 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
>>>>>> @@ -298,7 +298,7 @@ static int sdma_v3_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma.bin", chip_name);
>>>>>>           else
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma1.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           if (err)
>>>>>>               goto out;
>>>>>>           err = amdgpu_ucode_validate(adev->sdma.instance[i].fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>>>>> index 91cf95a8c39c..e1ebfb9e2650 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>>>>> @@ -176,7 +176,7 @@ static int sdma_v4_0_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma.bin", chip_name);
>>>>>>           else
>>>>>>               snprintf(fw_name, sizeof(fw_name), 
>>>>>> "amdgpu/%s_sdma1.bin", chip_name);
>>>>>> -        err = request_firmware(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>> +        err = firmware_request_nowarn(&adev->sdma.instance[i].fw, 
>>>>>> fw_name, adev->dev);
>>>>>>           if (err)
>>>>>>               goto out;
>>>>>>           err = amdgpu_ucode_validate(adev->sdma.instance[i].fw);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c 
>>>>>> b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
>>>>>> index ce675a7f179a..5538a5269417 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
>>>>>> @@ -7687,7 +7687,7 @@ static int si_dpm_init_microcode(struct 
>>>>>> amdgpu_device *adev)
>>>>>>       }
>>>>>>       snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", 
>>>>>> chip_name);
>>>>>> -    err = request_firmware(&adev->pm.fw, fw_name, adev->dev);
>>>>>> +    err = firmware_request_nowarn(&adev->pm.fw, fw_name, adev->dev);
>>>>>>       if (err)
>>>>>>           goto out;
>>>>>>       err = amdgpu_ucode_validate(adev->pm.fw);
>>>>>
>>>
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ