Re: [PATCH 6/8] drm/amdgpu: use firmware_request_nowarn to load firmware

From: Andres Rodriguez
Date: Tue Apr 17 2018 - 12:50:12 EST




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@xxxxxxxxx>
---
 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);