64,7 → 64,7 |
if (alignment < PAGE_SIZE) { |
alignment = PAGE_SIZE; |
} |
r = radeon_fb_bo_create(rdev, gobj, size, kernel, initial_domain, &robj); |
r = radeon_bo_create(rdev, gobj, size, alignment, kernel, initial_domain, &robj); |
if (r) { |
DRM_ERROR("Failed to allocate GEM object (%d, %d, %u)\n", |
size, initial_domain, alignment); |
153,9 → 153,12 |
struct drm_radeon_gem_info *args = data; |
|
args->vram_size = rdev->mc.real_vram_size; |
/* FIXME: report somethings that makes sense */ |
args->vram_visible = rdev->mc.real_vram_size - (4 * 1024 * 1024); |
args->gart_size = rdev->mc.gtt_size; |
args->vram_visible = rdev->mc.real_vram_size; |
if (rdev->stollen_vga_memory) |
args->vram_visible -= radeon_bo_size(rdev->stollen_vga_memory); |
args->vram_visible -= radeon_fbdev_total_size(rdev); |
args->gart_size = rdev->mc.gtt_size - rdev->cp.ring_size - 4096 - |
RADEON_IB_POOL_SIZE*64*1024; |
return 0; |
} |
|
193,15 → 196,11 |
return r; |
} |
r = drm_gem_handle_create(filp, gobj, &handle); |
/* drop reference from allocate - handle holds it now */ |
drm_gem_object_unreference_unlocked(gobj); |
if (r) { |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
return r; |
} |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_handle_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
args->handle = handle; |
return 0; |
} |
222,15 → 221,13 |
/* just do a BO wait for now */ |
gobj = drm_gem_object_lookup(dev, filp, args->handle); |
if (gobj == NULL) { |
return -EINVAL; |
return -ENOENT; |
} |
robj = gobj->driver_private; |
|
r = radeon_gem_set_domain(gobj, args->read_domains, args->write_domain); |
|
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
drm_gem_object_unreference_unlocked(gobj); |
return r; |
} |
|
243,13 → 240,11 |
|
gobj = drm_gem_object_lookup(dev, filp, args->handle); |
if (gobj == NULL) { |
return -EINVAL; |
return -ENOENT; |
} |
robj = gobj->driver_private; |
args->addr_ptr = radeon_bo_mmap_offset(robj); |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
drm_gem_object_unreference_unlocked(gobj); |
return 0; |
} |
|
264,7 → 259,7 |
|
gobj = drm_gem_object_lookup(dev, filp, args->handle); |
if (gobj == NULL) { |
return -EINVAL; |
return -ENOENT; |
} |
robj = gobj->driver_private; |
r = radeon_bo_wait(robj, &cur_placement, true); |
280,9 → 275,7 |
default: |
break; |
} |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
drm_gem_object_unreference_unlocked(gobj); |
return r; |
} |
|
296,7 → 289,7 |
|
gobj = drm_gem_object_lookup(dev, filp, args->handle); |
if (gobj == NULL) { |
return -EINVAL; |
return -ENOENT; |
} |
robj = gobj->driver_private; |
r = radeon_bo_wait(robj, NULL, false); |
303,9 → 296,7 |
/* callback hw specific functions if any */ |
if (robj->rdev->asic->ioctl_wait_idle) |
robj->rdev->asic->ioctl_wait_idle(robj->rdev, robj); |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
drm_gem_object_unreference_unlocked(gobj); |
return r; |
} |
|
320,12 → 311,10 |
DRM_DEBUG("%d \n", args->handle); |
gobj = drm_gem_object_lookup(dev, filp, args->handle); |
if (gobj == NULL) |
return -EINVAL; |
return -ENOENT; |
robj = gobj->driver_private; |
r = radeon_bo_set_tiling_flags(robj, args->tiling_flags, args->pitch); |
mutex_lock(&dev->struct_mutex); |
drm_gem_object_unreference(gobj); |
mutex_unlock(&dev->struct_mutex); |
drm_gem_object_unreference_unlocked(gobj); |
return r; |
} |
|