diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_bo_util.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo_util.c | 40 | 
1 files changed, 26 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index 398d5013fc39..efb7e9c34ab4 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -46,33 +46,33 @@ struct ttm_transfer_obj {  	struct ttm_buffer_object *bo;  }; -int ttm_mem_io_reserve(struct ttm_bo_device *bdev, +int ttm_mem_io_reserve(struct ttm_device *bdev,  		       struct ttm_resource *mem)  {  	if (mem->bus.offset || mem->bus.addr)  		return 0;  	mem->bus.is_iomem = false; -	if (!bdev->driver->io_mem_reserve) +	if (!bdev->funcs->io_mem_reserve)  		return 0; -	return bdev->driver->io_mem_reserve(bdev, mem); +	return bdev->funcs->io_mem_reserve(bdev, mem);  } -void ttm_mem_io_free(struct ttm_bo_device *bdev, +void ttm_mem_io_free(struct ttm_device *bdev,  		     struct ttm_resource *mem)  {  	if (!mem->bus.offset && !mem->bus.addr)  		return; -	if (bdev->driver->io_mem_free) -		bdev->driver->io_mem_free(bdev, mem); +	if (bdev->funcs->io_mem_free) +		bdev->funcs->io_mem_free(bdev, mem);  	mem->bus.offset = 0;  	mem->bus.addr = NULL;  } -static int ttm_resource_ioremap(struct ttm_bo_device *bdev, +static int ttm_resource_ioremap(struct ttm_device *bdev,  			       struct ttm_resource *mem,  			       void **virtual)  { @@ -91,6 +91,10 @@ static int ttm_resource_ioremap(struct ttm_bo_device *bdev,  		if (mem->bus.caching == ttm_write_combined)  			addr = ioremap_wc(mem->bus.offset, bus_size); +#ifdef CONFIG_X86 +		else if (mem->bus.caching == ttm_cached) +			addr = ioremap_cache(mem->bus.offset, bus_size); +#endif  		else  			addr = ioremap(mem->bus.offset, bus_size);  		if (!addr) { @@ -102,7 +106,7 @@ static int ttm_resource_ioremap(struct ttm_bo_device *bdev,  	return 0;  } -static void ttm_resource_iounmap(struct ttm_bo_device *bdev, +static void ttm_resource_iounmap(struct ttm_device *bdev,  				struct ttm_resource *mem,  				void *virtual)  { @@ -172,7 +176,7 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,  		       struct ttm_operation_ctx *ctx,  		       struct ttm_resource *new_mem)  { -	struct ttm_bo_device *bdev = bo->bdev; +	struct ttm_device *bdev = bo->bdev;  	struct ttm_resource_manager *man = ttm_manager_type(bdev, new_mem->mem_type);  	struct ttm_tt *ttm = bo->ttm;  	struct ttm_resource *old_mem = &bo->mem; @@ -300,16 +304,14 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,  	 * TODO: Explicit member copy would probably be better here.  	 */ -	atomic_inc(&ttm_bo_glob.bo_count); +	atomic_inc(&ttm_glob.bo_count);  	INIT_LIST_HEAD(&fbo->base.ddestroy);  	INIT_LIST_HEAD(&fbo->base.lru); -	INIT_LIST_HEAD(&fbo->base.swap);  	fbo->base.moving = NULL;  	drm_vma_node_reset(&fbo->base.base.vma_node);  	kref_init(&fbo->base.kref);  	fbo->base.destroy = &ttm_transfered_destroy; -	fbo->base.acc_size = 0;  	fbo->base.pin_count = 0;  	if (bo->type != ttm_bo_type_sg)  		fbo->base.base.resv = &fbo->base.base._resv; @@ -373,6 +375,11 @@ static int ttm_bo_ioremap(struct ttm_buffer_object *bo,  		if (mem->bus.caching == ttm_write_combined)  			map->virtual = ioremap_wc(bo->mem.bus.offset + offset,  						  size); +#ifdef CONFIG_X86 +		else if (mem->bus.caching == ttm_cached) +			map->virtual = ioremap_cache(bo->mem.bus.offset + offset, +						  size); +#endif  		else  			map->virtual = ioremap(bo->mem.bus.offset + offset,  					       size); @@ -491,6 +498,11 @@ int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map)  		else if (mem->bus.caching == ttm_write_combined)  			vaddr_iomem = ioremap_wc(mem->bus.offset,  						 bo->base.size); +#ifdef CONFIG_X86 +		else if (mem->bus.caching == ttm_cached) +			vaddr_iomem = ioremap_cache(mem->bus.offset, +						  bo->base.size); +#endif  		else  			vaddr_iomem = ioremap(mem->bus.offset, bo->base.size); @@ -602,7 +614,7 @@ static int ttm_bo_move_to_ghost(struct ttm_buffer_object *bo,  static void ttm_bo_move_pipeline_evict(struct ttm_buffer_object *bo,  				       struct dma_fence *fence)  { -	struct ttm_bo_device *bdev = bo->bdev; +	struct ttm_device *bdev = bo->bdev;  	struct ttm_resource_manager *from = ttm_manager_type(bdev, bo->mem.mem_type);  	/** @@ -628,7 +640,7 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,  			      bool pipeline,  			      struct ttm_resource *new_mem)  { -	struct ttm_bo_device *bdev = bo->bdev; +	struct ttm_device *bdev = bo->bdev;  	struct ttm_resource_manager *from = ttm_manager_type(bdev, bo->mem.mem_type);  	struct ttm_resource_manager *man = ttm_manager_type(bdev, new_mem->mem_type);  	int ret = 0; | 
