Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dedc14e2 authored by Dave Airlie's avatar Dave Airlie
Browse files

drm/cirrus: kick out conflicting framebuffers earlier

It appears that grub2 will pass framebuffer info via EFI,
this causes the vram reserve to fail, so kick out efifb
earlier before cirrus loads.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=826983


Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 93b4cc56
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -35,9 +35,28 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
	{0,}
};


static void cirrus_kick_out_firmware_fb(struct pci_dev *pdev)
{
	struct apertures_struct *ap;
	bool primary = false;

	ap = alloc_apertures(1);
	ap->ranges[0].base = pci_resource_start(pdev, 0);
	ap->ranges[0].size = pci_resource_len(pdev, 0);

#ifdef CONFIG_X86
	primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
#endif
	remove_conflicting_framebuffers(ap, "cirrusdrmfb", primary);
	kfree(ap);
}

static int __devinit
cirrus_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
	cirrus_kick_out_firmware_fb(pdev);

	return drm_get_pci_dev(pdev, ent, &driver);
}