Make "radeon: Firmware is required for DRM and KMS ..." less Debian-specific

This commit is contained in:
Ben Hutchings 2018-03-14 18:55:39 +00:00
parent 1cf35d5b4d
commit ae02ddd98a
1 changed files with 4 additions and 5 deletions

View File

@ -35,14 +35,13 @@ missing, except for the pre-R600 case.
/*
* KMS wrapper.
@@ -311,6 +313,29 @@ static struct drm_driver kms_driver;
@@ -311,6 +313,28 @@ static struct drm_driver kms_driver;
bool radeon_device_is_virtual(void);
+/* Test that /lib/firmware/radeon is a directory (or symlink to a
+ * directory). We could try to match the udev search path, but let's
+ * assume people take the easy route and install
+ * firmware-linux-nonfree.
+ * keep it simple.
+ */
+static bool radeon_firmware_installed(void)
+{
@ -65,13 +64,13 @@ missing, except for the pre-R600 case.
static int radeon_kick_out_firmware_fb(struct pci_dev *pdev)
{
struct apertures_struct *ap;
@@ -340,6 +365,12 @@ static int radeon_pci_probe(struct pci_d
@@ -340,6 +364,12 @@ static int radeon_pci_probe(struct pci_d
if (vga_switcheroo_client_probe_defer(pdev))
return -EPROBE_DEFER;
+ if ((ent->driver_data & RADEON_FAMILY_MASK) >= CHIP_R600 &&
+ !radeon_firmware_installed()) {
+ DRM_ERROR("radeon kernel modesetting for R600 or later requires firmware-amd-graphics.\n");
+ DRM_ERROR("radeon kernel modesetting for R600 or later requires firmware installed\n");
+ return -ENODEV;
+ }
+