amdgpu: add support for querying VM faults information
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 24 Feb 2023 09:01:53 +0000 (10:01 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 10 Oct 2023 08:25:07 +0000 (10:25 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
amdgpu/amdgpu-symbols.txt
amdgpu/amdgpu.h
amdgpu/amdgpu_gpu_info.c

index d41d9c2..1f7f56c 100644 (file)
@@ -63,6 +63,7 @@ amdgpu_query_crtc_from_id
 amdgpu_query_firmware_version
 amdgpu_query_gds_info
 amdgpu_query_gpu_info
+amdgpu_query_gpuvm_fault_info
 amdgpu_query_heap_info
 amdgpu_query_hw_ip_count
 amdgpu_query_hw_ip_info
index 5ef2524..1cd96f8 100644 (file)
@@ -1283,6 +1283,22 @@ int amdgpu_query_video_caps_info(amdgpu_device_handle dev, unsigned cap_type,
                                  unsigned size, void *value);
 
 /**
+ * Query information about VM faults
+ *
+ * The return sizeof(struct drm_amdgpu_info_gpuvm_fault)
+ *
+ * \param   dev         - \c [in] Device handle. See #amdgpu_device_initialize()
+ * \param   size        - \c [in] Size of the returned value.
+ * \param   value       - \c [out] Pointer to the return value.
+ *
+ * \return   0 on success\n
+ *          <0 - Negative POSIX Error code
+ *
+*/
+int amdgpu_query_gpuvm_fault_info(amdgpu_device_handle dev, unsigned size,
+                                 void *value);
+
+/**
  * Read a set of consecutive memory-mapped registers.
  * Not all registers are allowed to be read by userspace.
  *
index 9f8695c..1a5143a 100644 (file)
@@ -346,3 +346,17 @@ drm_public int amdgpu_query_video_caps_info(amdgpu_device_handle dev, unsigned c
        return drmCommandWrite(dev->fd, DRM_AMDGPU_INFO, &request,
                               sizeof(struct drm_amdgpu_info));
 }
+
+drm_public int amdgpu_query_gpuvm_fault_info(amdgpu_device_handle dev,
+                                            unsigned size, void *value)
+{
+       struct drm_amdgpu_info request;
+
+       memset(&request, 0, sizeof(request));
+       request.return_pointer = (uintptr_t)value;
+       request.return_size = size;
+       request.query = AMDGPU_INFO_GPUVM_FAULT;
+
+       return drmCommandWrite(dev->fd, DRM_AMDGPU_INFO, &request,
+                              sizeof(struct drm_amdgpu_info));
+}