asyw->image.handle[0] = ctxdma->object.handle;
        }
 
-       asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+       asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
        asyw->image.offset[0] = fb->nvbo->bo.offset;
 
        if (wndw->func->prepare) {
 
                          type, &nvbo->placement,
                          align >> PAGE_SHIFT, false, acc_size, sg,
                          robj, nouveau_bo_del_ttm);
-       nvbo->bo.base.resv = nvbo->bo.resv;
 
        if (ret) {
                /* ttm will call nouveau_bo_del_ttm if it fails.. */
 {
        struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
        struct drm_device *dev = drm->dev;
-       struct dma_fence *fence = reservation_object_get_excl(bo->resv);
+       struct dma_fence *fence = reservation_object_get_excl(bo->base.resv);
 
        nv10_bo_put_tile_region(dev, *old_tile, fence);
        *old_tile = new_tile;
 void
 nouveau_bo_fence(struct nouveau_bo *nvbo, struct nouveau_fence *fence, bool exclusive)
 {
-       struct reservation_object *resv = nvbo->bo.resv;
+       struct reservation_object *resv = nvbo->bo.base.resv;
 
        if (exclusive)
                reservation_object_add_excl_fence(resv, &fence->base);
 
 {
        struct nouveau_fence_chan *fctx = chan->fence;
        struct dma_fence *fence;
-       struct reservation_object *resv = nvbo->bo.resv;
+       struct reservation_object *resv = nvbo->bo.base.resv;
        struct reservation_object_list *fobj;
        struct nouveau_fence *f;
        int ret = 0, i;
 
                return -ENOENT;
        nvbo = nouveau_gem_object(gem);
 
-       lret = reservation_object_wait_timeout_rcu(nvbo->bo.resv, write, true,
+       lret = reservation_object_wait_timeout_rcu(nvbo->bo.base.resv, write, true,
                                                   no_wait ? 0 : 30 * HZ);
        if (!lret)
                ret = -EBUSY;