summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Ebbert <cebbert@redhat.com>2010-08-10 12:38:41 -0400
committerChuck Ebbert <cebbert@redhat.com>2010-08-10 12:38:41 -0400
commitc2055fabb75ffe76ffb5916d96761ec390fa764f (patch)
treed333f36dcdcc11e959ae32047196701bc9039463
parentf2a8acbfe3a5627565ac88f4ff1c3cbe2c4e7358 (diff)
downloaddom0-kernel-c2055fabb75ffe76ffb5916d96761ec390fa764f.tar.gz
dom0-kernel-c2055fabb75ffe76ffb5916d96761ec390fa764f.tar.xz
dom0-kernel-c2055fabb75ffe76ffb5916d96761ec390fa764f.zip
- Backport nouveau noaccel fix for nva3+ cards from f13.
-rw-r--r--drm-nouveau-nva3-noaccel.patch105
-rw-r--r--kernel.spec9
2 files changed, 112 insertions, 2 deletions
diff --git a/drm-nouveau-nva3-noaccel.patch b/drm-nouveau-nva3-noaccel.patch
new file mode 100644
index 0000000..505c724
--- /dev/null
+++ b/drm-nouveau-nva3-noaccel.patch
@@ -0,0 +1,105 @@
+From 030e105efc9a29c7d34fb59fb0e0a40e54178299 Mon Sep 17 00:00:00 2001
+From: Ben Skeggs <bskeggs@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@redhat.com>
+
+[ cebbert@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
+
diff --git a/kernel.spec b/kernel.spec
index 8a13775..d8c3c9b 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -47,7 +47,7 @@ Summary: The Linux kernel
# reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
# scripts/rebase.sh should be made to do that for you, actually.
#
-%global baserelease 158
+%global baserelease 159
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -737,6 +737,7 @@ Patch1844: drm-nouveau-kconfig.patch
Patch1845: drm-nouveau-mutex.patch
Patch1846: drm-nouveau-update.patch
Patch1847: drm-nouveau-d620.patch
+Patch1848: drm-nouveau-nva3-noaccel.patch
# kludge to make ich9 e1000 work
Patch2000: linux-2.6-e1000-ich9.patch
@@ -1480,6 +1481,7 @@ ApplyPatch drm-nouveau-safetile-getparam.patch
ApplyPatch drm-nouveau-kconfig.patch
ApplyPatch drm-nouveau-update.patch
ApplyPatch drm-nouveau-d620.patch
+ApplyPatch drm-nouveau-nva3-noaccel.patch
# linux1394 git patches
#ApplyPatch linux-2.6-firewire-git-update.patch
@@ -2221,7 +2223,10 @@ fi
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
-* Sat Aug 07 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.18-158.rc1
+* Tue Aug 10 2010 Chuck Ebbert <cebbert@redhat.com> 159
+- Backport nouveau noaccel fix for nva3+ cards from f13.
+
+* Tue Aug 10 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.18-158.rc1
- Bring back drm-upgrayed-fixes.patch, dropped in the
2.6.32.16 update. (#620955)
- Revert upstream DRM stable fix we already have: