int ret;
  
        rfb->base.obj[0] = obj;
- 
-       /* Verify that bo size can fit the fb size. */
-       ret = drm_gem_fb_init_with_funcs(dev, &rfb->base, file_priv, mode_cmd,
-                                        &amdgpu_fb_funcs);
+       drm_helper_mode_fill_fb_struct(dev, &rfb->base, mode_cmd);
+       ret = drm_framebuffer_init(dev, &rfb->base, &amdgpu_fb_funcs);
        if (ret)
                goto err;
 +      /* Verify that the modifier is supported. */
 +      if (!drm_any_plane_has_format(dev, mode_cmd->pixel_format,
 +                                    mode_cmd->modifier[0])) {
 +              struct drm_format_name_buf format_name;
 +              drm_dbg_kms(dev,
 +                          "unsupported pixel format %s / modifier 0x%llx\n",
 +                          drm_get_format_name(mode_cmd->pixel_format,
 +                                              &format_name),
 +                          mode_cmd->modifier[0]);
 +
 +              ret = -EINVAL;
 +              goto err;
 +      }
  
        ret = amdgpu_display_framebuffer_init(dev, rfb, mode_cmd, obj);
        if (ret)