Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec681545 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: separate bo_va structure



Split that into vm_bo_base and bo_va to allow other uses as well.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4ab4016a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1487,7 +1487,7 @@ amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
			    addr > mapping->last)
				continue;

			*bo = lobj->bo_va->bo;
			*bo = lobj->bo_va->base.bo;
			return mapping;
		}

@@ -1496,7 +1496,7 @@ amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
			    addr > mapping->last)
				continue;

			*bo = lobj->bo_va->bo;
			*bo = lobj->bo_va->base.bo;
			return mapping;
		}
	}
+2 −2
Original line number Diff line number Diff line
@@ -621,7 +621,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,

	switch (args->operation) {
	case AMDGPU_VA_OP_MAP:
		r = amdgpu_vm_alloc_pts(adev, bo_va->vm, args->va_address,
		r = amdgpu_vm_alloc_pts(adev, bo_va->base.vm, args->va_address,
					args->map_size);
		if (r)
			goto error_backoff;
@@ -641,7 +641,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
						args->map_size);
		break;
	case AMDGPU_VA_OP_REPLACE:
		r = amdgpu_vm_alloc_pts(adev, bo_va->vm, args->va_address,
		r = amdgpu_vm_alloc_pts(adev, bo_va->base.vm, args->va_address,
					args->map_size);
		if (r)
			goto error_backoff;
+4 −10
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@

#define AMDGPU_BO_INVALID_OFFSET	LONG_MAX

/* bo virtual addresses in a vm */
struct amdgpu_bo_va_mapping {
	struct list_head		list;
	struct rb_node			rb;
@@ -43,26 +44,19 @@ struct amdgpu_bo_va_mapping {
	uint64_t			flags;
};

/* bo virtual addresses in a specific vm */
/* User space allocated BO in a VM */
struct amdgpu_bo_va {
	struct amdgpu_vm_bo_base	base;

	/* protected by bo being reserved */
	struct list_head		bo_list;
	struct dma_fence	        *last_pt_update;
	unsigned			ref_count;

	/* protected by vm mutex and spinlock */
	struct list_head		vm_status;

	/* mappings for this bo_va */
	struct list_head		invalids;
	struct list_head		valids;

	/* constant after initialization */
	struct amdgpu_vm		*vm;
	struct amdgpu_bo		*bo;
};


struct amdgpu_bo {
	/* Protected by tbo.reserved */
	u32				preferred_domains;
+2 −2
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ TRACE_EVENT(amdgpu_vm_bo_map,
			     ),

	    TP_fast_assign(
			   __entry->bo = bo_va ? bo_va->bo : NULL;
			   __entry->bo = bo_va ? bo_va->base.bo : NULL;
			   __entry->start = mapping->start;
			   __entry->last = mapping->last;
			   __entry->offset = mapping->offset;
@@ -308,7 +308,7 @@ TRACE_EVENT(amdgpu_vm_bo_unmap,
			     ),

	    TP_fast_assign(
			   __entry->bo = bo_va->bo;
			   __entry->bo = bo_va->base.bo;
			   __entry->start = mapping->start;
			   __entry->last = mapping->last;
			   __entry->offset = mapping->offset;
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
		return -ENOMEM;
	}

	r = amdgpu_vm_alloc_pts(adev, (*bo_va)->vm, AMDGPU_CSA_VADDR,
	r = amdgpu_vm_alloc_pts(adev, (*bo_va)->base.vm, AMDGPU_CSA_VADDR,
				AMDGPU_CSA_SIZE);
	if (r) {
		DRM_ERROR("failed to allocate pts for static CSA, err=%d\n", r);
Loading