From: Ben Hutchings Date: Mon, 12 Mar 2018 01:14:03 +0000 (+0000) Subject: firmware_class: Refer to Debian wiki page when logging missing firmware X-Git-Tag: archive/raspbian/4.16.16-2+rpi1^2~108 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c9b5be1e1a7ec70548cccdcaba0c13eca7a3e6e8;p=linux.git firmware_class: Refer to Debian wiki page when logging missing firmware If firmware loading fails due to a missing file, log a second error message referring to our wiki page about firmware. This will explain why some firmware is in non-free, or can't be packaged at all. Only do this once per boot. Do something similar in the radeon and amdgpu drivers, where we have an early check to avoid failing at a point where we cannot display anything. Gbp-Pq: Topic debian Gbp-Pq: Name firmware_class-refer-to-debian-wiki-firmware-page.patch --- diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 21732f1bfb3..d36349abf8f 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -455,9 +455,12 @@ fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv) } __putname(path); - if (rc) + if (rc) { dev_err(device, "firmware: failed to load %s (%d)\n", fw_priv->fw_name, rc); + if (rc == -ENOENT) + pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); + } return rc; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 2a57257f424..bd4ce06c2b8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -609,6 +609,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, if (!amdgpu_firmware_installed()) { DRM_ERROR("amdgpu requires firmware installed\n"); + pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); return -ENODEV; } diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index b47474e2e76..f2777545d1e 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -367,6 +367,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, if ((ent->driver_data & RADEON_FAMILY_MASK) >= CHIP_R600 && !radeon_firmware_installed()) { DRM_ERROR("radeon kernel modesetting for R600 or later requires firmware installed\n"); + pr_err_once("See https://wiki.debian.org/Firmware for information about missing firmware\n"); return -ENODEV; }