diff options
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 | 
2 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index f764803c53a4..48cb33e5b382 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -926,8 +926,10 @@ amdgpu_display_user_framebuffer_create(struct drm_device *dev,  				       struct drm_file *file_priv,  				       const struct drm_mode_fb_cmd2 *mode_cmd)  { -	struct drm_gem_object *obj;  	struct amdgpu_framebuffer *amdgpu_fb; +	struct drm_gem_object *obj; +	struct amdgpu_bo *bo; +	uint32_t domains;  	int ret;  	obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]); @@ -938,7 +940,9 @@ amdgpu_display_user_framebuffer_create(struct drm_device *dev,  	}  	/* Handle is imported dma-buf, so cannot be migrated to VRAM for scanout */ -	if (obj->import_attach) { +	bo = gem_to_amdgpu_bo(obj); +	domains = amdgpu_display_supported_domains(drm_to_adev(dev), bo->flags); +	if (obj->import_attach && !(domains & AMDGPU_GEM_DOMAIN_GTT)) {  		drm_dbg_kms(dev, "Cannot create framebuffer from imported dma_buf\n");  		return ERR_PTR(-EINVAL);  	} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 996147111c3e..4b29b8205442 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -897,7 +897,7 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,  		return -EINVAL;  	/* A shared bo cannot be migrated to VRAM */ -	if (bo->prime_shared_count) { +	if (bo->prime_shared_count || bo->tbo.base.import_attach) {  		if (domain & AMDGPU_GEM_DOMAIN_GTT)  			domain = AMDGPU_GEM_DOMAIN_GTT;  		else  | 
