diff options
| -rw-r--r-- | shared-core/nouveau_mem.c | 11 | ||||
| -rw-r--r-- | shared-core/nouveau_object.c | 6 | 
2 files changed, 14 insertions, 3 deletions
| diff --git a/shared-core/nouveau_mem.c b/shared-core/nouveau_mem.c index db207e76..375463b4 100644 --- a/shared-core/nouveau_mem.c +++ b/shared-core/nouveau_mem.c @@ -806,6 +806,7 @@ int  nouveau_ioctl_mem_alloc(struct drm_device *dev, void *data,  			struct drm_file *file_priv)  { +	struct drm_nouveau_private *dev_priv = dev->dev_private;  	struct drm_nouveau_mem_alloc *alloc = data;  	struct mem_block *block; @@ -822,10 +823,15 @@ nouveau_ioctl_mem_alloc(struct drm_device *dev, void *data,  	alloc->offset=block->start;  	alloc->flags=block->flags; +	if (dev_priv->card_type >= NV_50 && alloc->flags & NOUVEAU_MEM_FB) +		alloc->offset += 512*1024*1024; +  	return 0;  } -int nouveau_ioctl_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv) +int +nouveau_ioctl_mem_free(struct drm_device *dev, void *data, +		       struct drm_file *file_priv)  {  	struct drm_nouveau_private *dev_priv = dev->dev_private;  	struct drm_nouveau_mem_free *memfree = data; @@ -833,6 +839,9 @@ int nouveau_ioctl_mem_free(struct drm_device *dev, void *data, struct drm_file *  	NOUVEAU_CHECK_INITIALISED_WITH_RETURN; +	if (dev_priv->card_type >= NV_50 && memfree->flags & NOUVEAU_MEM_FB) +		memfree->offset -= 512*1024*1024; +  	block=NULL;  	if (memfree->flags & NOUVEAU_MEM_FB)  		block = find_block(dev_priv->fb_heap, memfree->offset); diff --git a/shared-core/nouveau_object.c b/shared-core/nouveau_object.c index 5664bfc8..894e7336 100644 --- a/shared-core/nouveau_object.c +++ b/shared-core/nouveau_object.c @@ -1036,8 +1036,7 @@ nouveau_gpuobj_channel_init(struct nouveau_channel *chan,  	/* VRAM ctxdma */  	if (dev_priv->card_type >= NV_50) {  		ret = nouveau_gpuobj_dma_new(chan, NV_CLASS_DMA_IN_MEMORY, -					     512*1024*1024, -					     dev_priv->fb_available_size, +					     0, 0x100000000ULL,  					     NV_DMA_ACCESS_RW,  					     NV_DMA_TARGET_AGP, &vram);  		if (ret) { @@ -1059,6 +1058,9 @@ nouveau_gpuobj_channel_init(struct nouveau_channel *chan,  	}  	/* TT memory ctxdma */ +	if (dev_priv->card_type >= NV_50) { +		tt = vram; +	} else  	if (dev_priv->gart_info.type != NOUVEAU_GART_NONE) {  		ret = nouveau_gpuobj_gart_dma_new(chan, 0,  						  dev_priv->gart_info.aper_size, | 
