diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 15:08:05 +0200 | 
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 15:08:18 +0200 | 
| commit | e060c38434b2caa78efe7cedaff4191040b65a15 (patch) | |
| tree | 407361230bf6733f63d8e788e4b5e6566ee04818 /drivers/gpu/drm/nouveau/nv20_graph.c | |
| parent | 10e4ac572eeffe5317019bd7330b6058a400dfc2 (diff) | |
| parent | cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 (diff) | |
| download | olio-linux-3.10-e060c38434b2caa78efe7cedaff4191040b65a15.tar.xz olio-linux-3.10-e060c38434b2caa78efe7cedaff4191040b65a15.zip  | |
Merge branch 'master' into for-next
Fast-forward merge with Linus to be able to merge patches
based on more recent version of the tree.
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv20_graph.c')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv20_graph.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nv20_graph.c b/drivers/gpu/drm/nouveau/nv20_graph.c index affc7d7dd02..183e37512ef 100644 --- a/drivers/gpu/drm/nouveau/nv20_graph.c +++ b/drivers/gpu/drm/nouveau/nv20_graph.c @@ -454,13 +454,13 @@ nv20_graph_context_del(struct nouveau_channel *chan, int engine)  	unsigned long flags;  	spin_lock_irqsave(&dev_priv->context_switch_lock, flags); -	nv04_graph_fifo_access(dev, false); +	nv_mask(dev, NV04_PGRAPH_FIFO, 0x00000001, 0x00000000);  	/* Unload the context if it's the currently active one */  	if (nv10_graph_channel(dev) == chan)  		nv20_graph_unload_context(dev); -	nv04_graph_fifo_access(dev, true); +	nv_mask(dev, NV04_PGRAPH_FIFO, 0x00000001, 0x00000001);  	spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags);  	/* Free the context resources */ @@ -654,8 +654,13 @@ nv30_graph_init(struct drm_device *dev, int engine)  }  int -nv20_graph_fini(struct drm_device *dev, int engine) +nv20_graph_fini(struct drm_device *dev, int engine, bool suspend)  { +	nv_mask(dev, NV04_PGRAPH_FIFO, 0x00000001, 0x00000000); +	if (!nv_wait(dev, NV04_PGRAPH_STATUS, ~0, 0) && suspend) { +		nv_mask(dev, NV04_PGRAPH_FIFO, 0x00000001, 0x00000001); +		return -EBUSY; +	}  	nv20_graph_unload_context(dev);  	nv_wr32(dev, NV03_PGRAPH_INTR_EN, 0x00000000);  	return 0; @@ -753,6 +758,7 @@ nv20_graph_create(struct drm_device *dev)  			break;  		default:  			NV_ERROR(dev, "PGRAPH: unknown chipset\n"); +			kfree(pgraph);  			return 0;  		}  	} else { @@ -774,6 +780,7 @@ nv20_graph_create(struct drm_device *dev)  			break;  		default:  			NV_ERROR(dev, "PGRAPH: unknown chipset\n"); +			kfree(pgraph);  			return 0;  		}  	}  |