qxl: allow creation of pre-pinned objects and use for releases.
In order to fix an issue with reservations we need to create the releases as pre-pinned objects, this changes the placement interface and bo creation interface to allow creating pinned objects to save nested reservations later. This is just a stepping stone to main fix which follows to actually fix how qxl deals with reservations. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -118,7 +118,9 @@ static int qxl_release_bo_alloc(struct qxl_device *qdev,
|
||||
struct qxl_bo **bo)
|
||||
{
|
||||
int ret;
|
||||
ret = qxl_bo_create(qdev, PAGE_SIZE, false, QXL_GEM_DOMAIN_VRAM, NULL,
|
||||
/* pin releases bo's they are too messy to evict */
|
||||
ret = qxl_bo_create(qdev, PAGE_SIZE, false, true,
|
||||
QXL_GEM_DOMAIN_VRAM, NULL,
|
||||
bo);
|
||||
return ret;
|
||||
}
|
||||
@@ -216,11 +218,6 @@ int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size,
|
||||
mutex_unlock(&qdev->release_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* pin releases bo's they are too messy to evict */
|
||||
ret = qxl_bo_reserve(qdev->current_release_bo[cur_idx], false);
|
||||
qxl_bo_pin(qdev->current_release_bo[cur_idx], QXL_GEM_DOMAIN_VRAM, NULL);
|
||||
qxl_bo_unreserve(qdev->current_release_bo[cur_idx]);
|
||||
}
|
||||
|
||||
bo = qxl_bo_ref(qdev->current_release_bo[cur_idx]);
|
||||
|
Reference in New Issue
Block a user