Hi
On NV_40 on driver is sent instructions from NVE0 series
not right
I inspected register  9012c with nvtools
and appear instructions to start unneeded engines 
NVE0_CHANNEL_IND_ENGINE_PPP 
NVE0_CHANNEL_IND_ENGINE_BSP 
NVE0_CHANNEL_IND_ENGINE_ENC  

I put one barrier but not start dri.
Index: master_local/drivers/gpu/drm/nouveau/nouveau_abi16.c
===================================================================
--- master_local.orig/drivers/gpu/drm/nouveau/nouveau_abi16.c	2014-08-01 00:51:43.000000000 +0300
+++ master_local/drivers/gpu/drm/nouveau/nouveau_abi16.c	2014-09-13 17:16:19.881489054 +0300
@@ -252,7 +252,12 @@
 	device = nv_device(abi16->device);
 	imem   = nouveau_instmem(device);
 	pfb    = nouveau_fb(device);
-
+	printk(KERN_INFO "fb_ctxdma_handle %x\n", init->fb_ctxdma_handle);
+	printk(KERN_INFO "tt_ctxdma_handle %x\n", init->tt_ctxdma_handle);
+	printk(KERN_INFO "channel %x\n", init->channel);
+	printk(KERN_INFO "pushbuf_domains %x\n", init->pushbuf_domains);
+	printk(KERN_INFO "notifier_handle %x\n", init->notifier_handle);
+	printk(KERN_INFO "nr_subchan %x\n", init->nr_subchan);
 	/* hack to allow channel engine type specification on kepler */
 	if (device->card_type >= NV_E0) {
 		if (init->fb_ctxdma_handle != ~0)
@@ -265,6 +270,18 @@
 		if (init->fb_ctxdma_handle == NVE0_CHANNEL_IND_ENGINE_GR)
 			init->tt_ctxdma_handle = 1;
 	}
+	
+	if (device->card_type < NV_50) {
+		if (init->fb_ctxdma_handle = 0x00000008)
+			return nouveau_abi16_put(abi16, -EINVAL);
+
+		if (init->fb_ctxdma_handle = 0x00000004)
+			return nouveau_abi16_put(abi16, -EINVAL);
+
+		if (init->fb_ctxdma_handle = 0x00000040)
+			return nouveau_abi16_put(abi16, -EINVAL);
+	}
+		 
 
 	if (init->fb_ctxdma_handle == ~0 || init->tt_ctxdma_handle == ~0)
 		return nouveau_abi16_put(abi16, -EINVAL);
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to