nouveau: nv50: Implement ctxprog/state generation

svn path=/dists/sid/linux-2.6/; revision=15458
This commit is contained in:
Ben Hutchings 2010-03-30 03:07:57 +00:00
parent 06bda0914f
commit 67d40d322e
5 changed files with 2623 additions and 0 deletions

1
debian/changelog vendored
View File

@ -14,6 +14,7 @@ linux-2.6 (2.6.32-11) UNRELEASED; urgency=low
* linux-headers-*: Support postinst hooks in /etc/kernel/header_postinst.d,
thanks to Michael Gilbert (Closes: #569724)
* rt2860sta: Fix argument to linux_pci_unmap_single() (Closes: #575726)
* nouveau: nv50: Implement ctxprog/state generation
[ maximilian attems]
* [alpha, hppa] Disable oprofile as tracing code is unsupported here.

View File

@ -0,0 +1,37 @@
From 81cad7895061ee10c9ee4d3f1471ab70da1c6fc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcin=20Ko=C5=9Bcielnicki?= <koriakin@0x04.net>
Date: Wed, 17 Mar 2010 00:58:47 +0000
Subject: [PATCH] drm/nv50: Fix NEWCTX_DONE flag number
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
---
drivers/gpu/drm/nouveau/nv50_grctx.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nv50_grctx.c b/drivers/gpu/drm/nouveau/nv50_grctx.c
index 546b319..3c3cc46 100644
--- a/drivers/gpu/drm/nouveau/nv50_grctx.c
+++ b/drivers/gpu/drm/nouveau/nv50_grctx.c
@@ -55,12 +55,12 @@
#define CP_FLAG_AUTO_LOAD ((2 * 32) + 5)
#define CP_FLAG_AUTO_LOAD_NOT_PENDING 0
#define CP_FLAG_AUTO_LOAD_PENDING 1
+#define CP_FLAG_NEWCTX ((2 * 32) + 10)
+#define CP_FLAG_NEWCTX_BUSY 0
+#define CP_FLAG_NEWCTX_DONE 1
#define CP_FLAG_XFER ((2 * 32) + 11)
#define CP_FLAG_XFER_IDLE 0
#define CP_FLAG_XFER_BUSY 1
-#define CP_FLAG_NEWCTX ((2 * 32) + 12)
-#define CP_FLAG_NEWCTX_BUSY 0
-#define CP_FLAG_NEWCTX_DONE 1
#define CP_FLAG_ALWAYS ((2 * 32) + 13)
#define CP_FLAG_ALWAYS_FALSE 0
#define CP_FLAG_ALWAYS_TRUE 1
--
1.7.0.3

View File

@ -0,0 +1,42 @@
From 3bf777bf0ab112527cea103c3681934a9f41c03d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcin=20Ko=C5=9Bcielnicki?= <koriakin@0x04.net>
Date: Sun, 28 Feb 2010 23:45:38 +0000
Subject: [PATCH] drm/nv50: Make ctxprog wait until interrupt handler is done.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This will fix races between generated ctxprogs and interrupt handler.
Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
---
drivers/gpu/drm/nouveau/nv50_grctx.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nv50_grctx.c b/drivers/gpu/drm/nouveau/nv50_grctx.c
index d105fcd..9f909ab 100644
--- a/drivers/gpu/drm/nouveau/nv50_grctx.c
+++ b/drivers/gpu/drm/nouveau/nv50_grctx.c
@@ -64,6 +64,9 @@
#define CP_FLAG_ALWAYS ((2 * 32) + 13)
#define CP_FLAG_ALWAYS_FALSE 0
#define CP_FLAG_ALWAYS_TRUE 1
+#define CP_FLAG_INTR ((2 * 32) + 15)
+#define CP_FLAG_INTR_NOT_PENDING 0
+#define CP_FLAG_INTR_PENDING 1
#define CP_CTX 0x00100000
#define CP_CTX_COUNT 0x000f0000
@@ -214,6 +217,8 @@ nv50_grctx_init(struct nouveau_grctx *ctx)
cp_name(ctx, cp_setup_save);
cp_set (ctx, UNK1D, SET);
cp_wait(ctx, STATUS, BUSY);
+ cp_wait(ctx, INTR, PENDING);
+ cp_bra (ctx, STATUS, BUSY, cp_setup_save);
cp_set (ctx, UNK01, SET);
cp_set (ctx, SWAP_DIRECTION, SAVE);
--
1.7.0.3

File diff suppressed because it is too large Load Diff

View File

@ -7,3 +7,6 @@
+ bugfix/x86/eeepc-laptop-disable-wireless-hotplug-for-1005PE.patch
+ bugfix/all/ssb_check_for_sprom.patch
+ bugfix/all/rt2860sta-Fix-argument-to-linux_pci_unmap_single.patch
+ features/all/nouveau-nv50-Implement-ctxprog-state-generation.patch
+ bugfix/all/nouveau-nv50-Make-ctxprog-wait-for-interrupt-handler.patch
+ bugfix/all/nouveau-nv50-Fix-NEWCTX_DONE-flag-number.patch