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] [day] [month] [year] [list]
Message-ID: <26e2a9e3-3f98-695b-a6f4-c0cd707c3ef4@gmail.com>
Date:   Tue, 17 Apr 2018 12:50:00 -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 12:41 PM, Andres Rodriguez wrote:
> 
> 
> 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.
> 

I should also point out, I'm not a user of the usermodehelper and I 
don't really like it much as a configuration option. I think most 
distros have phased it out (or are in the process of).

So, while I would prefer if we take the approach of switching everything 
to _nowarn(), I wouldn't be opposed to switching just the optional 
firmware files.

Regards,
Andres


> 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