Add kgd->ptl_ctrl() callback so KFD can query/enable/disable
PTL state through the PSP performance monitor interface.

Signed-off-by: Perry Yuan <[email protected]>
Reviewed-by: Lijo Lazar <[email protected]>
Acked-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c | 13 ++++++++++++-
 drivers/gpu/drm/amd/include/kgd_kfd_interface.h     |  5 +++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c
index 89a45a9218f3..f491fd2e4ed9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c
@@ -520,6 +520,16 @@ static uint32_t 
kgd_gfx_v9_4_3_hqd_sdma_get_doorbell(struct amdgpu_device *adev,
        return is_active ? doorbell_off >> 2 : 0;
 }
 
+static uint32_t kgd_v9_4_3_ptl_ctrl(struct amdgpu_device *adev,
+                               uint32_t cmd,
+                               uint32_t *ptl_state,
+                               enum amdgpu_ptl_fmt *fmt1,
+                               enum amdgpu_ptl_fmt *fmt2)
+{
+       return psp_performance_monitor_hw(&adev->psp, cmd,
+                       ptl_state, fmt1, fmt2);
+}
+
 const struct kfd2kgd_calls gc_9_4_3_kfd2kgd = {
        .program_sh_mem_settings = kgd_gfx_v9_program_sh_mem_settings,
        .set_pasid_vmid_mapping = kgd_gfx_v9_4_3_set_pasid_vmid_mapping,
@@ -555,5 +565,6 @@ const struct kfd2kgd_calls gc_9_4_3_kfd2kgd = {
        .clear_address_watch = kgd_gfx_v9_4_3_clear_address_watch,
        .hqd_get_pq_addr = kgd_gfx_v9_hqd_get_pq_addr,
        .hqd_reset = kgd_gfx_v9_hqd_reset,
-       .hqd_sdma_get_doorbell = kgd_gfx_v9_4_3_hqd_sdma_get_doorbell
+       .hqd_sdma_get_doorbell = kgd_gfx_v9_4_3_hqd_sdma_get_doorbell,
+       .ptl_ctrl = kgd_v9_4_3_ptl_ctrl
 };
diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h 
b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
index 9aba8596faa7..295ce9364362 100644
--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@ -333,6 +333,11 @@ struct kfd2kgd_calls {
                              uint32_t inst, unsigned int utimeout);
        uint32_t (*hqd_sdma_get_doorbell)(struct amdgpu_device *adev,
                                          int engine, int queue);
+       uint32_t (*ptl_ctrl)(struct amdgpu_device *adev,
+                            uint32_t cmd,
+                            uint32_t *ptl_state,
+                            enum amdgpu_ptl_fmt *fmt1,
+                            enum amdgpu_ptl_fmt *fmt2);
 };
 
 #endif /* KGD_KFD_INTERFACE_H_INCLUDED */
-- 
2.34.1

Reply via email to