- Backport nouveau noaccel fix for nva3+ cards from f13.
This commit is contained in:
parent
f2a8acbfe3
commit
c2055fabb7
105
drm-nouveau-nva3-noaccel.patch
Normal file
105
drm-nouveau-nva3-noaccel.patch
Normal file
@ -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
|
||||||
|
|
@ -47,7 +47,7 @@ Summary: The Linux kernel
|
|||||||
# reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
|
# 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.
|
# scripts/rebase.sh should be made to do that for you, actually.
|
||||||
#
|
#
|
||||||
%global baserelease 158
|
%global baserelease 159
|
||||||
%global fedora_build %{baserelease}
|
%global fedora_build %{baserelease}
|
||||||
|
|
||||||
# base_sublevel is the kernel version we're starting with and patching
|
# 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
|
Patch1845: drm-nouveau-mutex.patch
|
||||||
Patch1846: drm-nouveau-update.patch
|
Patch1846: drm-nouveau-update.patch
|
||||||
Patch1847: drm-nouveau-d620.patch
|
Patch1847: drm-nouveau-d620.patch
|
||||||
|
Patch1848: drm-nouveau-nva3-noaccel.patch
|
||||||
|
|
||||||
# kludge to make ich9 e1000 work
|
# kludge to make ich9 e1000 work
|
||||||
Patch2000: linux-2.6-e1000-ich9.patch
|
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-kconfig.patch
|
||||||
ApplyPatch drm-nouveau-update.patch
|
ApplyPatch drm-nouveau-update.patch
|
||||||
ApplyPatch drm-nouveau-d620.patch
|
ApplyPatch drm-nouveau-d620.patch
|
||||||
|
ApplyPatch drm-nouveau-nva3-noaccel.patch
|
||||||
|
|
||||||
# linux1394 git patches
|
# linux1394 git patches
|
||||||
#ApplyPatch linux-2.6-firewire-git-update.patch
|
#ApplyPatch linux-2.6-firewire-git-update.patch
|
||||||
@ -2221,7 +2223,10 @@ fi
|
|||||||
%kernel_variant_files -k vmlinux %{with_kdump} kdump
|
%kernel_variant_files -k vmlinux %{with_kdump} kdump
|
||||||
|
|
||||||
%changelog
|
%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
|
- Bring back drm-upgrayed-fixes.patch, dropped in the
|
||||||
2.6.32.16 update. (#620955)
|
2.6.32.16 update. (#620955)
|
||||||
- Revert upstream DRM stable fix we already have:
|
- Revert upstream DRM stable fix we already have:
|
||||||
|
Loading…
Reference in New Issue
Block a user