mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 08:31:37 +00:00
drm/amdgpu: fix huge page handling on Vega10
We accidentially set the huge flag on the parent instead of the childs. This caused some VM faults under memory pressure. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Tested-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
4d454e9ffd
commit
c1a17777eb
@ -1632,13 +1632,6 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params,
|
||||
continue;
|
||||
}
|
||||
|
||||
/* First check if the entry is already handled */
|
||||
if (cursor.pfn < frag_start) {
|
||||
cursor.entry->huge = true;
|
||||
amdgpu_vm_pt_next(adev, &cursor);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If it isn't already handled it can't be a huge page */
|
||||
if (cursor.entry->huge) {
|
||||
/* Add the entry to the relocated list to update it. */
|
||||
@ -1701,8 +1694,17 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params,
|
||||
}
|
||||
} while (frag_start < entry_end);
|
||||
|
||||
if (frag >= shift)
|
||||
if (amdgpu_vm_pt_descendant(adev, &cursor)) {
|
||||
/* Mark all child entries as huge */
|
||||
while (cursor.pfn < frag_start) {
|
||||
cursor.entry->huge = true;
|
||||
amdgpu_vm_pt_next(adev, &cursor);
|
||||
}
|
||||
|
||||
} else if (frag >= shift) {
|
||||
/* or just move on to the next on the same level. */
|
||||
amdgpu_vm_pt_next(adev, &cursor);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user