* [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb in kfd @ 2018-10-22 18:41 Zhao, Yong [not found] ` <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Zhao, Yong @ 2018-10-22 18:41 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, brahma_sw_dev; +Cc: Zhao, Yong Those register settings have been done in gfxhub_v1_0_program_invalidation() and mmhub_v1_0_program_invalidation(). Change-Id: I9b9b44f17ac2a6ff0c9c78f91885665da75543d0 Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 17 ----------------- 1 file changed, 17 deletions(-) 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 60b5f56c..3ade5d5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -60,11 +60,6 @@ #define mmMMHUB_VM_INVALIDATE_ENG16_ACK 0x0705 #define mmMMHUB_VM_INVALIDATE_ENG16_ACK_BASE_IDX 0 -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32 0x0727 -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32_BASE_IDX 0 -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32 0x0728 -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32_BASE_IDX 0 - #define V9_PIPE_PER_MEC (4) #define V9_QUEUES_PER_PIPE_MEC (8) @@ -772,18 +767,6 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) * TODO 2: support range-based invalidation, requires kfg2kgd * interface change */ - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_LO32), - 0xffffffff); - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_HI32), - 0x0000001f); - - WREG32(SOC15_REG_OFFSET(MMHUB, 0, - mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32), - 0xffffffff); - WREG32(SOC15_REG_OFFSET(MMHUB, 0, - mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32), - 0x0000001f); - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_REQ), req); WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_REQ), -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org>]
* [PATCH 2/3] drm/amdgpu: Expose gmc_v9_0_flush_gpu_tlb_helper() for kfd to use [not found] ` <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> @ 2018-10-22 18:41 ` Zhao, Yong [not found] ` <1540233703-4020-2-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 2018-10-22 18:41 ` [PATCH 3/3] drm/amdkfd: Use functions from amdgpu to invalidate vmid in kfd Zhao, Yong 2018-10-22 23:06 ` [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb " Kuehling, Felix 2 siblings, 1 reply; 5+ messages in thread From: Zhao, Yong @ 2018-10-22 18:41 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, brahma_sw_dev; +Cc: Zhao, Yong Change-Id: I3dcd71955297c53b181f82e7078981230c642c01 Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> --- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 64 ++++++++++++++++++++--------------- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h | 3 ++ 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c index f35d7a5..6f96545 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c @@ -293,14 +293,15 @@ static void gmc_v9_0_set_irq_funcs(struct amdgpu_device *adev) adev->gmc.vm_fault.funcs = &gmc_v9_0_irq_funcs; } -static uint32_t gmc_v9_0_get_invalidate_req(unsigned int vmid) +static uint32_t gmc_v9_0_get_invalidate_req(unsigned int vmid, + uint32_t flush_type) { u32 req = 0; /* invalidate using legacy mode on vmid*/ req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, PER_VMID_INVALIDATE_REQ, 1 << vmid); - req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, FLUSH_TYPE, 0); + req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, FLUSH_TYPE, flush_type); req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PTES, 1); req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PDE0, 1); req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PDE1, 1); @@ -354,32 +355,15 @@ static signed long amdgpu_kiq_reg_write_reg_wait(struct amdgpu_device *adev, return r; } -/* - * GART - * VMID 0 is the physical GPU addresses as used by the kernel. - * VMIDs 1-15 are used for userspace clients and are handled - * by the amdgpu vm/hsa code. - */ - -/** - * gmc_v9_0_flush_gpu_tlb - gart tlb flush callback - * - * @adev: amdgpu_device pointer - * @vmid: vm instance to flush - * - * Flush the TLB for the requested page table. - */ -static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, - uint32_t vmid) +void gmc_v9_0_flush_gpu_tlb_helper(struct amdgpu_device *adev, uint32_t vmid, + uint32_t flush_type, uint32_t eng, bool lock) { - /* Use register 17 for GART */ - const unsigned eng = 17; unsigned i, j; int r; for (i = 0; i < AMDGPU_MAX_VMHUBS; ++i) { struct amdgpu_vmhub *hub = &adev->vmhub[i]; - u32 tmp = gmc_v9_0_get_invalidate_req(vmid); + u32 tmp = gmc_v9_0_get_invalidate_req(vmid, flush_type); if (adev->gfx.kiq.ring.ready && (amdgpu_sriov_runtime(adev) || !amdgpu_sriov_vf(adev)) && @@ -390,7 +374,8 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, continue; } - spin_lock(&adev->gmc.invalidate_lock); + if (lock) + spin_lock(&adev->gmc.invalidate_lock); WREG32_NO_KIQ(hub->vm_inv_eng0_req + eng, tmp); @@ -403,7 +388,8 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, cpu_relax(); } if (j < 100) { - spin_unlock(&adev->gmc.invalidate_lock); + if (lock) + spin_unlock(&adev->gmc.invalidate_lock); continue; } @@ -416,20 +402,44 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, udelay(1); } if (j < adev->usec_timeout) { - spin_unlock(&adev->gmc.invalidate_lock); + if (lock) + spin_unlock(&adev->gmc.invalidate_lock); continue; } - spin_unlock(&adev->gmc.invalidate_lock); + if (lock) + spin_unlock(&adev->gmc.invalidate_lock); DRM_ERROR("Timeout waiting for VM flush ACK!\n"); } } +/* + * GART + * VMID 0 is the physical GPU addresses as used by the kernel. + * VMIDs 1-15 are used for userspace clients and are handled + * by the amdgpu vm/hsa code. + */ + +/** + * gmc_v9_0_flush_gpu_tlb - gart tlb flush callback + * + * @adev: amdgpu_device pointer + * @vmid: vm instance to flush + * + * Flush the TLB for the requested page table. + */ +static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, + uint32_t vmid) +{ + /* Use engine 17 for amdgpu */ + gmc_v9_0_flush_gpu_tlb_helper(adev, vmid, 0, 17, true); +} + static uint64_t gmc_v9_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring, unsigned vmid, uint64_t pd_addr) { struct amdgpu_device *adev = ring->adev; struct amdgpu_vmhub *hub = &adev->vmhub[ring->funcs->vmhub]; - uint32_t req = gmc_v9_0_get_invalidate_req(vmid); + uint32_t req = gmc_v9_0_get_invalidate_req(vmid, 0); unsigned eng = ring->vm_inv_eng; amdgpu_ring_emit_wreg(ring, hub->ctx0_ptb_addr_lo32 + (2 * vmid), diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h index 1fd178a6..56f504a 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h @@ -33,4 +33,7 @@ void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, uint64_t page_table_base); +void gmc_v9_0_flush_gpu_tlb_helper(struct amdgpu_device *adev, uint32_t vmid, + uint32_t flush_type, uint32_t eng, bool lock); + #endif -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1540233703-4020-2-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH 2/3] drm/amdgpu: Expose gmc_v9_0_flush_gpu_tlb_helper() for kfd to use [not found] ` <1540233703-4020-2-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> @ 2018-10-23 7:49 ` Koenig, Christian 0 siblings, 0 replies; 5+ messages in thread From: Koenig, Christian @ 2018-10-23 7:49 UTC (permalink / raw) To: Zhao, Yong, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, brahma_sw_dev Am 22.10.18 um 20:41 schrieb Zhao, Yong: > Change-Id: I3dcd71955297c53b181f82e7078981230c642c01 > Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 64 ++++++++++++++++++++--------------- > drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h | 3 ++ > 2 files changed, 40 insertions(+), 27 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > index f35d7a5..6f96545 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > @@ -293,14 +293,15 @@ static void gmc_v9_0_set_irq_funcs(struct amdgpu_device *adev) > adev->gmc.vm_fault.funcs = &gmc_v9_0_irq_funcs; > } > > -static uint32_t gmc_v9_0_get_invalidate_req(unsigned int vmid) > +static uint32_t gmc_v9_0_get_invalidate_req(unsigned int vmid, > + uint32_t flush_type) > { > u32 req = 0; > > /* invalidate using legacy mode on vmid*/ > req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, > PER_VMID_INVALIDATE_REQ, 1 << vmid); > - req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, FLUSH_TYPE, 0); > + req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, FLUSH_TYPE, flush_type); > req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PTES, 1); > req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PDE0, 1); > req = REG_SET_FIELD(req, VM_INVALIDATE_ENG0_REQ, INVALIDATE_L2_PDE1, 1); > @@ -354,32 +355,15 @@ static signed long amdgpu_kiq_reg_write_reg_wait(struct amdgpu_device *adev, > return r; > } > > -/* > - * GART > - * VMID 0 is the physical GPU addresses as used by the kernel. > - * VMIDs 1-15 are used for userspace clients and are handled > - * by the amdgpu vm/hsa code. > - */ > - > -/** > - * gmc_v9_0_flush_gpu_tlb - gart tlb flush callback > - * > - * @adev: amdgpu_device pointer > - * @vmid: vm instance to flush > - * > - * Flush the TLB for the requested page table. > - */ > -static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, > - uint32_t vmid) > +void gmc_v9_0_flush_gpu_tlb_helper(struct amdgpu_device *adev, uint32_t vmid, > + uint32_t flush_type, uint32_t eng, bool lock) This one needs kernel documentation and a better name would be nice. In general sounds like a nice cleanup, but I exposing ASIC specific functions is not necessarily a good idea. We should probably move the ASIC specific KFD code into this file instead. Christian. > { > - /* Use register 17 for GART */ > - const unsigned eng = 17; > unsigned i, j; > int r; > > for (i = 0; i < AMDGPU_MAX_VMHUBS; ++i) { > struct amdgpu_vmhub *hub = &adev->vmhub[i]; > - u32 tmp = gmc_v9_0_get_invalidate_req(vmid); > + u32 tmp = gmc_v9_0_get_invalidate_req(vmid, flush_type); > > if (adev->gfx.kiq.ring.ready && > (amdgpu_sriov_runtime(adev) || !amdgpu_sriov_vf(adev)) && > @@ -390,7 +374,8 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, > continue; > } > > - spin_lock(&adev->gmc.invalidate_lock); > + if (lock) > + spin_lock(&adev->gmc.invalidate_lock); > > WREG32_NO_KIQ(hub->vm_inv_eng0_req + eng, tmp); > > @@ -403,7 +388,8 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, > cpu_relax(); > } > if (j < 100) { > - spin_unlock(&adev->gmc.invalidate_lock); > + if (lock) > + spin_unlock(&adev->gmc.invalidate_lock); > continue; > } > > @@ -416,20 +402,44 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, > udelay(1); > } > if (j < adev->usec_timeout) { > - spin_unlock(&adev->gmc.invalidate_lock); > + if (lock) > + spin_unlock(&adev->gmc.invalidate_lock); > continue; > } > - spin_unlock(&adev->gmc.invalidate_lock); > + if (lock) > + spin_unlock(&adev->gmc.invalidate_lock); > DRM_ERROR("Timeout waiting for VM flush ACK!\n"); > } > } > > +/* > + * GART > + * VMID 0 is the physical GPU addresses as used by the kernel. > + * VMIDs 1-15 are used for userspace clients and are handled > + * by the amdgpu vm/hsa code. > + */ > + > +/** > + * gmc_v9_0_flush_gpu_tlb - gart tlb flush callback > + * > + * @adev: amdgpu_device pointer > + * @vmid: vm instance to flush > + * > + * Flush the TLB for the requested page table. > + */ > +static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev, > + uint32_t vmid) > +{ > + /* Use engine 17 for amdgpu */ > + gmc_v9_0_flush_gpu_tlb_helper(adev, vmid, 0, 17, true); > +} > + > static uint64_t gmc_v9_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring, > unsigned vmid, uint64_t pd_addr) > { > struct amdgpu_device *adev = ring->adev; > struct amdgpu_vmhub *hub = &adev->vmhub[ring->funcs->vmhub]; > - uint32_t req = gmc_v9_0_get_invalidate_req(vmid); > + uint32_t req = gmc_v9_0_get_invalidate_req(vmid, 0); > unsigned eng = ring->vm_inv_eng; > > amdgpu_ring_emit_wreg(ring, hub->ctx0_ptb_addr_lo32 + (2 * vmid), > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h > index 1fd178a6..56f504a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h > @@ -33,4 +33,7 @@ void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, > void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid, > uint64_t page_table_base); > > +void gmc_v9_0_flush_gpu_tlb_helper(struct amdgpu_device *adev, uint32_t vmid, > + uint32_t flush_type, uint32_t eng, bool lock); > + > #endif _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/3] drm/amdkfd: Use functions from amdgpu to invalidate vmid in kfd [not found] ` <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 2018-10-22 18:41 ` [PATCH 2/3] drm/amdgpu: Expose gmc_v9_0_flush_gpu_tlb_helper() for kfd to use Zhao, Yong @ 2018-10-22 18:41 ` Zhao, Yong 2018-10-22 23:06 ` [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb " Kuehling, Felix 2 siblings, 0 replies; 5+ messages in thread From: Zhao, Yong @ 2018-10-22 18:41 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, brahma_sw_dev; +Cc: Zhao, Yong Change-Id: I306305e43d4b4032316909b3f4e3f9f5ca4520ae Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 32 +---------------------- 1 file changed, 1 insertion(+), 31 deletions(-) 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 3ade5d5..18f161b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -48,17 +48,6 @@ #include "soc15d.h" #include "gmc_v9_0.h" -/* HACK: MMHUB and GC both have VM-related register with the same - * names but different offsets. Define the MMHUB register we need here - * with a prefix. A proper solution would be to move the functions - * programming these registers into gfx_v9_0.c and mmhub_v1_0.c - * respectively. - */ -#define mmMMHUB_VM_INVALIDATE_ENG16_REQ 0x06f3 -#define mmMMHUB_VM_INVALIDATE_ENG16_REQ_BASE_IDX 0 - -#define mmMMHUB_VM_INVALIDATE_ENG16_ACK 0x0705 -#define mmMMHUB_VM_INVALIDATE_ENG16_ACK_BASE_IDX 0 #define V9_PIPE_PER_MEC (4) #define V9_QUEUES_PER_PIPE_MEC (8) @@ -742,13 +731,6 @@ static uint16_t get_atc_vmid_pasid_mapping_pasid(struct kgd_dev *kgd, static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) { struct amdgpu_device *adev = (struct amdgpu_device *) kgd; - uint32_t req = (1 << vmid) | - (0 << VM_INVALIDATE_ENG16_REQ__FLUSH_TYPE__SHIFT) | /* legacy */ - VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PTES_MASK | - VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE0_MASK | - VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE1_MASK | - VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE2_MASK | - VM_INVALIDATE_ENG16_REQ__INVALIDATE_L1_PTES_MASK; mutex_lock(&adev->srbm_mutex); @@ -767,19 +749,7 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) * TODO 2: support range-based invalidation, requires kfg2kgd * interface change */ - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_REQ), req); - - WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_REQ), - req); - - while (!(RREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ACK)) & - (1 << vmid))) - cpu_relax(); - - while (!(RREG32(SOC15_REG_OFFSET(MMHUB, 0, - mmMMHUB_VM_INVALIDATE_ENG16_ACK)) & - (1 << vmid))) - cpu_relax(); + gmc_v9_0_flush_gpu_tlb_helper(adev, vmid, 0, 16, false); mutex_unlock(&adev->srbm_mutex); -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb in kfd [not found] ` <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 2018-10-22 18:41 ` [PATCH 2/3] drm/amdgpu: Expose gmc_v9_0_flush_gpu_tlb_helper() for kfd to use Zhao, Yong 2018-10-22 18:41 ` [PATCH 3/3] drm/amdkfd: Use functions from amdgpu to invalidate vmid in kfd Zhao, Yong @ 2018-10-22 23:06 ` Kuehling, Felix 2 siblings, 0 replies; 5+ messages in thread From: Kuehling, Felix @ 2018-10-22 23:06 UTC (permalink / raw) To: Zhao, Yong, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, brahma_sw_dev Patch 1 is Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Patch 2: I'm not sure we need the "lock" parameter and the invalidation engine parameter. If we're serious about consolidating TLB invalidation between amdgpu and KFD, I think we should use the same invalidation engine and the same lock. Then you also don't need to take the adev->srbm_mutex any more in write_vmid_invalidate_request, which we were abusing for this purpose. Regards, Felix On 2018-10-22 2:41 p.m., Zhao, Yong wrote: > Those register settings have been done in gfxhub_v1_0_program_invalidation() > and mmhub_v1_0_program_invalidation(). > > Change-Id: I9b9b44f17ac2a6ff0c9c78f91885665da75543d0 > Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 17 ----------------- > 1 file changed, 17 deletions(-) > > 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 60b5f56c..3ade5d5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > @@ -60,11 +60,6 @@ > #define mmMMHUB_VM_INVALIDATE_ENG16_ACK 0x0705 > #define mmMMHUB_VM_INVALIDATE_ENG16_ACK_BASE_IDX 0 > > -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32 0x0727 > -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32_BASE_IDX 0 > -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32 0x0728 > -#define mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32_BASE_IDX 0 > - > #define V9_PIPE_PER_MEC (4) > #define V9_QUEUES_PER_PIPE_MEC (8) > > @@ -772,18 +767,6 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) > * TODO 2: support range-based invalidation, requires kfg2kgd > * interface change > */ > - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_LO32), > - 0xffffffff); > - WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_HI32), > - 0x0000001f); > - > - WREG32(SOC15_REG_OFFSET(MMHUB, 0, > - mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32), > - 0xffffffff); > - WREG32(SOC15_REG_OFFSET(MMHUB, 0, > - mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32), > - 0x0000001f); > - > WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_REQ), req); > > WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_REQ), _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-10-23 7:49 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-10-22 18:41 [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb in kfd Zhao, Yong [not found] ` <1540233703-4020-1-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 2018-10-22 18:41 ` [PATCH 2/3] drm/amdgpu: Expose gmc_v9_0_flush_gpu_tlb_helper() for kfd to use Zhao, Yong [not found] ` <1540233703-4020-2-git-send-email-Yong.Zhao-5C7GfCeVMHo@public.gmane.org> 2018-10-23 7:49 ` Koenig, Christian 2018-10-22 18:41 ` [PATCH 3/3] drm/amdkfd: Use functions from amdgpu to invalidate vmid in kfd Zhao, Yong 2018-10-22 23:06 ` [PATCH 1/3] drm/amdkfd: Remove unnecessary register setting when invalidating tlb " Kuehling, Felix
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.