operation AMDGPU_PROFILER_VERSION.

Signed-off-by: James Zhu <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c      |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c | 25 ++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index ed58931de804..18d83f0c47a7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -3045,6 +3045,7 @@ const struct drm_ioctl_desc amdgpu_ioctls_kms[] = {
        DRM_IOCTL_DEF_DRV(AMDGPU_USERQ_SIGNAL, amdgpu_userq_signal_ioctl, 
DRM_AUTH|DRM_RENDER_ALLOW),
        DRM_IOCTL_DEF_DRV(AMDGPU_USERQ_WAIT, amdgpu_userq_wait_ioctl, 
DRM_AUTH|DRM_RENDER_ALLOW),
        DRM_IOCTL_DEF_DRV(AMDGPU_GEM_LIST_HANDLES, 
amdgpu_gem_list_handles_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+       DRM_IOCTL_DEF_DRV(AMDGPU_PROFILER, amdgpu_profiler_ioctl, 
DRM_AUTH|DRM_RENDER_ALLOW),
 };
 
 static const struct drm_driver amdgpu_kms_driver = {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
index 98c04ab01132..5e4a1c36198c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
@@ -32,6 +32,31 @@
 #define AMDGPU_PROFILER_VERSION_MAJOR 1
 #define AMDGPU_PROFILER_VERSION_MINOR 1
 
+int amdgpu_profiler_ioctl(
+               struct drm_device *dev,
+               void __user *data,
+               struct drm_file *filp)
+{
+       struct amdgpu_fpriv *fpriv = filp->driver_priv;
+       struct amdgpu_device *adev = fpriv_to_adev(fpriv);
+       struct drm_amdgpu_profiler_args *args = data;
+
+       dev_dbg(adev->dev, "Profiler IOCTL op %d on render node %d xcp %d",
+               args->op, adev->ddev.render->index, 
AMDGPU_XCP_ID(fpriv->xcp_id));
+
+       switch (args->op) {
+       case AMDGPU_PROFILER_VERSION:
+               args->version = AMDGPU_PROFILER_VERSION_MAJOR << 16 |
+                                       AMDGPU_PROFILER_VERSION_MINOR;
+               return 0;
+
+       default:
+               dev_err(adev->dev, "Invalid option: %i", args->op);
+               return -EINVAL;
+       }
+       return -EINVAL;
+}
+
 int amdgpu_profiler_mgr_init(
                struct amdgpu_profiler_mgr *prof_mgr,
                struct amdgpu_fpriv *fpriv)
-- 
2.34.1

Reply via email to