@@ -79,8 +79,6 @@ static void ttm_mem_type_debug(struct ttm_bo_device *bdev, int mem_type)
printk(KERN_ERR TTM_PFX " use_type: %d\n", man->use_type);
printk(KERN_ERR TTM_PFX " flags: 0x%08X\n", man->flags);
printk(KERN_ERR TTM_PFX " gpu_offset: 0x%08lX\n", man->gpu_offset);
- printk(KERN_ERR TTM_PFX " io_offset: 0x%08lX\n", man->io_offset);
- printk(KERN_ERR TTM_PFX " io_size: %ld\n", man->io_size);
printk(KERN_ERR TTM_PFX " size: %llu\n", man->size);
printk(KERN_ERR TTM_PFX " available_caching: 0x%08X\n",
man->available_caching);
@@ -1560,26 +1558,6 @@ bool ttm_mem_reg_is_pci(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem)
return true;
}
-int ttm_bo_pci_offset(struct ttm_bo_device *bdev,
- struct ttm_mem_reg *mem,
- unsigned long *bus_base,
- unsigned long *bus_offset, unsigned long *bus_size)
-{
- struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
-
- *bus_size = 0;
- if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE))
- return -EINVAL;
-
- if (ttm_mem_reg_is_pci(bdev, mem)) {
- *bus_offset = mem->mm_node->start << PAGE_SHIFT;
- *bus_size = mem->num_pages << PAGE_SHIFT;
- *bus_base = man->io_offset;
- }
-
- return 0;
-}
-
void ttm_bo_unmap_virtual(struct ttm_buffer_object *bo)
{
struct ttm_bo_device *bdev = bo->bdev;
@@ -90,17 +90,9 @@ int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem,
void *addr;
*virtual = NULL;
- if (bdev->driver->io_mem_reserve) {
- ret = bdev->driver->io_mem_reserve(bdev, mem, &pl);
- if (unlikely(ret != 0)) {
- return ret;
- }
- } else {
- ret = ttm_bo_pci_offset(bdev, mem, &pl.base, &pl.offset, &pl.size);
- if (unlikely(ret != 0) || pl.size == 0) {
- return ret;
- }
- pl.is_iomem = (pl.size != 0);
+ ret = bdev->driver->io_mem_reserve(bdev, mem, &pl);
+ if (unlikely(ret != 0)) {
+ return ret;
}
if (!(man->flags & TTM_MEMTYPE_FLAG_NEEDS_IOREMAP))
@@ -393,7 +385,7 @@ static int ttm_bo_ioremap(struct ttm_buffer_object *bo,
if (!(man->flags & TTM_MEMTYPE_FLAG_NEEDS_IOREMAP)) {
map->bo_kmap_type = ttm_bo_map_premapped;
- map->virtual = (void *)(((u8 *) man->io_addr) + bus_offset);
+ map->virtual = (void *)(bus_base + bus_offset);
} else {
map->bo_kmap_type = ttm_bo_map_iomap;
if (mem->placement & TTM_PL_FLAG_WC)
@@ -468,17 +460,9 @@ int ttm_bo_kmap(struct ttm_buffer_object *bo,
if (num_pages > 1 && !DRM_SUSER(DRM_CURPROC))
return -EPERM;
#endif
- if (bo->bdev->driver->io_mem_reserve) {
- ret = bo->bdev->driver->io_mem_reserve(bo->bdev, &bo->mem, &pl);
- if (unlikely(ret != 0)) {
- return ret;
- }
- } else {
- ret = ttm_bo_pci_offset(bo->bdev, &bo->mem, &pl.base, &pl.offset, &pl.size);
- if (unlikely(ret != 0)) {
- return ret;
- }
- pl.is_iomem = (pl.size != 0);
+ ret = bo->bdev->driver->io_mem_reserve(bo->bdev, &bo->mem, &pl);
+ if (unlikely(ret != 0)) {
+ return ret;
}
if (!pl.is_iomem) {
return ttm_bo_kmap_ttm(bo, start_page, num_pages, map);
@@ -101,27 +101,18 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
if (bdev->driver->fault_reserve_notify)
bdev->driver->fault_reserve_notify(bo);
- if (bdev->driver->fault_reserve) {
- ret = bdev->driver->fault_reserve(bo, &pl);
- switch (ret) {
- case 0:
- break;
- case -EBUSY:
- set_need_resched();
- case -ERESTARTSYS:
- retval = VM_FAULT_NOPAGE;
- goto out_unlock;
- default:
- retval = VM_FAULT_SIGBUS;
- goto out_unlock;
- }
- } else {
- ret = ttm_bo_pci_offset(bdev, &bo->mem, &pl.base, &pl.offset, &pl.size);
- if (unlikely(ret != 0)) {
- retval = VM_FAULT_SIGBUS;
- goto out_unlock;
- }
- pl.is_iomem = (pl.size != 0);
+ ret = bdev->driver->fault_reserve(bo, &pl);
+ switch (ret) {
+ case 0:
+ break;
+ case -EBUSY:
+ set_need_resched();
+ case -ERESTARTSYS:
+ retval = VM_FAULT_NOPAGE;
+ goto out_unlock;
+ default:
+ retval = VM_FAULT_SIGBUS;
+ goto out_unlock;
}
/*
@@ -190,13 +190,6 @@ struct ttm_tt {
* managed by this memory type.
* @gpu_offset: If used, the GPU offset of the first managed page of
* fixed memory or the first managed location in an aperture.
- * @io_offset: The io_offset of the first managed page of IO memory or
- * the first managed location in an aperture. For TTM_MEMTYPE_FLAG_CMA
- * memory, this should be set to NULL.
- * @io_size: The size of a managed IO region (fixed memory or aperture).
- * @io_addr: Virtual kernel address if the io region is pre-mapped. For
- * TTM_MEMTYPE_FLAG_NEEDS_IOREMAP there is no pre-mapped io map and
- * @io_addr should be set to NULL.
* @size: Size of the managed region.
* @available_caching: A mask of available caching types, TTM_PL_FLAG_XX,
* as defined in ttm_placement_common.h
@@ -222,9 +215,6 @@ struct ttm_mem_type_manager {
bool use_type;
uint32_t flags;
unsigned long gpu_offset;
- unsigned long io_offset;
- unsigned long io_size;
- void *io_addr;
uint64_t size;
uint32_t available_caching;
uint32_t default_caching;