req->buffer_start = (unsigned long) user_buffer;
buf->virtual = user_buffer;
break;
- case drm_bo_type_fake:
- req->buffer_start = start;
- break;
default:
return -EINVAL;
}
{
struct drm_bo_handle_arg arg;
- if (buf->mapVirtual && (buf->type != drm_bo_type_fake)) {
+ if (buf->mapVirtual) {
(void) drmUnmap(buf->mapVirtual, buf->start + buf->size);
buf->mapVirtual = NULL;
buf->virtual = NULL;
{
struct drm_bo_handle_arg arg;
- if (buf->mapVirtual && (buf->type != drm_bo_type_fake)) {
+ if (buf->mapVirtual) {
(void) munmap(buf->mapVirtual, buf->start + buf->size);
buf->mapVirtual = NULL;
buf->virtual = NULL;
* Make sure we have a virtual address of the buffer.
*/
- if (!buf->virtual && buf->type != drm_bo_type_fake) {
+ if (!buf->virtual) {
drmAddress virtual;
virtual = mmap(0, buf->size + buf->start,
PROT_READ | PROT_WRITE, MAP_SHARED,
ret = -ENOMEM;
break;
case drm_bo_type_user:
- case drm_bo_type_fake:
break;
default:
DRM_ERROR("Illegal buffer object type\n");
evict_mem = bo->mem;
evict_mem.mm_node = NULL;
- if (bo->type == drm_bo_type_fake) {
- bo->mem.mem_type = DRM_BO_MEM_LOCAL;
- bo->mem.mm_node = NULL;
- goto out1;
- }
-
evict_mem = bo->mem;
evict_mem.mask = dev->driver->bo_driver->evict_mask(bo);
ret = drm_bo_mem_space(bo, &evict_mem, no_wait);
goto out;
}
- out1:
mutex_lock(&dev->struct_mutex);
if (evict_mem.mm_node) {
if (evict_mem.mm_node != bo->pinned_node)
return 1;
}
-static int drm_bo_check_fake(struct drm_device * dev, struct drm_bo_mem_reg * mem)
-{
- struct drm_buffer_manager *bm = &dev->bm;
- struct drm_mem_type_manager *man;
- uint32_t num_prios = dev->driver->bo_driver->num_mem_type_prio;
- const uint32_t *prios = dev->driver->bo_driver->mem_type_prio;
- uint32_t i;
- int type_ok = 0;
- uint32_t mem_type = 0;
- uint32_t cur_flags;
-
- if (drm_bo_mem_compat(mem))
- return 0;
-
- BUG_ON(mem->mm_node);
-
- for (i = 0; i < num_prios; ++i) {
- mem_type = prios[i];
- man = &bm->man[mem_type];
- type_ok = drm_bo_mt_compatible(man, mem_type, mem->mask,
- &cur_flags);
- if (type_ok)
- break;
- }
-
- if (type_ok) {
- mem->mm_node = NULL;
- mem->mem_type = mem_type;
- mem->flags = cur_flags;
- DRM_FLAG_MASKED(mem->flags, mem->mask, ~DRM_BO_MASK_MEMTYPE);
- return 0;
- }
-
- DRM_ERROR("Illegal fake buffer flags 0x%016llx\n",
- (unsigned long long) mem->mask);
- return -EINVAL;
-}
-
/*
* bo locked.
*/
DRM_ERROR("Timed out waiting for buffer unmap.\n");
return ret;
}
- if (bo->type == drm_bo_type_fake) {
- ret = drm_bo_check_fake(dev, &bo->mem);
- if (ret)
- return ret;
- }
/*
* Check whether we need to move buffer.
int ret = 0;
unsigned long num_pages;
- if ((buffer_start & ~PAGE_MASK) && (type != drm_bo_type_fake)) {
+ if (buffer_start & ~PAGE_MASK) {
DRM_ERROR("Invalid buffer object start.\n");
return -EINVAL;
}
bo->mem.num_pages = bo->num_pages;
bo->mem.mm_node = NULL;
bo->mem.page_alignment = page_alignment;
- if (bo->type == drm_bo_type_fake) {
- bo->offset = buffer_start;
- bo->buffer_start = 0;
- } else {
- bo->buffer_start = buffer_start;
- }
+ bo->buffer_start = buffer_start;
bo->priv_flags = 0;
bo->mem.flags = 0ULL;
bo->mem.mask = 0ULL;
goto out_err;
}
- if (bo->type == drm_bo_type_fake) {
- ret = drm_bo_check_fake(dev, &bo->mem);
- if (ret)
- goto out_err;
- }
-
ret = drm_bo_add_ttm(bo);
if (ret)
goto out_err;
DRM_ERROR("Buffer object manager is not initialized.\n");
return -EINVAL;
}
- if (req->type == drm_bo_type_fake)
- LOCK_TEST_WITH_RETURN(dev, file_priv);
ret = drm_buffer_object_create(file_priv->head->dev,
req->size, req->type, req->mask,