for RLC SPM interface.
Signed-off-by: James Zhu <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c | 18 ++++++++++++++++++
drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h | 1 +
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
index 08d62183b2e3..531d6370bb94 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
@@ -618,5 +618,5 @@ void amdgpu_rlc_spm_release(struct amdgpu_device *adev, int
xcc_id, struct amdgp
void amdgpu_rlc_spm_interrupt(struct amdgpu_device *adev, int xcc_id)
{
if (adev->kfd.dev)
- return; /* TODO: */
+ amdgpu_spm_interrupt(adev, xcc_id);
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
index 181aca333151..619ff4ce0773 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.c
@@ -60,3 +60,21 @@ void amdgpu_spm_mgr_fini(struct amdgpu_spm_mgr *spm_mgr)
spm_mgr->file = NULL;
}
}
+
+void amdgpu_spm_interrupt(struct amdgpu_device *adev, int xcc_id)
+{
+ uint8_t xcp_id;
+ struct amdgpu_spm_mgr *spm_mgr;
+
+ xcp_id = adev->xcp_mgr ?
+ fls(amdgpu_xcp_get_partition(adev->xcp_mgr, AMDGPU_XCP_GFX,
xcc_id)) - 1 : 0;
+
+ spm_mgr = &(adev->prof_mgr.prof_xcp_mgr[xcp_id].spm_mgr);
+
+ if (!spm_mgr) {
+ dev_dbg(adev->dev, "%s XCP ID = %d", __func__, xcp_id);
+ return;
+ }
+
+ /* TODO */
+}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
index e8a44fc1d278..1460b87dc55d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_spm.h
@@ -29,5 +29,6 @@ struct amdgpu_spm_mgr {
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);
#endif
--
2.34.1