diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c index bc5fd8ebab5d..69c5d22f29bd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -146,7 +146,7 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,  				       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |  				       AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS |  				       AMDGPU_GEM_CREATE_VRAM_CLEARED, -				       true, NULL, &gobj); +				       ttm_bo_type_kernel, NULL, &gobj);  	if (ret) {  		pr_err("failed to allocate framebuffer (%d)\n", aligned_size);  		return -ENOMEM; @@ -168,11 +168,19 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,  	} -	ret = amdgpu_bo_pin(abo, domain, NULL); +	ret = amdgpu_bo_pin(abo, domain);  	if (ret) {  		amdgpu_bo_unreserve(abo);  		goto out_unref;  	} + +	ret = amdgpu_ttm_alloc_gart(&abo->tbo); +	if (ret) { +		amdgpu_bo_unreserve(abo); +		dev_err(adev->dev, "%p bind failed\n", abo); +		goto out_unref; +	} +  	ret = amdgpu_bo_kmap(abo, NULL);  	amdgpu_bo_unreserve(abo);  	if (ret) { @@ -365,8 +373,8 @@ void amdgpu_fbdev_fini(struct amdgpu_device *adev)  void amdgpu_fbdev_set_suspend(struct amdgpu_device *adev, int state)  {  	if (adev->mode_info.rfbdev) -		drm_fb_helper_set_suspend(&adev->mode_info.rfbdev->helper, -			state); +		drm_fb_helper_set_suspend_unlocked(&adev->mode_info.rfbdev->helper, +						   state);  }  int amdgpu_fbdev_total_size(struct amdgpu_device *adev) |