#include "amdgpu_hmm.h"
 #include "amdgpu_xgmi.h"
 
-static const struct drm_gem_object_funcs amdgpu_gem_object_funcs;
-
 static vm_fault_t amdgpu_gem_fault(struct vm_fault *vmf)
 {
        struct ttm_buffer_object *bo = vmf->vma->vm_private_data;
 
 static void amdgpu_gem_object_free(struct drm_gem_object *gobj)
 {
-       struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj);
+       struct amdgpu_bo *aobj = gem_to_amdgpu_bo(gobj);
 
-       if (robj) {
-               amdgpu_hmm_unregister(robj);
-               amdgpu_bo_unref(&robj);
+       if (aobj) {
+               amdgpu_hmm_unregister(aobj);
+               ttm_bo_put(&aobj->tbo);
        }
 }
 
 
        bo = &ubo->bo;
        *obj = &bo->tbo.base;
-       (*obj)->funcs = &amdgpu_gem_object_funcs;
 
        return 0;
 }
        return drm_gem_ttm_mmap(obj, vma);
 }
 
-static const struct drm_gem_object_funcs amdgpu_gem_object_funcs = {
+const struct drm_gem_object_funcs amdgpu_gem_object_funcs = {
        .free = amdgpu_gem_object_free,
        .open = amdgpu_gem_object_open,
        .close = amdgpu_gem_object_close,
 
 #define AMDGPU_GEM_DOMAIN_MAX          0x3
 #define gem_to_amdgpu_bo(gobj) container_of((gobj), struct amdgpu_bo, tbo.base)
 
+extern const struct drm_gem_object_funcs amdgpu_gem_object_funcs;
+
 unsigned long amdgpu_gem_timeout(uint64_t timeout_ns);
 
 /*
 
        if (bo == NULL)
                return -ENOMEM;
        drm_gem_private_object_init(adev_to_drm(adev), &bo->tbo.base, size);
+       bo->tbo.base.funcs = &amdgpu_gem_object_funcs;
        bo->vm_bo = NULL;
        bo->preferred_domains = bp->preferred_domain ? bp->preferred_domain :
                bp->domain;
        if (bo == NULL)
                return NULL;
 
-       ttm_bo_get(&bo->tbo);
+       drm_gem_object_get(&bo->tbo.base);
        return bo;
 }
 
  */
 void amdgpu_bo_unref(struct amdgpu_bo **bo)
 {
-       struct ttm_buffer_object *tbo;
-
        if ((*bo) == NULL)
                return;
 
-       tbo = &((*bo)->tbo);
-       ttm_bo_put(tbo);
+       drm_gem_object_put(&(*bo)->tbo.base);
        *bo = NULL;
 }