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

From: Andres Rodriguez
Date: Tue Apr 17 2018 - 11:07:16 EST




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.

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