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

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

drm/amdgpu: merge amd_sched_entity and amd_context_entity v2



Avoiding a couple of casts.

v2: rename c_entity to entity as well

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChunming Zhou <david1.zhou@amd.com>
parent 4cd7f42c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1015,7 +1015,7 @@ struct amdgpu_vm_manager {
struct amdgpu_ctx_ring {
	uint64_t		sequence;
	struct fence		*fences[AMDGPU_CTX_MAX_CS_PENDING];
	struct amd_context_entity c_entity;
	struct amd_sched_entity	entity;
};

struct amdgpu_ctx {
+2 −2
Original line number Diff line number Diff line
@@ -900,7 +900,7 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
		struct amdgpu_ring * ring =
			amdgpu_cs_parser_get_ring(adev, parser);
		parser->ibs[parser->num_ibs - 1].sequence = atomic64_inc_return(
			&parser->ctx->rings[ring->idx].c_entity.last_queued_v_seq);
			&parser->ctx->rings[ring->idx].entity.last_queued_v_seq);
		if (ring->is_pte_ring || (parser->bo_list && parser->bo_list->has_userptr)) {
			r = amdgpu_cs_parser_prepare_job(parser);
			if (r)
@@ -911,7 +911,7 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
		parser->run_job = amdgpu_cs_parser_run_job;
		parser->free_job = amdgpu_cs_parser_free_job;
		amd_sched_push_job(ring->scheduler,
				   &parser->ctx->rings[ring->idx].c_entity,
				   &parser->ctx->rings[ring->idx].entity,
				   parser);
		cs->out.handle = parser->ibs[parser->num_ibs - 1].sequence;
		up_read(&adev->exclusive_lock);
+9 −9
Original line number Diff line number Diff line
@@ -46,8 +46,8 @@ int amdgpu_ctx_init(struct amdgpu_device *adev, bool kernel,
				rq = &adev->rings[i]->scheduler->kernel_rq;
			else
				rq = &adev->rings[i]->scheduler->sched_rq;
			r = amd_context_entity_init(adev->rings[i]->scheduler,
						    &ctx->rings[i].c_entity,
			r = amd_sched_entity_init(adev->rings[i]->scheduler,
						  &ctx->rings[i].entity,
						  rq, amdgpu_sched_jobs);
			if (r)
				break;
@@ -55,8 +55,8 @@ int amdgpu_ctx_init(struct amdgpu_device *adev, bool kernel,

		if (i < adev->num_rings) {
			for (j = 0; j < i; j++)
				amd_context_entity_fini(adev->rings[j]->scheduler,
							&ctx->rings[j].c_entity);
				amd_sched_entity_fini(adev->rings[j]->scheduler,
						      &ctx->rings[j].entity);
			kfree(ctx);
			return r;
		}
@@ -75,8 +75,8 @@ void amdgpu_ctx_fini(struct amdgpu_ctx *ctx)

	if (amdgpu_enable_scheduler) {
		for (i = 0; i < adev->num_rings; i++)
			amd_context_entity_fini(adev->rings[i]->scheduler,
						&ctx->rings[i].c_entity);
			amd_sched_entity_fini(adev->rings[i]->scheduler,
					      &ctx->rings[i].entity);
	}
}

@@ -271,7 +271,7 @@ struct fence *amdgpu_ctx_get_fence(struct amdgpu_ctx *ctx,
	int r;

	if (amdgpu_enable_scheduler) {
		r = amd_sched_wait_emit(&cring->c_entity,
		r = amd_sched_wait_emit(&cring->entity,
					seq,
					false,
					-1);
@@ -281,7 +281,7 @@ struct fence *amdgpu_ctx_get_fence(struct amdgpu_ctx *ctx,

	spin_lock(&ctx->ring_lock);
	if (amdgpu_enable_scheduler)
		queued_seq = amd_sched_next_queued_seq(&cring->c_entity);
		queued_seq = amd_sched_next_queued_seq(&cring->entity);
	else
		queued_seq = cring->sequence;

+6 −6
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@
#include "amdgpu.h"

static int amdgpu_sched_prepare_job(struct amd_gpu_scheduler *sched,
				    struct amd_context_entity *c_entity,
				    struct amd_sched_entity *entity,
				    void *job)
{
	int r = 0;
@@ -51,7 +51,7 @@ static void amdgpu_fence_sched_cb(struct fence *f, struct fence_cb *cb)
}

static void amdgpu_sched_run_job(struct amd_gpu_scheduler *sched,
				 struct amd_context_entity *c_entity,
				 struct amd_sched_entity *entity,
				 struct amd_sched_job *job)
{
	int r = 0;
@@ -83,7 +83,7 @@ static void amdgpu_sched_run_job(struct amd_gpu_scheduler *sched,
			goto err;
	}

	amd_sched_emit(c_entity, sched_job->ibs[sched_job->num_ibs - 1].sequence);
	amd_sched_emit(entity, sched_job->ibs[sched_job->num_ibs - 1].sequence);

	mutex_unlock(&sched_job->job_lock);
	return;
@@ -136,13 +136,13 @@ int amdgpu_sched_ib_submit_kernel_helper(struct amdgpu_device *adev,
			return -ENOMEM;
		}
		sched_job->free_job = free_job;
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].c_entity.last_queued_v_seq);
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].entity.last_queued_v_seq);
		ibs[num_ibs - 1].sequence = v_seq;
		amd_sched_push_job(ring->scheduler,
				   &adev->kernel_ctx.rings[ring->idx].c_entity,
				   &adev->kernel_ctx.rings[ring->idx].entity,
				   sched_job);
		r = amd_sched_wait_emit(
			&adev->kernel_ctx.rings[ring->idx].c_entity,
			&adev->kernel_ctx.rings[ring->idx].entity,
			v_seq,
			false,
			-1);
+9 −9
Original line number Diff line number Diff line
@@ -379,12 +379,12 @@ static int amdgpu_vm_clear_bo(struct amdgpu_device *adev,
		sched_job->job_param.vm.bo = bo;
		sched_job->run_job = amdgpu_vm_run_job;
		sched_job->free_job = amdgpu_vm_free_job;
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].c_entity.last_queued_v_seq);
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].entity.last_queued_v_seq);
		ib->sequence = v_seq;
		amd_sched_push_job(ring->scheduler,
				   &adev->kernel_ctx.rings[ring->idx].c_entity,
				   &adev->kernel_ctx.rings[ring->idx].entity,
				   sched_job);
		r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].c_entity,
		r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].entity,
					v_seq,
					false,
					-1);
@@ -530,12 +530,12 @@ int amdgpu_vm_update_page_directory(struct amdgpu_device *adev,
			sched_job->job_param.vm.bo = pd;
			sched_job->run_job = amdgpu_vm_run_job;
			sched_job->free_job = amdgpu_vm_free_job;
			v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].c_entity.last_queued_v_seq);
			v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].entity.last_queued_v_seq);
			ib->sequence = v_seq;
			amd_sched_push_job(ring->scheduler,
					   &adev->kernel_ctx.rings[ring->idx].c_entity,
					   &adev->kernel_ctx.rings[ring->idx].entity,
					   sched_job);
			r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].c_entity,
			r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].entity,
						v_seq,
						false,
						-1);
@@ -883,12 +883,12 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
		sched_job->job_param.vm_mapping.fence = fence;
		sched_job->run_job = amdgpu_vm_bo_update_mapping_run_job;
		sched_job->free_job = amdgpu_vm_free_job;
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].c_entity.last_queued_v_seq);
		v_seq = atomic64_inc_return(&adev->kernel_ctx.rings[ring->idx].entity.last_queued_v_seq);
		ib->sequence = v_seq;
		amd_sched_push_job(ring->scheduler,
				   &adev->kernel_ctx.rings[ring->idx].c_entity,
				   &adev->kernel_ctx.rings[ring->idx].entity,
				   sched_job);
		r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].c_entity,
		r = amd_sched_wait_emit(&adev->kernel_ctx.rings[ring->idx].entity,
					v_seq,
					false,
					-1);
Loading