diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch new file mode 100644 index 00000000..3ecb345d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch @@ -0,0 +1,76 @@ +From e753f7bf4704e5bb78b7da93a49e87fe688056ca Mon Sep 17 00:00:00 2001 +From: Monk Liu <Monk.Liu@amd.com> +Date: Tue, 17 Oct 2017 14:58:01 +0800 +Subject: [PATCH 2063/4131] drm/amdgpu:implement ctx query2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +this query will give flag bits to indicate what happend +on the given context + +Change-Id: I638efef736de77519388199d000ca8f62b4dc89a +Signed-off-by: Monk Liu <Monk.Liu@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 37 +++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +index 51cb1ff..10c1eeb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +@@ -244,6 +244,40 @@ static int amdgpu_ctx_query(struct amdgpu_device *adev, + return 0; + } + ++static int amdgpu_ctx_query2(struct amdgpu_device *adev, ++ struct amdgpu_fpriv *fpriv, uint32_t id, ++ union drm_amdgpu_ctx_out *out) ++{ ++ struct amdgpu_ctx *ctx; ++ struct amdgpu_ctx_mgr *mgr; ++ ++ if (!fpriv) ++ return -EINVAL; ++ ++ mgr = &fpriv->ctx_mgr; ++ mutex_lock(&mgr->lock); ++ ctx = idr_find(&mgr->ctx_handles, id); ++ if (!ctx) { ++ mutex_unlock(&mgr->lock); ++ return -EINVAL; ++ } ++ ++ out->state.flags = 0x0; ++ out->state.hangs = 0x0; ++ ++ if (ctx->reset_counter != atomic_read(&adev->gpu_reset_counter)) ++ out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_RESET; ++ ++ if (ctx->vram_lost_counter != atomic_read(&adev->vram_lost_counter)) ++ out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST; ++ ++ if (atomic_read(&ctx->guilty)) ++ out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_GUILTY; ++ ++ mutex_unlock(&mgr->lock); ++ return 0; ++} ++ + int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, + struct drm_file *filp) + { +@@ -275,6 +309,9 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data, + case AMDGPU_CTX_OP_QUERY_STATE: + r = amdgpu_ctx_query(adev, fpriv, id, &args->out); + break; ++ case AMDGPU_CTX_OP_QUERY_STATE2: ++ r = amdgpu_ctx_query2(adev, fpriv, id, &args->out); ++ break; + default: + return -EINVAL; + } +-- +2.7.4 + |