for stream performance monitor.

Signed-off-by: James Zhu <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c |  3 +++
 drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c      | 14 ++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h      |  3 +++
 3 files changed, 20 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
index 05ecb8e3855a..b760b0720591 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_profiler.c
@@ -50,6 +50,9 @@ int amdgpu_profiler_ioctl(
                                        AMDGPU_PROFILER_VERSION_MINOR;
                return 0;
 
+       case AMDGPU_PROFILER_SPM:
+               return amdgpu_spm_ioctl(dev, &args->spm, filp);
+
        default:
                dev_err(adev->dev, "Invalid option: %i", args->op);
                return -EINVAL;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
index 619ff4ce0773..e7d16359551f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
@@ -47,6 +47,20 @@ static int amdgpu_spm_release(struct amdgpu_spm_mgr 
*spm_mgr, struct drm_file *f
        return 0;
 }
 
+int amdgpu_spm_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_spm_args *args = data;
+
+       switch (args->op) {
+       default:
+               dev_err(adev->dev, "Invalid option: %i\n", args->op);
+               return -EINVAL;
+       }
+}
+
 int amdgpu_spm_mgr_init(struct amdgpu_spm_mgr *spm_mgr)
 {
        amdgpu_spm_init_device(spm_mgr);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
index 1460b87dc55d..3728f227bd61 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
@@ -27,6 +27,9 @@ struct amdgpu_spm_mgr {
        struct drm_file *file;
 };
 
+int amdgpu_spm_ioctl(struct drm_device *dev, void __user *data,
+                      struct drm_file *filp);
+
 int amdgpu_spm_mgr_init(struct amdgpu_spm_mgr *spm_mgr);
 void amdgpu_spm_mgr_fini(struct amdgpu_spm_mgr *spm_mgr);
 void amdgpu_spm_interrupt(struct amdgpu_device *adev, int xcc_id);
-- 
2.34.1

Reply via email to