Received: by 10.192.165.156 with SMTP id m28csp163620imm; Tue, 17 Apr 2018 08:08:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/BeWJaVUeLKy5YHnlToDzmsPvjf5ayJRAhuuCIRab9mLPbNgCKLjGXb/Qi9L6qaZE+Gccc X-Received: by 10.101.91.7 with SMTP id y7mr2101408pgq.396.1523977731035; Tue, 17 Apr 2018 08:08:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523977730; cv=none; d=google.com; s=arc-20160816; b=GG8MyOlcrKc0CQ7tVwPRCARfQi1odCmPx1t+9HagQr3rP5l46Qr3vfb0TdyDggX3w6 +/je0fU4p7pdNICo82l/rjACqZhoZjk9a0yf253QCtYPqucKXp+SCGLH+Q+3pNfkvo4M nVnb30RTw2GjQMqA+rWX34dR+iL3RyBtxoihwxs3NVai5cKN3eJ/WMsQ56cP2iISHqaX VURjYcBFN1IkADROIoCMSwzHsKUf5jIJoO+zjPsukMlV1Ev7nfDnZvJnPTsc11TGAdGy h6TQFmKjrCVQaEm4Q8seeqo3SxwRrB0EP2fXWzk9u02ZbMf9QqQtu3nbj9oBJUv1FKvT BHyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:cc:dkim-signature :arc-authentication-results; bh=CN1A0Y8C7MaVQbWmQ6bFHFusugkSqZEnByzc62PZuks=; b=V/FlkWHdvtR/8z6m0WG2Ug5AX6Q96AjZ995xMy0viGVKFlipwzQ+VG9zuJ6oE37qEF +eCkzk0dpN3rlriIW4SbQoCsDfdDBB3C6G7aXL3tqOvZuwYa8Q/MswRuKONFo4HTatal 4C6oSKBzi9fV+DPoNVUOjFhAvgnqEa7XgDsJikC8UqFmD1OKYaWneAQpKk1hbs69wo6T QLJzUPbeVsb3qVrkWv4fUKaAQ7hAcR5Vs4K3rb4RU0U4PJFXe5OvYP8a4zuTQlAtjWxH HtIHtFZwRSDmjZMPMse1M08aTQkyBOL9nAjjYq0INyqvRs+hhiaaV14YnGimF4YAC3yW Iwgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dzdZYvjd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p20si13166193pfi.345.2018.04.17.08.08.35; Tue, 17 Apr 2018 08:08:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dzdZYvjd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752651AbeDQPHK (ORCPT + 99 others); Tue, 17 Apr 2018 11:07:10 -0400 Received: from mail-io0-f176.google.com ([209.85.223.176]:35651 "EHLO mail-io0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752078AbeDQPHJ (ORCPT ); Tue, 17 Apr 2018 11:07:09 -0400 Received: by mail-io0-f176.google.com with SMTP id d26so1584090ioc.2 for ; Tue, 17 Apr 2018 08:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=cc:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=CN1A0Y8C7MaVQbWmQ6bFHFusugkSqZEnByzc62PZuks=; b=dzdZYvjd0EsZhA/JW6BJbDc/5G+1jlYxPjsPC+ord5Zo++KJHduVyT+nLsVGVVsAKd ctCgRdbmGNCVUt30qN1wI1Cd+UpXfnkk72YdYe2Zb69A9meWuifpvhXcv12RaxoUrpXA 8W2Xg/UqZ3ioj0wudRy0pIIdH6fUBWqiedwy+seUC4Sbs28grM8l6/u1xLtlK/wQAo/H B6OqCE1hVJ7HFPqjuGsm+BTX58Sdw7Du42Yf83KmPPPNSgfAPxnXkN6Gb6KAEbFPAo9H T1gar5SMWDFOTYP57/O2bkw4PVzGrO+OaZeXIU+XL/gJ5T4m14SLNUoDZxSd0N8OTxNX iQ2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:cc:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=CN1A0Y8C7MaVQbWmQ6bFHFusugkSqZEnByzc62PZuks=; b=Pc2/29vwCLVT+cWyvxfQsqd79QduaTF6qlP5rVwRzBcLZ8asKRPEVQG9WFQ0PxK5fR 8hRmL+B/0s3gV7sr1T6EdD3gAi8XaQu4tfIGn2ltOhPuIu/2RDkw8hidUt1otdW/XhyK BJZ5Ps6frVt18/21KglwkVCsiqcPeJjKi+mZfsDE8juDgMiDwygIZp31l2nhJ7dGbvRb fhjUsALrBsKTmrNr+yyZdc0YiyHlBC5y/jTqAJICmHjqMNUI6nbMM8hN4CfX1cmBO/ah vER+BHeWRFjujQQKI8KL3w5ImyZ9qq8qfrvptOd2zgglehovis96VaxxZoWLeg+I2iU7 GogA== X-Gm-Message-State: ALQs6tBDUImIlXj5AsWBN+3SEsIL7aM36hRTcrPq8YYeXaQm5YCto9ES WJ+WYi6m52O7WwwBPa5Efdw= X-Received: by 10.107.62.139 with SMTP id l133mr2379643ioa.65.1523977623466; Tue, 17 Apr 2018 08:07:03 -0700 (PDT) Received: from [192.168.0.26] (184-175-36-239.dsl.teksavvy.com. [184.175.36.239]) by smtp.gmail.com with ESMTPSA id n2sm949925ioc.75.2018.04.17.08.07.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Apr 2018 08:07:01 -0700 (PDT) Cc: andresx7@gmail.com, gregkh@linuxfoundation.org, mcgrof@kernel.org, alexdeucher@gmail.com, kvalo@codeaurora.org, arend.vanspriel@broadcom.com Subject: Re: [PATCH 6/8] drm/amdgpu: use firmware_request_nowarn to load firmware To: =?UTF-8?Q?Christian_K=c3=b6nig?= , linux-kernel@vger.kernel.org References: <20180416222427.29683-1-andresx7@gmail.com> <20180416222427.29683-7-andresx7@gmail.com> <2c27b97a-5cb7-92c3-d4d8-a9d274a2f1cf@amd.com> From: Andres Rodriguez Message-ID: Date: Tue, 17 Apr 2018 11:07:00 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <2c27b97a-5cb7-92c3-d4d8-a9d274a2f1cf@amd.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 >> --- >>   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); >