static int radeon_ttm_global_init(struct radeon_device *rdev) { struct drm_global_reference *global_ref; int r; rdev->mman.mem_global_referenced = false; global_ref = &rdev->mman.mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &radeon_ttm_mem_global_init; global_ref->release = &radeon_ttm_mem_global_release; r = drm_global_item_ref(global_ref); if (r != 0) { DRM_ERROR("Failed setting up TTM memory accounting " "subsystem.\n"); return r; } rdev->mman.bo_global_ref.mem_glob = rdev->mman.mem_global_ref.object; global_ref = &rdev->mman.bo_global_ref.ref; global_ref->global_type = DRM_GLOBAL_TTM_BO; global_ref->size = sizeof(struct ttm_bo_global); global_ref->init = &ttm_bo_global_init; global_ref->release = &ttm_bo_global_release; r = drm_global_item_ref(global_ref); if (r != 0) { DRM_ERROR("Failed setting up TTM BO subsystem.\n"); drm_global_item_unref(&rdev->mman.mem_global_ref); return r; } rdev->mman.mem_global_referenced = true; return 0; }
static int bochs_ttm_global_init(struct bochs_device *bochs) { struct drm_global_reference *global_ref; int r; global_ref = &bochs->ttm.mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &bochs_ttm_mem_global_init; global_ref->release = &bochs_ttm_mem_global_release; r = drm_global_item_ref(global_ref); if (r != 0) { DRM_ERROR("Failed setting up TTM memory accounting " "subsystem.\n"); return r; } bochs->ttm.bo_global_ref.mem_glob = bochs->ttm.mem_global_ref.object; global_ref = &bochs->ttm.bo_global_ref.ref; global_ref->global_type = DRM_GLOBAL_TTM_BO; global_ref->size = sizeof(struct ttm_bo_global); global_ref->init = &ttm_bo_global_init; global_ref->release = &ttm_bo_global_release; r = drm_global_item_ref(global_ref); if (r != 0) { DRM_ERROR("Failed setting up TTM BO subsystem.\n"); drm_global_item_unref(&bochs->ttm.mem_global_ref); return r; } return 0; }
static int hibmc_ttm_global_init(struct hibmc_drm_private *hibmc) { int ret; hibmc->mem_global_ref.global_type = DRM_GLOBAL_TTM_MEM; hibmc->mem_global_ref.size = sizeof(struct ttm_mem_global); hibmc->mem_global_ref.init = &hibmc_ttm_mem_global_init; hibmc->mem_global_ref.release = &hibmc_ttm_mem_global_release; ret = drm_global_item_ref(&hibmc->mem_global_ref); if (ret) { DRM_ERROR("could not get ref on ttm global: %d\n", ret); return ret; } hibmc->bo_global_ref.mem_glob = hibmc->mem_global_ref.object; hibmc->bo_global_ref.ref.global_type = DRM_GLOBAL_TTM_BO; hibmc->bo_global_ref.ref.size = sizeof(struct ttm_bo_global); hibmc->bo_global_ref.ref.init = &ttm_bo_global_init; hibmc->bo_global_ref.ref.release = &ttm_bo_global_release; ret = drm_global_item_ref(&hibmc->bo_global_ref.ref); if (ret) { DRM_ERROR("failed setting up TTM BO subsystem: %d\n", ret); drm_global_item_unref(&hibmc->mem_global_ref); return ret; } return 0; }
int pvdrm_ttm_global_init(struct pvdrm_device* pvdrm) { struct drm_global_reference* global_ref; struct pvdrm_ttm* ttm; int ret = 0; ttm = kzalloc(sizeof(struct pvdrm_ttm), GFP_KERNEL); if (!ttm) { return -ENOMEM; } pvdrm->ttm = ttm; // init mem_global_ref global_ref = &ttm->mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &pvdrm_ttm_mem_global_init; global_ref->release = &pvdrm_ttm_mem_global_release; ret = drm_global_item_ref(global_ref); if (ret) { BUG(); return ret; } // init bo_global_ref ttm->bo_global_ref.mem_glob = ttm->mem_global_ref.object; global_ref = &ttm->bo_global_ref.ref; global_ref->global_type = DRM_GLOBAL_TTM_BO; global_ref->size = sizeof(struct ttm_bo_global); global_ref->init = &ttm_bo_global_init; global_ref->release = &ttm_bo_global_release; ret = drm_global_item_ref(global_ref); if (ret) { BUG(); return ret; } return ret; }
int vmw_ttm_global_init(struct vmw_private *dev_priv) { ENTER(); struct drm_global_reference *global_ref; int ret; global_ref = &dev_priv->mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &vmw_ttm_mem_global_init; global_ref->release = &vmw_ttm_mem_global_release; ret = drm_global_item_ref(global_ref); if (unlikely(ret != 0)) { DRM_ERROR("Failed setting up TTM memory accounting.\n"); return ret; } dev_priv->bo_global_ref.mem_glob = dev_priv->mem_global_ref.object; global_ref = &dev_priv->bo_global_ref.ref; global_ref->global_type = DRM_GLOBAL_TTM_BO; global_ref->size = sizeof(struct ttm_bo_global); global_ref->init = &ttm_bo_global_init; global_ref->release = &ttm_bo_global_release; ret = drm_global_item_ref(global_ref); if (unlikely(ret != 0)) { DRM_ERROR("Failed setting up TTM buffer objects.\n"); goto out_no_bo; } LEAVE(); return 0; out_no_bo: drm_global_item_unref(&dev_priv->mem_global_ref); return ret; }
int nouveau_ttm_global_init(struct nouveau_drm *drm) { struct drm_global_reference *global_ref; int ret; global_ref = &drm->ttm.mem_global_ref; global_ref->global_type = DRM_GLOBAL_TTM_MEM; global_ref->size = sizeof(struct ttm_mem_global); global_ref->init = &nouveau_ttm_mem_global_init; global_ref->release = &nouveau_ttm_mem_global_release; ret = drm_global_item_ref(global_ref); if (unlikely(ret != 0)) { DRM_ERROR("Failed setting up TTM memory accounting\n"); drm->ttm.mem_global_ref.release = NULL; return ret; } drm->ttm.bo_global_ref.mem_glob = global_ref->object; global_ref = &drm->ttm.bo_global_ref.ref; global_ref->global_type = DRM_GLOBAL_TTM_BO; global_ref->size = sizeof(struct ttm_bo_global); global_ref->init = &ttm_bo_global_init; global_ref->release = &ttm_bo_global_release; ret = drm_global_item_ref(global_ref); if (unlikely(ret != 0)) { DRM_ERROR("Failed setting up TTM BO subsystem\n"); drm_global_item_unref(&drm->ttm.mem_global_ref); drm->ttm.mem_global_ref.release = NULL; return ret; } return 0; }