diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 38 | 
1 files changed, 23 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 9c1d491d742e..82312a7bc6ad 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -522,6 +522,9 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,  	struct amdgpu_bo_list_entry *e;  	struct list_head duplicates;  	unsigned i, tries = 10; +	struct amdgpu_bo *gds; +	struct amdgpu_bo *gws; +	struct amdgpu_bo *oa;  	int r;  	INIT_LIST_HEAD(&p->validated); @@ -652,31 +655,36 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,  	amdgpu_cs_report_moved_bytes(p->adev, p->bytes_moved,  				     p->bytes_moved_vis); +  	if (p->bo_list) { -		struct amdgpu_bo *gds = p->bo_list->gds_obj; -		struct amdgpu_bo *gws = p->bo_list->gws_obj; -		struct amdgpu_bo *oa = p->bo_list->oa_obj;  		struct amdgpu_vm *vm = &fpriv->vm;  		unsigned i; +		gds = p->bo_list->gds_obj; +		gws = p->bo_list->gws_obj; +		oa = p->bo_list->oa_obj;  		for (i = 0; i < p->bo_list->num_entries; i++) {  			struct amdgpu_bo *bo = p->bo_list->array[i].robj;  			p->bo_list->array[i].bo_va = amdgpu_vm_bo_find(vm, bo);  		} +	} else { +		gds = p->adev->gds.gds_gfx_bo; +		gws = p->adev->gds.gws_gfx_bo; +		oa = p->adev->gds.oa_gfx_bo; +	} -		if (gds) { -			p->job->gds_base = amdgpu_bo_gpu_offset(gds); -			p->job->gds_size = amdgpu_bo_size(gds); -		} -		if (gws) { -			p->job->gws_base = amdgpu_bo_gpu_offset(gws); -			p->job->gws_size = amdgpu_bo_size(gws); -		} -		if (oa) { -			p->job->oa_base = amdgpu_bo_gpu_offset(oa); -			p->job->oa_size = amdgpu_bo_size(oa); -		} +	if (gds) { +		p->job->gds_base = amdgpu_bo_gpu_offset(gds); +		p->job->gds_size = amdgpu_bo_size(gds); +	} +	if (gws) { +		p->job->gws_base = amdgpu_bo_gpu_offset(gws); +		p->job->gws_size = amdgpu_bo_size(gws); +	} +	if (oa) { +		p->job->oa_base = amdgpu_bo_gpu_offset(oa); +		p->job->oa_size = amdgpu_bo_size(oa);  	}  	if (!r && p->uf_entry.robj) {  | 
