rpms/kernel/F-10 drm-intel-fix-vt-switch-hang.patch, NONE, 1.1 kernel.spec, 1.1154, 1.1155

Jarod Wilson jwilson at fedoraproject.org
Tue Nov 18 20:28:34 UTC 2008


Author: jwilson

Update of /cvs/pkgs/rpms/kernel/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv12299

Modified Files:
	kernel.spec 
Added Files:
	drm-intel-fix-vt-switch-hang.patch 
Log Message:
* Tue Nov 18 2008 Jarod Wilson <jarod at redhat.com> 2.6.27.5-119
- Fix hang on VT switch w/compiz on intel graphics (#467332)


drm-intel-fix-vt-switch-hang.patch:

--- NEW FILE drm-intel-fix-vt-switch-hang.patch ---
diff -Naurp linux-2.6.27.noarch/drivers/gpu/drm/drm_drv.c linux-2.6.27.noarch.fix/drivers/gpu/drm/drm_drv.c
--- linux-2.6.27.noarch/drivers/gpu/drm/drm_drv.c	2008-11-18 14:00:28.010882181 -0500
+++ linux-2.6.27.noarch.fix/drivers/gpu/drm/drm_drv.c	2008-11-18 14:05:02.326816339 -0500
@@ -302,6 +302,8 @@ static void drm_cleanup(struct drm_devic
 		return;
 	}
 
+	drm_vblank_cleanup(dev);
+
 	drm_lastclose(dev);
 
 	if (drm_core_has_MTRR(dev) && drm_core_has_AGP(dev) &&
diff -Naurp linux-2.6.27.noarch/drivers/gpu/drm/drm_irq.c linux-2.6.27.noarch.fix/drivers/gpu/drm/drm_irq.c
--- linux-2.6.27.noarch/drivers/gpu/drm/drm_irq.c	2008-11-18 14:00:28.013743068 -0500
+++ linux-2.6.27.noarch.fix/drivers/gpu/drm/drm_irq.c	2008-11-18 14:04:33.574816293 -0500
@@ -94,7 +94,7 @@ static void vblank_disable_fn(unsigned l
 	}
 }
 
-static void drm_vblank_cleanup(struct drm_device *dev)
+void drm_vblank_cleanup(struct drm_device *dev)
 {
 	/* Bail if the driver didn't call drm_vblank_init() */
 	if (dev->num_crtcs == 0)
@@ -278,8 +278,6 @@ int drm_irq_uninstall(struct drm_device 
 
 	free_irq(dev->pdev->irq, dev);
 
-	drm_vblank_cleanup(dev);
-
 	return 0;
 }
 EXPORT_SYMBOL(drm_irq_uninstall);
diff -Naurp linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_dma.c linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_dma.c
--- linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_dma.c	2008-11-18 14:00:28.111878144 -0500
+++ linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_dma.c	2008-11-18 14:03:44.108834217 -0500
@@ -867,6 +867,8 @@ int i915_driver_load(struct drm_device *
 
 	spin_lock_init(&dev_priv->user_irq_lock);
 
+	ret = drm_vblank_init(dev, I915_NUM_PIPE);
+
 	return ret;
 }
 
diff -Naurp linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_drv.h linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_drv.h
--- linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_drv.h	2008-11-18 14:00:28.112880984 -0500
+++ linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_drv.h	2008-11-18 14:02:50.155816341 -0500
@@ -47,6 +47,8 @@ enum pipe {
 	PIPE_B,
 };
 
+#define I915_NUM_PIPE	2
+
 /* Interface history:
  *
  * 1.1: Original.
diff -Naurp linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_irq.c linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_irq.c
--- linux-2.6.27.noarch/drivers/gpu/drm/i915/i915_irq.c	2008-11-18 14:00:28.021816082 -0500
+++ linux-2.6.27.noarch.fix/drivers/gpu/drm/i915/i915_irq.c	2008-11-18 14:02:31.547690738 -0500
@@ -478,11 +478,6 @@ void i915_driver_irq_preinstall(struct d
 int i915_driver_irq_postinstall(struct drm_device *dev)
 {
 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
-	int ret, num_pipes = 2;
-
-	ret = drm_vblank_init(dev, num_pipes);
-	if (ret)
-		return ret;
 
 	dev_priv->vblank_pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B;
 
diff -Naurp linux-2.6.27.noarch/include/drm/drmP.h linux-2.6.27.noarch.fix/include/drm/drmP.h
--- linux-2.6.27.noarch/include/drm/drmP.h	2008-11-18 14:00:28.107878728 -0500
+++ linux-2.6.27.noarch.fix/include/drm/drmP.h	2008-11-18 14:02:03.370816158 -0500
@@ -1252,6 +1252,7 @@ extern u32 drm_vblank_count(struct drm_d
 extern void drm_handle_vblank(struct drm_device *dev, int crtc);
 extern int drm_vblank_get(struct drm_device *dev, int crtc);
 extern void drm_vblank_put(struct drm_device *dev, int crtc);
+extern void drm_vblank_cleanup(struct drm_device *dev);
 /* Modesetting support */
 extern int drm_modeset_ctl(struct drm_device *dev, void *data,
 			   struct drm_file *file_priv);


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-10/kernel.spec,v
retrieving revision 1.1154
retrieving revision 1.1155
diff -u -r1.1154 -r1.1155
--- kernel.spec	18 Nov 2008 18:13:05 -0000	1.1154
+++ kernel.spec	18 Nov 2008 20:28:03 -0000	1.1155
@@ -665,6 +665,7 @@
 Patch1814: drm-modesetting-i915.patch
 Patch1815: drm-nouveau.patch
 Patch1816: drm-intel-8xx-pae-no-gem.patch
+Patch1817: drm-intel-fix-vt-switch-hang.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1316,6 +1317,7 @@
 #ApplyPatch drm-modesetting-i915.patch
 ApplyPatch drm-nouveau.patch
 ApplyPatch drm-intel-8xx-pae-no-gem.patch
+ApplyPatch drm-intel-fix-vt-switch-hang.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1927,6 +1929,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Tue Nov 18 2008 Jarod Wilson <jarod at redhat.com> 2.6.27.5-119
+- Fix hang on VT switch w/compiz on intel graphics (#467332)
+
 * Tue Nov 18 2008 Dave Jones <davej at redhat.com> 2.6.27.5-118
 - Disable autofs v3. (obsoleted by v4 some time ago.)
 




More information about the scm-commits mailing list