Skip to content

Commit 6c2c897

Browse files
changzhualexdeucher
authored andcommitted
drm/amdgpu: initialize vm_inv_eng0_sem for gfxhub and mmhub
SW must acquire/release one of the vm_invalidate_eng*_sem around the invalidation req/ack. Through this way,it can avoid losing invalidate acknowledge state across power-gating off cycle. To use vm_invalidate_eng*_sem, it needs to initialize vm_invalidate_eng*_sem firstly. Signed-off-by: changzhu <[email protected]> Reviewed-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected]
1 parent 1b34de7 commit 6c2c897

File tree

6 files changed

+13
-0
lines changed

6 files changed

+13
-0
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ struct amdgpu_gmc_fault {
7777
struct amdgpu_vmhub {
7878
uint32_t ctx0_ptb_addr_lo32;
7979
uint32_t ctx0_ptb_addr_hi32;
80+
uint32_t vm_inv_eng0_sem;
8081
uint32_t vm_inv_eng0_req;
8182
uint32_t vm_inv_eng0_ack;
8283
uint32_t vm_context0_cntl;

drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,8 @@ void gfxhub_v1_0_init(struct amdgpu_device *adev)
367367
hub->ctx0_ptb_addr_hi32 =
368368
SOC15_REG_OFFSET(GC, 0,
369369
mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32);
370+
hub->vm_inv_eng0_sem =
371+
SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG0_SEM);
370372
hub->vm_inv_eng0_req =
371373
SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG0_REQ);
372374
hub->vm_inv_eng0_ack =

drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ void gfxhub_v2_0_init(struct amdgpu_device *adev)
356356
hub->ctx0_ptb_addr_hi32 =
357357
SOC15_REG_OFFSET(GC, 0,
358358
mmGCVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32);
359+
hub->vm_inv_eng0_sem =
360+
SOC15_REG_OFFSET(GC, 0, mmGCVM_INVALIDATE_ENG0_SEM);
359361
hub->vm_inv_eng0_req =
360362
SOC15_REG_OFFSET(GC, 0, mmGCVM_INVALIDATE_ENG0_REQ);
361363
hub->vm_inv_eng0_ack =

drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ void mmhub_v1_0_init(struct amdgpu_device *adev)
420420
hub->ctx0_ptb_addr_hi32 =
421421
SOC15_REG_OFFSET(MMHUB, 0,
422422
mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32);
423+
hub->vm_inv_eng0_sem =
424+
SOC15_REG_OFFSET(MMHUB, 0, mmVM_INVALIDATE_ENG0_SEM);
423425
hub->vm_inv_eng0_req =
424426
SOC15_REG_OFFSET(MMHUB, 0, mmVM_INVALIDATE_ENG0_REQ);
425427
hub->vm_inv_eng0_ack =

drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,8 @@ void mmhub_v2_0_init(struct amdgpu_device *adev)
348348
hub->ctx0_ptb_addr_hi32 =
349349
SOC15_REG_OFFSET(MMHUB, 0,
350350
mmMMVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32);
351+
hub->vm_inv_eng0_sem =
352+
SOC15_REG_OFFSET(MMHUB, 0, mmMMVM_INVALIDATE_ENG0_SEM);
351353
hub->vm_inv_eng0_req =
352354
SOC15_REG_OFFSET(MMHUB, 0, mmMMVM_INVALIDATE_ENG0_REQ);
353355
hub->vm_inv_eng0_ack =

drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,10 @@ void mmhub_v9_4_init(struct amdgpu_device *adev)
504504
SOC15_REG_OFFSET(MMHUB, 0,
505505
mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32) +
506506
i * MMHUB_INSTANCE_REGISTER_OFFSET;
507+
hub[i]->vm_inv_eng0_sem =
508+
SOC15_REG_OFFSET(MMHUB, 0,
509+
mmVML2VC0_VM_INVALIDATE_ENG0_SEM) +
510+
i * MMHUB_INSTANCE_REGISTER_OFFSET;
507511
hub[i]->vm_inv_eng0_req =
508512
SOC15_REG_OFFSET(MMHUB, 0,
509513
mmVML2VC0_VM_INVALIDATE_ENG0_REQ) +

0 commit comments

Comments
 (0)