[kernel] r16267 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Maximilian Attems maks at alioth.debian.org
Sun Sep 12 14:29:09 UTC 2010


Author: maks
Date: Sun Sep 12 14:29:06 2010
New Revision: 16267

Log:
nouveau  disable acceleration on NVA3/NVA5/NVA8 by default

fixes GPU lockup problem, seen on Fedora 12 and 13, fixes
https://bugzilla.redhat.com/show_bug.cgi?id=596330

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-nouveau-nva3-noaccel.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/22

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sun Sep 12 12:20:32 2010	(r16266)
+++ dists/sid/linux-2.6/debian/changelog	Sun Sep 12 14:29:06 2010	(r16267)
@@ -72,6 +72,7 @@
   [ maximilian attems ]
   * [powerpc] Enable WINDFARM_PM121. (closes: #596515)
     Thanks Étienne BERSAC <bersace03 at gmail.com>
+  * nouveau: disable acceleration on NVA3/NVA5/NVA8 by default.
 
  -- Ben Hutchings <ben at decadent.org.uk>  Fri, 27 Aug 2010 08:38:26 +0100
 

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-nouveau-nva3-noaccel.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-nouveau-nva3-noaccel.patch	Sun Sep 12 14:29:06 2010	(r16267)
@@ -0,0 +1,105 @@
+From 030e105efc9a29c7d34fb59fb0e0a40e54178299 Mon Sep 17 00:00:00 2001
+From: Ben Skeggs <bskeggs at redhat.com>
+Date: Wed, 30 Jun 2010 13:34:05 +1000
+Subject: [PATCH] drm/nouveau: disable acceleration on NVA3/NVA5/NVA8 by default
+
+There's an GPU lockup problem for which the cause is currently unknown
+on these chipsets.
+
+Until it's resolved, it's better to leave the user with a working system
+without acceleration than to have random lockups.
+
+With this patch, acceleration will be off by default if a known problem
+chipset is detected, but can be re-enabled with nouveau.noaccel=0 on
+the kernel commandline.
+
+Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
+
+[ cebbert at redhat.com : Backport to F12 and fix some module parameter descriptions. ]
+---
+
+--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
++++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
+@@ -75,11 +75,11 @@ int nouveau_ignorelid = 0;
+ int nouveau_ignorelid = 0;
+ module_param_named(ignorelid, nouveau_ignorelid, int, 0400);
+ 
+-MODULE_PARM_DESC(noagp, "Disable all acceleration");
++MODULE_PARM_DESC(noaccel, "Disable all acceleration");
+-int nouveau_noaccel = 0;
++int nouveau_noaccel = -1;
+ module_param_named(noaccel, nouveau_noaccel, int, 0400);
+ 
+-MODULE_PARM_DESC(noagp, "Disable fbcon acceleration");
++MODULE_PARM_DESC(nofbaccel, "Disable fbcon acceleration");
+ int nouveau_nofbaccel = 0;
+ module_param_named(nofbaccel, nouveau_nofbaccel, int, 0400);
+ 
+--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
++++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
+@@ -493,6 +493,7 @@ enum nouveau_card_type {
+ 
+ struct drm_nouveau_private {
+ 	struct drm_device *dev;
++	bool noaccel;
+ 	enum {
+ 		NOUVEAU_CARD_INIT_DOWN,
+ 		NOUVEAU_CARD_INIT_DONE,
+--- a/drivers/gpu/drm/nouveau/nouveau_state.c
++++ b/drivers/gpu/drm/nouveau/nouveau_state.c
+@@ -435,7 +435,7 @@ nouveau_card_init(struct drm_device *dev)
+ 	if (ret)
+ 		goto out_timer;
+ 
+-	if (nouveau_noaccel)
++	if (dev_priv->noaccel)
+ 		engine->graph.accel_blocked = true;
+ 	else {
+ 		/* PGRAPH */
+@@ -491,10 +491,10 @@ out_display:
+ out_irq:
+ 	drm_irq_uninstall(dev);
+ out_fifo:
+-	if (!nouveau_noaccel)
++	if (!dev_priv->noaccel)
+ 		engine->fifo.takedown(dev);
+ out_graph:
+-	if (!nouveau_noaccel)
++	if (!dev_priv->noaccel)
+ 		engine->graph.takedown(dev);
+ out_fb:
+ 	engine->fb.takedown(dev);
+@@ -532,7 +532,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
+ 			dev_priv->channel = NULL;
+ 		}
+ 
+-		if (!nouveau_noaccel) {
++		if (!dev_priv->noaccel) {
+ 			engine->fifo.takedown(dev);
+ 			engine->graph.takedown(dev);
+ 		}
+@@ -691,6 +691,21 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
+ 	NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
+ 		dev_priv->card_type, reg0);
+ 
++	if (nouveau_noaccel == -1) {
++		switch (dev_priv->chipset) {
++		case 0xa3:
++		case 0xa5:
++		case 0xa8:
++			dev_priv->noaccel = true;
++			break;
++		default:
++			dev_priv->noaccel = false;
++			break;
++		}
++	} else {
++		dev_priv->noaccel = (nouveau_noaccel != 0);
++	}
++
+ 	/* map larger RAMIN aperture on NV40 cards */
+ 	dev_priv->ramin  = NULL;
+ 	if (dev_priv->card_type >= NV_40) {
+-- 
+1.7.2
+

Modified: dists/sid/linux-2.6/debian/patches/series/22
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/22	Sun Sep 12 12:20:32 2010	(r16266)
+++ dists/sid/linux-2.6/debian/patches/series/22	Sun Sep 12 14:29:06 2010	(r16267)
@@ -119,3 +119,4 @@
 - features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
 + features/all/r8169-rtl8168d-1-2-request_firmware-3.patch
 + bugfix/all/irda-correctly-clean-up-self-ias_obj-on-irda_bind-failure.patch
++ bugfix/all/drm-nouveau-nva3-noaccel.patch



More information about the Kernel-svn-changes mailing list