aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2063-drm-amdgpu-implement-ctx-query2.patch
diff options
context:
space:
mode:
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.patch76
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
+