From: Jonathan Kim <jonathan....@amd.com>

Set watch points for all xcc instances on GFX943.

Signed-off-by: Jonathan Kim <jonathan....@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehl...@amd.com>
Signed-off-by: Eric Huang <jinhuieric.hu...@amd.com>
---
 .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c  |  6 ++++--
 drivers/gpu/drm/amd/amdkfd/kfd_debug.c           | 16 ++++++++++------
 2 files changed, 14 insertions(+), 8 deletions(-)

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 17fe4e90f203..9c32b9fbd866 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
@@ -480,11 +480,13 @@ static uint32_t kgd_gfx_v9_4_3_set_address_watch(
                        VALID,
                        1);
 
-       WREG32_RLC((SOC15_REG_OFFSET(GC, 0, regTCP_WATCH0_ADDR_H) +
+       WREG32_RLC((SOC15_REG_OFFSET(GC, GET_INST(GC, inst),
+                       regTCP_WATCH0_ADDR_H) +
                        (watch_id * TCP_WATCH_STRIDE)),
                        watch_address_high);
 
-       WREG32_RLC((SOC15_REG_OFFSET(GC, 0, regTCP_WATCH0_ADDR_L) +
+       WREG32_RLC((SOC15_REG_OFFSET(GC, GET_INST(GC, inst),
+                       regTCP_WATCH0_ADDR_L) +
                        (watch_id * TCP_WATCH_STRIDE)),
                        watch_address_low);
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
index dcc49183364b..b4ec809c8892 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
@@ -413,7 +413,8 @@ static bool kfd_dbg_owns_dev_watch_id(struct 
kfd_process_device *pdd, int watch_
 int kfd_dbg_trap_clear_dev_address_watch(struct kfd_process_device *pdd,
                                        uint32_t watch_id)
 {
-       int r;
+       int xcc_id, r;
+       uint32_t xcc_mask = pdd->dev->xcc_mask;
 
        if (!kfd_dbg_owns_dev_watch_id(pdd, watch_id))
                return -EINVAL;
@@ -425,10 +426,11 @@ int kfd_dbg_trap_clear_dev_address_watch(struct 
kfd_process_device *pdd,
        }
 
        amdgpu_gfx_off_ctrl(pdd->dev->adev, false);
-       pdd->watch_points[watch_id] = pdd->dev->kfd2kgd->clear_address_watch(
+       for_each_inst(xcc_id, xcc_mask)
+               pdd->watch_points[watch_id] = 
pdd->dev->kfd2kgd->clear_address_watch(
                                                        pdd->dev->adev,
                                                        watch_id,
-                                                       0);
+                                                       xcc_id);
        amdgpu_gfx_off_ctrl(pdd->dev->adev, true);
 
        if (!pdd->dev->kfd->shared_resources.enable_mes)
@@ -447,7 +449,8 @@ int kfd_dbg_trap_set_dev_address_watch(struct 
kfd_process_device *pdd,
                                        uint32_t *watch_id,
                                        uint32_t watch_mode)
 {
-       int r = kfd_dbg_get_dev_watch_id(pdd, watch_id);
+       int xcc_id, r = kfd_dbg_get_dev_watch_id(pdd, watch_id);
+       uint32_t xcc_mask = pdd->dev->xcc_mask;
 
        if (r)
                return r;
@@ -461,14 +464,15 @@ int kfd_dbg_trap_set_dev_address_watch(struct 
kfd_process_device *pdd,
        }
 
        amdgpu_gfx_off_ctrl(pdd->dev->adev, false);
-       pdd->watch_points[*watch_id] = pdd->dev->kfd2kgd->set_address_watch(
+       for_each_inst(xcc_id, xcc_mask)
+               pdd->watch_points[*watch_id] = 
pdd->dev->kfd2kgd->set_address_watch(
                                pdd->dev->adev,
                                watch_address,
                                watch_address_mask,
                                *watch_id,
                                watch_mode,
                                pdd->dev->vm_info.last_vmid_kfd,
-                               0);
+                               xcc_id);
        amdgpu_gfx_off_ctrl(pdd->dev->adev, true);
 
        if (!pdd->dev->kfd->shared_resources.enable_mes)
-- 
2.34.1

Reply via email to