diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 916b6b8cf7d9..6dfdff58bffd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -1057,6 +1057,9 @@ static int amdgpu_cs_patch_ibs(struct amdgpu_cs_parser *p,  			r = amdgpu_ring_parse_cs(ring, p, job, ib);  			if (r)  				return r; + +			if (ib->sa_bo) +				ib->gpu_addr =  amdgpu_sa_bo_gpu_addr(ib->sa_bo);  		} else {  			ib->ptr = (uint32_t *)kptr;  			r = amdgpu_ring_patch_cs_in_place(ring, p, job, ib); @@ -1778,7 +1781,7 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,  	struct ttm_operation_ctx ctx = { false, false };  	struct amdgpu_vm *vm = &fpriv->vm;  	struct amdgpu_bo_va_mapping *mapping; -	int r; +	int i, r;  	addr /= AMDGPU_GPU_PAGE_SIZE; @@ -1793,13 +1796,13 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,  	if (dma_resv_locking_ctx((*bo)->tbo.base.resv) != &parser->exec.ticket)  		return -EINVAL; -	if (!((*bo)->flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)) { -		(*bo)->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; -		amdgpu_bo_placement_from_domain(*bo, (*bo)->allowed_domains); -		r = ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, &ctx); -		if (r) -			return r; -	} +	(*bo)->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; +	amdgpu_bo_placement_from_domain(*bo, (*bo)->allowed_domains); +	for (i = 0; i < (*bo)->placement.num_placement; i++) +		(*bo)->placements[i].flags |= TTM_PL_FLAG_CONTIGUOUS; +	r = ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, &ctx); +	if (r) +		return r;  	return amdgpu_ttm_alloc_gart(&(*bo)->tbo);  } | 
