From: Shiwu Zhang <shiwu.zh...@amd.com>

There are AMDGPU_MAX_VMHUBS of vmhub in maximum and need to init the
vm_inv_engs for all of them.

In this way, the below error can be ruled out.
[  217.317752] amdgpu 0000:02:00.0: amdgpu: no VM inv eng for ring sdma0

Signed-off-by: Shiwu Zhang <shiwu.zh...@amd.com>
Reviewed-by: Christian Koenig <christian.koe...@amd.com>
Reviewed-by: Le Ma <le...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index c6b2452e8258..14789a0ad6e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -503,22 +503,21 @@ void amdgpu_gmc_ras_fini(struct amdgpu_device *adev)
         *                    subject to change when ring number changes
         * Engine 17: Gart flushes
         */
-#define GFXHUB_FREE_VM_INV_ENGS_BITMAP         0x1FFF3
-#define MMHUB_FREE_VM_INV_ENGS_BITMAP          0x1FFF3
+#define AMDGPU_VMHUB_INV_ENG_BITMAP            0x1FFF3
 
 int amdgpu_gmc_allocate_vm_inv_eng(struct amdgpu_device *adev)
 {
        struct amdgpu_ring *ring;
-       unsigned vm_inv_engs[AMDGPU_MAX_VMHUBS] =
-               {GFXHUB_FREE_VM_INV_ENGS_BITMAP, MMHUB_FREE_VM_INV_ENGS_BITMAP,
-               GFXHUB_FREE_VM_INV_ENGS_BITMAP};
+       unsigned vm_inv_engs[AMDGPU_MAX_VMHUBS] = {0};
        unsigned i;
        unsigned vmhub, inv_eng;
 
-       if (adev->enable_mes) {
+       /* init the vm inv eng for all vmhubs */
+       for_each_set_bit(i, adev->vmhubs_mask, AMDGPU_MAX_VMHUBS) {
+               vm_inv_engs[i] = AMDGPU_VMHUB_INV_ENG_BITMAP;
                /* reserve engine 5 for firmware */
-               for (vmhub = 0; vmhub < AMDGPU_MAX_VMHUBS; vmhub++)
-                       vm_inv_engs[vmhub] &= ~(1 << 5);
+               if (adev->enable_mes)
+                       vm_inv_engs[i] &= ~(1 << 5);
        }
 
        for (i = 0; i < adev->num_rings; ++i) {
-- 
2.39.2

Reply via email to