drm/nouveau: wrap calls to ttm_bo_validate()
authorBen Skeggs <bskeggs@redhat.com>
Sun, 21 Nov 2010 22:50:27 +0000 (08:50 +1000)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 8 Dec 2010 02:00:37 +0000 (03:00 +0100)
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>
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_gem.c

index f6f51b4259e7ebecbcd43080aff025678833a931..a7883e7db3444a4d559bed4a4f33b6e97c6f77cc 100644 (file)
@@ -242,7 +242,7 @@ nouveau_bo_pin(struct nouveau_bo *nvbo, uint32_t memtype)
 
        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) {
                switch (bo->mem.mem_type) {
                case TTM_PL_VRAM:
@@ -278,7 +278,7 @@ nouveau_bo_unpin(struct nouveau_bo *nvbo)
 
        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) {
                switch (bo->mem.mem_type) {
                case TTM_PL_VRAM:
@@ -317,6 +317,20 @@ nouveau_bo_unmap(struct nouveau_bo *nvbo)
                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
 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.lpfn = dev_priv->fb_mappable_pages;
        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
index e82dff4008c91658dee02b4e4f5c581db6068861..22abe8579912b46e18cb5211075dcdef0e0680f5 100644 (file)
@@ -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 void nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val);
 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 */
 struct nouveau_fence;
index 9886b644f27d3eaff9e4060ad012fd20eb4e14db..0adb2a85c143d6219feae27b48d678d71e765a7b 100644 (file)
@@ -358,8 +358,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
                }
 
                nvbo->channel = (b->read_domains & (1 << 31)) ? NULL : chan;
-               ret = ttm_bo_validate(&nvbo->bo, &nvbo->placement,
-                                     true, false, false);
+               ret = nouveau_bo_validate(nvbo, true, false, false);
                nvbo->channel = NULL;
                if (unlikely(ret)) {
                        if (ret != -ERESTARTSYS)