drm/nouveau: wrap calls to ttm_bo_validate()
This will be used later to fixup bo.offset with a buffer's fixed GPU virtual address. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
committed by
Francisco Jerez
parent
a0fd9b9f68
commit
7a45d764a8
@@ -242,7 +242,7 @@ nouveau_bo_pin(struct nouveau_bo *nvbo, uint32_t memtype)
|
|||||||
|
|
||||||
nouveau_bo_placement_set(nvbo, memtype, 0);
|
nouveau_bo_placement_set(nvbo, memtype, 0);
|
||||||
|
|
||||||
ret = ttm_bo_validate(bo, &nvbo->placement, false, false, false);
|
ret = nouveau_bo_validate(nvbo, false, false, false);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
switch (bo->mem.mem_type) {
|
switch (bo->mem.mem_type) {
|
||||||
case TTM_PL_VRAM:
|
case TTM_PL_VRAM:
|
||||||
@@ -278,7 +278,7 @@ nouveau_bo_unpin(struct nouveau_bo *nvbo)
|
|||||||
|
|
||||||
nouveau_bo_placement_set(nvbo, bo->mem.placement, 0);
|
nouveau_bo_placement_set(nvbo, bo->mem.placement, 0);
|
||||||
|
|
||||||
ret = ttm_bo_validate(bo, &nvbo->placement, false, false, false);
|
ret = nouveau_bo_validate(nvbo, false, false, false);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
switch (bo->mem.mem_type) {
|
switch (bo->mem.mem_type) {
|
||||||
case TTM_PL_VRAM:
|
case TTM_PL_VRAM:
|
||||||
@@ -317,6 +317,20 @@ nouveau_bo_unmap(struct nouveau_bo *nvbo)
|
|||||||
ttm_bo_kunmap(&nvbo->kmap);
|
ttm_bo_kunmap(&nvbo->kmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
nouveau_bo_validate(struct nouveau_bo *nvbo, bool interruptible,
|
||||||
|
bool no_wait_reserve, bool no_wait_gpu)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = ttm_bo_validate(&nvbo->bo, &nvbo->placement, interruptible,
|
||||||
|
no_wait_reserve, no_wait_gpu);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
u16
|
u16
|
||||||
nouveau_bo_rd16(struct nouveau_bo *nvbo, unsigned index)
|
nouveau_bo_rd16(struct nouveau_bo *nvbo, unsigned index)
|
||||||
{
|
{
|
||||||
@@ -937,7 +951,7 @@ nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
|
|||||||
nvbo->placement.fpfn = 0;
|
nvbo->placement.fpfn = 0;
|
||||||
nvbo->placement.lpfn = dev_priv->fb_mappable_pages;
|
nvbo->placement.lpfn = dev_priv->fb_mappable_pages;
|
||||||
nouveau_bo_placement_set(nvbo, TTM_PL_VRAM, 0);
|
nouveau_bo_placement_set(nvbo, TTM_PL_VRAM, 0);
|
||||||
return ttm_bo_validate(bo, &nvbo->placement, false, true, false);
|
return nouveau_bo_validate(nvbo, false, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -1285,6 +1285,8 @@ extern void nouveau_bo_wr16(struct nouveau_bo *nvbo, unsigned index, u16 val);
|
|||||||
extern u32 nouveau_bo_rd32(struct nouveau_bo *nvbo, unsigned index);
|
extern u32 nouveau_bo_rd32(struct nouveau_bo *nvbo, unsigned index);
|
||||||
extern void nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val);
|
extern void nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val);
|
||||||
extern void nouveau_bo_fence(struct nouveau_bo *, struct nouveau_fence *);
|
extern void nouveau_bo_fence(struct nouveau_bo *, struct nouveau_fence *);
|
||||||
|
extern int nouveau_bo_validate(struct nouveau_bo *, bool interruptible,
|
||||||
|
bool no_wait_reserve, bool no_wait_gpu);
|
||||||
|
|
||||||
/* nouveau_fence.c */
|
/* nouveau_fence.c */
|
||||||
struct nouveau_fence;
|
struct nouveau_fence;
|
||||||
|
@@ -358,8 +358,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvbo->channel = (b->read_domains & (1 << 31)) ? NULL : chan;
|
nvbo->channel = (b->read_domains & (1 << 31)) ? NULL : chan;
|
||||||
ret = ttm_bo_validate(&nvbo->bo, &nvbo->placement,
|
ret = nouveau_bo_validate(nvbo, true, false, false);
|
||||||
true, false, false);
|
|
||||||
nvbo->channel = NULL;
|
nvbo->channel = NULL;
|
||||||
if (unlikely(ret)) {
|
if (unlikely(ret)) {
|
||||||
if (ret != -ERESTARTSYS)
|
if (ret != -ERESTARTSYS)
|
||||||
|
Reference in New Issue
Block a user