amdgpu: add amdgpu_cs_query_reset_state2 for AMDGPU_CTX_OP_QUERY_STATE2
authorMarek Olšák <marek.olsak@amd.com>
Wed, 9 Oct 2019 23:18:08 +0000 (19:18 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 15 Oct 2019 19:20:38 +0000 (15:20 -0400)
This is a better GPU reset query.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
amdgpu/amdgpu-symbol-check
amdgpu/amdgpu.h
amdgpu/amdgpu_cs.c

index ea83850..7d748ee 100755 (executable)
@@ -46,6 +46,7 @@ amdgpu_cs_fence_to_handle
 amdgpu_cs_import_syncobj
 amdgpu_cs_query_fence_status
 amdgpu_cs_query_reset_state
+amdgpu_cs_query_reset_state2
 amdgpu_query_sw_info
 amdgpu_cs_signal_semaphore
 amdgpu_cs_submit
index 66e45f7..bcac4cb 100644 (file)
@@ -942,6 +942,21 @@ int amdgpu_cs_ctx_override_priority(amdgpu_device_handle dev,
 int amdgpu_cs_query_reset_state(amdgpu_context_handle context,
                                uint32_t *state, uint32_t *hangs);
 
+/**
+ * Query reset state for the specific GPU Context.
+ *
+ * \param   context - \c [in]  GPU Context handle
+ * \param   flags   - \c [out] A combination of AMDGPU_CTX_QUERY2_FLAGS_*
+ *
+ * \return   0 on success\n
+ *          <0 - Negative POSIX Error code
+ *
+ * \sa amdgpu_cs_ctx_create()
+ *
+*/
+int amdgpu_cs_query_reset_state2(amdgpu_context_handle context,
+                                uint64_t *flags);
+
 /*
  * Command Buffers Management
  *
index 20d5aef..5650295 100644 (file)
@@ -188,6 +188,25 @@ drm_public int amdgpu_cs_query_reset_state(amdgpu_context_handle context,
        return r;
 }
 
+drm_public int amdgpu_cs_query_reset_state2(amdgpu_context_handle context,
+                                           uint64_t *flags)
+{
+       union drm_amdgpu_ctx args;
+       int r;
+
+       if (!context)
+               return -EINVAL;
+
+       memset(&args, 0, sizeof(args));
+       args.in.op = AMDGPU_CTX_OP_QUERY_STATE2;
+       args.in.ctx_id = context->id;
+       r = drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_CTX,
+                               &args, sizeof(args));
+       if (!r)
+               *flags = args.out.state.flags;
+       return r;
+}
+
 /**
  * Submit command to kernel DRM
  * \param   dev - \c [in]  Device handle