summaryrefslogtreecommitdiffstats
path: root/drm-cirrus-qemu-fix-crash.patch
diff options
context:
space:
mode:
Diffstat (limited to 'drm-cirrus-qemu-fix-crash.patch')
-rw-r--r--drm-cirrus-qemu-fix-crash.patch101
1 files changed, 0 insertions, 101 deletions
diff --git a/drm-cirrus-qemu-fix-crash.patch b/drm-cirrus-qemu-fix-crash.patch
deleted file mode 100644
index be6f13509..000000000
--- a/drm-cirrus-qemu-fix-crash.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c
-index d703823..7053140 100644
---- a/drivers/gpu/drm/cirrus/cirrus_drv.c
-+++ b/drivers/gpu/drm/cirrus/cirrus_drv.c
-@@ -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);
- }
-
-diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.h b/drivers/gpu/drm/cirrus/cirrus_drv.h
-index 21bdfa8..64ea597 100644
---- a/drivers/gpu/drm/cirrus/cirrus_drv.h
-+++ b/drivers/gpu/drm/cirrus/cirrus_drv.h
-@@ -145,7 +145,7 @@ struct cirrus_device {
- struct ttm_bo_device bdev;
- atomic_t validate_sequence;
- } ttm;
--
-+ bool mm_inited;
- };
-
-
-diff --git a/drivers/gpu/drm/cirrus/cirrus_ttm.c b/drivers/gpu/drm/cirrus/cirrus_ttm.c
-index 2ebcd11..50e170f 100644
---- a/drivers/gpu/drm/cirrus/cirrus_ttm.c
-+++ b/drivers/gpu/drm/cirrus/cirrus_ttm.c
-@@ -275,12 +275,17 @@ int cirrus_mm_init(struct cirrus_device *cirrus)
- pci_resource_len(dev->pdev, 0),
- DRM_MTRR_WC);
-
-+ cirrus->mm_inited = true;
- return 0;
- }
-
- void cirrus_mm_fini(struct cirrus_device *cirrus)
- {
- struct drm_device *dev = cirrus->dev;
-+
-+ if (!cirrus->mm_inited)
-+ return;
-+
- ttm_bo_device_release(&cirrus->ttm.bdev);
-
- cirrus_ttm_global_release(cirrus);
-diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
-index 3c8e04f..93e832d 100644
---- a/drivers/gpu/drm/mgag200/mgag200_drv.c
-+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
-@@ -41,9 +41,28 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
-
- MODULE_DEVICE_TABLE(pci, pciidlist);
-
-+static void mgag200_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, "mgag200drmfb", primary);
-+ kfree(ap);
-+}
-+
-+
- static int __devinit
- mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
- {
-+ mgag200_kick_out_firmware_fb(pdev);
-+
- return drm_get_pci_dev(pdev, ent, &driver);
- }
-