drm/amdgpu: Set XNACK per process on GC 9.4.3
authorAmber Lin <Amber.Lin@amd.com>
Wed, 23 Mar 2022 15:01:52 +0000 (11:01 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:43:26 +0000 (09:43 -0400)
Set RETRY_PERMISSION_OR_INVALID_PAGE_FAULT bit in VM_CONTEXT1_CNTL
as well so XNACK can be enabled in the SQ per process.

Signed-off-by: Amber Lin <Amber.Lin@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c
drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c

index e5016fe..d746216 100644 (file)
@@ -328,13 +328,15 @@ static void gfxhub_v1_2_setup_vmid_config(struct amdgpu_device *adev)
                                            PAGE_TABLE_BLOCK_SIZE,
                                            block_size);
                        /* Send no-retry XNACK on fault to suppress VM fault storm.
-                        * On Aldebaran, XNACK can be enabled in the SQ per-process.
+                        * On 9.4.2 and 9.4.3, XNACK can be enabled in
+                        * the SQ per-process.
                         * Retry faults need to be enabled for that to work.
                         */
                        tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL,
                                            RETRY_PERMISSION_OR_INVALID_PAGE_FAULT,
                                            !adev->gmc.noretry ||
-                                           adev->asic_type == CHIP_ALDEBARAN);
+                                           adev->ip_versions[GC_HWIP][0] == IP_VERSION(9, 4, 2) ||
+                                           adev->ip_versions[GC_HWIP][0] == IP_VERSION(9, 4, 3));
                        WREG32_SOC15_OFFSET(GC, j, regVM_CONTEXT1_CNTL,
                                            i * hub->ctx_distance, tmp);
                        WREG32_SOC15_OFFSET(GC, j,
index 9ec06f9..3883758 100644 (file)
@@ -288,7 +288,7 @@ static void mmhub_v1_8_setup_vmid_config(struct amdgpu_device *adev)
                tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL,
                                    PAGE_TABLE_BLOCK_SIZE,
                                    block_size);
-               /* On Aldebaran, XNACK can be enabled in the SQ per-process.
+               /* On 9.4.3, XNACK can be enabled in the SQ per-process.
                 * Retry faults need to be enabled for that to work.
                 */
                tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL,