diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 628632efabc8..85ad355815fe 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -132,13 +132,18 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)  	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {  		unsigned int visible_pfn = adev->gmc.visible_vram_size >> PAGE_SHIFT; -		places[c].fpfn = 0; -		places[c].lpfn = 0; +		if (adev->gmc.mem_partitions && abo->mem_id >= 0) { +			places[c].fpfn = adev->gmc.mem_partitions[abo->mem_id].range.fpfn; +			places[c].lpfn = adev->gmc.mem_partitions[abo->mem_id].range.lpfn; +		} else { +			places[c].fpfn = 0; +			places[c].lpfn = 0; +		}  		places[c].mem_type = TTM_PL_VRAM;  		places[c].flags = 0;  		if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) -			places[c].lpfn = visible_pfn; +			places[c].lpfn = min_not_zero(places[c].lpfn, visible_pfn);  		else if (adev->gmc.real_vram_size != adev->gmc.visible_vram_size)  			places[c].flags |= TTM_PL_FLAG_TOPDOWN;  | 
