Module Name:    src
Committed By:   riz
Date:           Fri Nov  6 23:03:20 UTC 2015

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_drm.c
        src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo [netbsd-7]:
            nouveau_engine_fifo_nve0.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1002):
        sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.6
        
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:
 revision 1.5
nouveau_drm.c:
- hook up an empty uvm_pagerops like radeon does.
- hook up nouveau_ttm_mmap_object().
nouveau_engine_fifo_nve0.c:
- if (cold), don't try to wait, but hard-spin until the timeout period.
with these in place, i am able to get working text-console with nouveau!
ok riastradh.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 \
    src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.1.1.1.4.2 -r1.1.1.1.4.3 \
    
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c	Fri Nov  6 23:03:20 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_drm.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $	*/
+/*	$NetBSD: nouveau_drm.c,v 1.2.4.3 2015/11/06 23:03:20 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.2.4.3 2015/11/06 23:03:20 riz Exp $");
 
 #include <linux/console.h>
 #include <linux/module.h>
@@ -62,6 +62,7 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_drm.
 #include "nouveau_fbcon.h"
 #include "nouveau_fence.h"
 #include "nouveau_debugfs.h"
+#include "nouveau_ttm.h"
 
 MODULE_PARM_DESC(config, "option string to pass to driver core");
 char *nouveau_config;
@@ -87,6 +88,10 @@ module_param_named(runpm, nouveau_runtim
 static struct drm_driver driver;
 #ifdef __NetBSD__
 struct drm_driver *const nouveau_drm_driver = &driver;
+
+/* XXX Kludge for the non-GEM GEM that nouveau uses.  */
+static const struct uvm_pagerops nouveau_gem_uvm_ops;
+
 #endif
 
 static u64
@@ -880,7 +885,11 @@ driver = {
 
 	.ioctls = nouveau_ioctls,
 	.num_ioctls = ARRAY_SIZE(nouveau_ioctls),
-#ifndef __NetBSD__
+#ifdef __NetBSD__
+	.fops = NULL,
+	.mmap_object = &nouveau_ttm_mmap_object,
+	.gem_uvm_ops = &nouveau_gem_uvm_ops,
+#else
 	.fops = &nouveau_driver_fops,
 #endif
 

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.2	Fri Mar  6 21:39:09 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c	Fri Nov  6 23:03:20 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $	*/
+/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $");
 
 #include <core/client.h>
 #include <core/handle.h>
@@ -136,18 +136,27 @@ nve0_fifo_runlist_update(struct nve0_fif
 	nv_wr32(priv, 0x002274, (engine << 20) | (p >> 3));
 
 #ifdef __NetBSD__
-    {
-	int ret;
+	if (cold) {
+		uint count = 2000;
+		while (count-- > 0) {
+			if (!(nv_rd32(priv, 0x002284 + (engine * 0x08)) & 0x00100000))
+				break;
+			delay(1000);
+		}
+		if (count == 0)
+			nv_error(priv, "runlist %d update timeout\n", engine);
+	} else {
+		int ret;
 
-	spin_lock(&engn->lock);
-	DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &engn->wait, &engn->lock,
-	    msecs_to_jiffies(2000),
-	    !(nv_rd32(priv, 0x002284 +
-		    (engine * 0x08)) & 0x00100000));
-	if (ret == 0)
-		nv_error(priv, "runlist %d update timeout\n", engine);
-	spin_unlock(&engn->lock);
-    }
+		spin_lock(&engn->lock);
+		DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &engn->wait, &engn->lock,
+		    msecs_to_jiffies(2000),
+		    !(nv_rd32(priv, 0x002284 +
+			    (engine * 0x08)) & 0x00100000));
+		if (ret == 0)
+			nv_error(priv, "runlist %d update timeout\n", engine);
+		spin_unlock(&engn->lock);
+	}
 #else
 	if (wait_event_timeout(engn->wait, !(nv_rd32(priv, 0x002284 +
 			       (engine * 0x08)) & 0x00100000),

Reply via email to