Commit 778bf584 authored by Siwei He's avatar Siwei He Committed by Alex Deucher
Browse files

drm/amdgpu: OR init_pte_flags into invalid leaf PTE updates



Invalid leaf clears that only set AMDGPU_PTE_EXECUTABLE match the old
GMC9 fault-priority workaround but omit adev->gmc.init_pte_flags.
On GFX12 that includes AMDGPU_PTE_IS_PTE; without it, some cleared
PTEs can fault as no-retry and bypass the SVM/XNACK handler when a
VA is reused after a BO unmap.

Apply init_pte_flags in amdgpu_vm_pte_update_flags() alongside
EXECUTABLE so range-driven clears (e.g. amdgpu_vm_clear_freed) match
amdgpu_vm_pt_clear() for leaf templates.

Signed-off-by: default avatarSiwei He <siwei.he@amd.com>
Reviewed-by: default avatarPhilip Yang <philip.yang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 9d47b2c36b9a6c6b844c33cab407a5d7ad102234)
parent 0e48f27d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -693,8 +693,11 @@ static void amdgpu_vm_pte_update_flags(struct amdgpu_vm_update_params *params,
		   !(flags & AMDGPU_PTE_VALID) &&
		   !(flags & AMDGPU_PTE_PRT_FLAG(params->adev))) {

		/* Workaround for fault priority problem on GMC9 */
		flags |= AMDGPU_PTE_EXECUTABLE;
		/* Workaround for fault priority problem on GMC9 and GFX12,
		 * EXECUTABLE for GMC9 fault priority and init_pte_flags
		 * (e.g. AMDGPU_PTE_IS_PTE on GFX12)
		 */
		flags |= AMDGPU_PTE_EXECUTABLE | adev->gmc.init_pte_flags;
	}

	/*