[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#723183: pu: package xserver-xorg-video-cirrus/1:1.4.0-3



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: pu

Hi,

the cirrus X driver is not compatible with the kms driver that was added
to linux 3.5 for qemu.  In 1:1.4.0-2, I cherry-picked a patch that makes
the driver bail if it detected the kms driver.  Unfortunately that
didn't quite work as it still prevented falling back to another driver.
This update intends to fix that, with a followup patch from upstream.
This patch is in 1:1.5.2-1, just uploaded to sid; I'll try and confirm
the fix in the next days.

Cheers,
Julien

diff --git a/debian/changelog b/debian/changelog
index d6bb0e0..4bdad5a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xserver-xorg-video-cirrus (1:1.4.0-3) UNRELEASED; urgency=low
+
+  * cirrus: fix falling back after kernel check.  If we find a kernel driver
+    the code leaves the pci slot claimed which stops us falling back.  Unclaim
+    the pci slot.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 17 Sep 2013 08:43:20 +0200
+
 xserver-xorg-video-cirrus (1:1.4.0-2) unstable; urgency=low
 
   * cirrus: don't bind if there is a PCI kernel driver loaded, for
diff --git a/src/cir_driver.c b/src/cir_driver.c
index c6967da..dfbaf52 100644
--- a/src/cir_driver.c
+++ b/src/cir_driver.c
@@ -244,9 +244,10 @@ CIRProbe(DriverPtr drv, int flags)
 				    CIRChipsets, CIRPciChipsets, devSections,
  				    numDevSections, drv, &usedChips);
     /* Free it since we don't need that list after this */
-    free(devSections);
-    if (numUsed <= 0)
+    if (numUsed <= 0) {
+        free(devSections);
  	return FALSE;
+    }
     if (flags & PROBE_DETECT)
  	foundScreen = TRUE;
     else for (i = 0; i < numUsed; i++) {
@@ -264,6 +265,8 @@ CIRProbe(DriverPtr drv, int flags)
                    pPci->device_id, pPci->bus, pPci->domain, pPci->dev, pPci->func);
         xf86DrvMsg(0, X_ERROR,
                    "cirrus: This driver cannot operate until it has been unloaded.\n");
+	xf86UnclaimPciSlot(pPci, devSections[0]);
+        free(devSections);
         return FALSE;
     }
 #endif
@@ -297,6 +300,7 @@ CIRProbe(DriverPtr drv, int flags)
  	    pScrn->Probe	 = NULL;
  	}
     }
+    free(devSections);
     free(usedChips);
      
     return foundScreen;

Attachment: signature.asc
Description: Digital signature


Reply to: