diff options
| -rw-r--r-- | shared-core/nv10_graph.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/shared-core/nv10_graph.c b/shared-core/nv10_graph.c index 567ce6a4..18bab7eb 100644 --- a/shared-core/nv10_graph.c +++ b/shared-core/nv10_graph.c @@ -608,21 +608,23 @@ void nouveau_nv10_context_switch(struct drm_device *dev)  	last = dev_priv->fifos[chid];  	if (!last) { -		DRM_DEBUG("Invalid last channel\n"); -		return; +		DRM_DEBUG("WARNING: Invalid last channel, switch to %x\n", +		          next->id); +	} else { +		DRM_INFO("NV: PGRAPH context switch interrupt channel %x -> %x\n", +		         last->id, next->id);  	} -	DRM_INFO("NV: PGRAPH context switch interrupt channel %x -> %x\n", -		 last->id, next->id); -  	NV_WRITE(NV04_PGRAPH_FIFO,0x0);  #if 0  	NV_WRITE(NV_PFIFO_CACH1_PUL0, 0x00000000);  	NV_WRITE(NV_PFIFO_CACH1_PUL1, 0x00000000);  	NV_WRITE(NV_PFIFO_CACHES, 0x00000000);  #endif -	nv10_graph_save_context(last); -	 +	if (last) { +		nv10_graph_save_context(last); +	}	 +  	nouveau_wait_for_idle(dev);  	NV_WRITE(NV10_PGRAPH_CTX_CONTROL, 0x10000000); | 
