diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1248-drm-amdgpu-Only-add-rqs-for-initialized-rings.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1248-drm-amdgpu-Only-add-rqs-for-initialized-rings.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1248-drm-amdgpu-Only-add-rqs-for-initialized-rings.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1248-drm-amdgpu-Only-add-rqs-for-initialized-rings.patch new file mode 100644 index 00000000..e9f0afac --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1248-drm-amdgpu-Only-add-rqs-for-initialized-rings.patch @@ -0,0 +1,54 @@ +From cccbbee881d554428a0497227ed2ce87c6aad56d Mon Sep 17 00:00:00 2001 +From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> +Date: Wed, 30 Jan 2019 02:53:20 +0100 +Subject: [PATCH 1248/2940] drm/amdgpu: Only add rqs for initialized rings. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +I don't see another way to figure out if a ring is initialized if +the hardware block might not be initialized. + +Entities have been fixed up to handle num_rqs = 0. + +Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +index 9c704f958d0e..f0f22e20a747 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +@@ -126,6 +126,7 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev, + struct amdgpu_ring *rings[AMDGPU_MAX_RINGS]; + struct drm_sched_rq *rqs[AMDGPU_MAX_RINGS]; + unsigned num_rings; ++ unsigned num_rqs = 0; + + switch (i) { + case AMDGPU_HW_IP_GFX: +@@ -168,12 +169,16 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev, + break; + } + +- for (j = 0; j < num_rings; ++j) +- rqs[j] = &rings[j]->sched.sched_rq[priority]; ++ for (j = 0; j < num_rings; ++j) { ++ if (!rings[j]->adev) ++ continue; ++ ++ rqs[num_rqs++] = &rings[j]->sched.sched_rq[priority]; ++ } + + for (j = 0; j < amdgpu_ctx_num_entities[i]; ++j) + r = drm_sched_entity_init(&ctx->entities[i][j].entity, +- rqs, num_rings, &ctx->guilty); ++ rqs, num_rqs, &ctx->guilty); + if (r) + goto error_cleanup_entities; + } +-- +2.17.1 + |