[Public] > -----Original Message----- > From: Huang, JinHuiEric <JinHuiEric.Huang@xxxxxxx> > Sent: Wednesday, June 28, 2023 5:23 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Kim, Jonathan <Jonathan.Kim@xxxxxxx>; Huang, JinHuiEric > <JinHuiEric.Huang@xxxxxxx> > Subject: [PATCH 4/5] drm/amdkfd: add xcc instance for debugger APIs > > Since GFX9 GPU has multiple xcc instances, this is to > implement this change in KFD for debugger APIs. > > Signed-off-by: Eric Huang <jinhuieric.huang@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h | 6 ++++-- > drivers/gpu/drm/amd/amdkfd/kfd_debug.c | 6 ++++-- > drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 6 ++++-- > 9 files changed, 36 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c > index f3f7e0437447..c7f88bfa1976 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c > @@ -126,7 +126,8 @@ static uint32_t > kgd_gfx_aldebaran_set_address_watch( > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid) > + uint32_t debug_vmid, > + uint32_t inst ) > { > uint32_t watch_address_high; > uint32_t watch_address_low; > @@ -163,7 +164,8 @@ static uint32_t > kgd_gfx_aldebaran_set_address_watch( > } > > static uint32_t kgd_gfx_aldebaran_clear_address_watch(struct > amdgpu_device *adev, > - uint32_t watch_id) > + uint32_t watch_id, > + uint32_t inst) > { > return 0; > } > 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 7aab8dcf46e1..17fe4e90f203 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 > @@ -454,7 +454,8 @@ static uint32_t kgd_gfx_v9_4_3_set_address_watch( > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid) > + uint32_t debug_vmid, > + uint32_t inst) > { > uint32_t watch_address_high; > uint32_t watch_address_low; > @@ -491,7 +492,8 @@ static uint32_t kgd_gfx_v9_4_3_set_address_watch( > } > > static uint32_t kgd_gfx_v9_4_3_clear_address_watch(struct amdgpu_device > *adev, > - uint32_t watch_id) > + uint32_t watch_id, > + uint32_t inst) > { > return 0; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > index 8ad7a7779e14..225b8929a878 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > @@ -886,7 +886,8 @@ uint32_t kgd_gfx_v10_set_address_watch(struct > amdgpu_device *adev, > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid) > + uint32_t debug_vmid, > + uint32_t inst) > { > uint32_t watch_address_high; > uint32_t watch_address_low; > @@ -942,7 +943,8 @@ uint32_t kgd_gfx_v10_set_address_watch(struct > amdgpu_device *adev, > } > > uint32_t kgd_gfx_v10_clear_address_watch(struct amdgpu_device *adev, > - uint32_t watch_id) > + uint32_t watch_id, > + uint32_t inst) > { > uint32_t watch_address_cntl; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > index e6b70196071a..c904a08b022b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > @@ -44,9 +44,11 @@ uint32_t kgd_gfx_v10_set_address_watch(struct > amdgpu_device *adev, > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid); > + uint32_t debug_vmid, > + uint32_t inst); > uint32_t kgd_gfx_v10_clear_address_watch(struct amdgpu_device *adev, > - uint32_t watch_id); > + uint32_t watch_id, > + uint32_t inst); > void kgd_gfx_v10_get_iq_wait_times(struct amdgpu_device *adev, uint32_t > *wait_times); We should instance the iq_wait_times as well to be consistent in what instance we're pulling grace period info from to reset the node's default grace period. Thanks, Jon > void kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device > *adev, > uint32_t wait_times, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c > index 91c3574ebed3..d5d0ca6a14d4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c > @@ -743,7 +743,8 @@ static uint32_t kgd_gfx_v11_set_address_watch(struct > amdgpu_device *adev, > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid) > + uint32_t debug_vmid, > + uint32_t inst) > { > uint32_t watch_address_high; > uint32_t watch_address_low; > @@ -780,7 +781,8 @@ static uint32_t kgd_gfx_v11_set_address_watch(struct > amdgpu_device *adev, > } > > static uint32_t kgd_gfx_v11_clear_address_watch(struct amdgpu_device > *adev, > - uint32_t watch_id) > + uint32_t watch_id, > + uint32_t inst) > { > return 0; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > index 51d93fb13ea3..7aabe6722726 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > @@ -822,7 +822,8 @@ uint32_t kgd_gfx_v9_set_address_watch(struct > amdgpu_device *adev, > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid) > + uint32_t debug_vmid, > + uint32_t inst) > { > uint32_t watch_address_high; > uint32_t watch_address_low; > @@ -878,7 +879,8 @@ uint32_t kgd_gfx_v9_set_address_watch(struct > amdgpu_device *adev, > } > > uint32_t kgd_gfx_v9_clear_address_watch(struct amdgpu_device *adev, > - uint32_t watch_id) > + uint32_t watch_id, > + uint32_t inst) > { > uint32_t watch_address_cntl; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > index 5f54bff0db49..519f05b86a05 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > @@ -89,9 +89,11 @@ uint32_t kgd_gfx_v9_set_address_watch(struct > amdgpu_device *adev, > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid); > + uint32_t debug_vmid, > + uint32_t inst); > uint32_t kgd_gfx_v9_clear_address_watch(struct amdgpu_device *adev, > - uint32_t watch_id); > + uint32_t watch_id, > + uint32_t inst); > void kgd_gfx_v9_get_iq_wait_times(struct amdgpu_device *adev, uint32_t > *wait_times); > void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device > *adev, > uint32_t wait_times, > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c > b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c > index fff3ccc04fa9..dcc49183364b 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c > @@ -427,7 +427,8 @@ 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( > pdd->dev->adev, > - watch_id); > + watch_id, > + 0); > amdgpu_gfx_off_ctrl(pdd->dev->adev, true); > > if (!pdd->dev->kfd->shared_resources.enable_mes) > @@ -466,7 +467,8 @@ int kfd_dbg_trap_set_dev_address_watch(struct > kfd_process_device *pdd, > watch_address_mask, > *watch_id, > watch_mode, > - pdd->dev->vm_info.last_vmid_kfd); > + pdd->dev->vm_info.last_vmid_kfd, > + 0); > amdgpu_gfx_off_ctrl(pdd->dev->adev, true); > > if (!pdd->dev->kfd->shared_resources.enable_mes) > diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > index d0df3381539f..3749d193238a 100644 > --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > @@ -315,9 +315,11 @@ struct kfd2kgd_calls { > uint32_t watch_address_mask, > uint32_t watch_id, > uint32_t watch_mode, > - uint32_t debug_vmid); > + uint32_t debug_vmid, > + uint32_t inst); > uint32_t (*clear_address_watch)(struct amdgpu_device *adev, > - uint32_t watch_id); > + uint32_t watch_id, > + uint32_t inst); > void (*get_iq_wait_times)(struct amdgpu_device *adev, > uint32_t *wait_times); > void (*build_grace_period_packet_info)(struct amdgpu_device *adev, > -- > 2.34.1