Skip to content

Commit 4cf8ffe

Browse files
mbrost05Thomas Hellström
authored andcommitted
drm/xe: Add XE_VMA_PTE_64K VMA flag
Add XE_VMA_PTE_64K VMA flag to ensure skipping rebinds does not cross 64k page boundaries. Fixes: 8f33b4f ("drm/xe: Avoid doing rebinds") Fixes: c47794b ("drm/xe: Set max pte size when skipping rebinds") Signed-off-by: Matthew Brost <[email protected]> Reviewed-by: Thomas Hellström <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 15f0e0c) Signed-off-by: Thomas Hellström <[email protected]>
1 parent ecfac05 commit 4cf8ffe

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

drivers/gpu/drm/xe/xe_pt.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -499,10 +499,12 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset,
499499
* this device *requires* 64K PTE size for VRAM, fail.
500500
*/
501501
if (level == 0 && !xe_parent->is_compact) {
502-
if (xe_pt_is_pte_ps64K(addr, next, xe_walk))
502+
if (xe_pt_is_pte_ps64K(addr, next, xe_walk)) {
503+
xe_walk->vma->gpuva.flags |= XE_VMA_PTE_64K;
503504
pte |= XE_PTE_PS64;
504-
else if (XE_WARN_ON(xe_walk->needs_64K))
505+
} else if (XE_WARN_ON(xe_walk->needs_64K)) {
505506
return -EINVAL;
507+
}
506508
}
507509

508510
ret = xe_pt_insert_entry(xe_walk, xe_parent, offset, NULL, pte);

drivers/gpu/drm/xe/xe_vm.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2192,6 +2192,8 @@ static u64 xe_vma_max_pte_size(struct xe_vma *vma)
21922192
return SZ_1G;
21932193
else if (vma->gpuva.flags & XE_VMA_PTE_2M)
21942194
return SZ_2M;
2195+
else if (vma->gpuva.flags & XE_VMA_PTE_64K)
2196+
return SZ_64K;
21952197
else if (vma->gpuva.flags & XE_VMA_PTE_4K)
21962198
return SZ_4K;
21972199

@@ -2207,6 +2209,9 @@ static void xe_vma_set_pte_size(struct xe_vma *vma, u64 size)
22072209
case SZ_2M:
22082210
vma->gpuva.flags |= XE_VMA_PTE_2M;
22092211
break;
2212+
case SZ_64K:
2213+
vma->gpuva.flags |= XE_VMA_PTE_64K;
2214+
break;
22102215
case SZ_4K:
22112216
vma->gpuva.flags |= XE_VMA_PTE_4K;
22122217
break;

drivers/gpu/drm/xe/xe_vm_types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ struct xe_vm;
2929
#define XE_VMA_PTE_4K (DRM_GPUVA_USERBITS << 5)
3030
#define XE_VMA_PTE_2M (DRM_GPUVA_USERBITS << 6)
3131
#define XE_VMA_PTE_1G (DRM_GPUVA_USERBITS << 7)
32+
#define XE_VMA_PTE_64K (DRM_GPUVA_USERBITS << 8)
3233

3334
/** struct xe_userptr - User pointer */
3435
struct xe_userptr {

0 commit comments

Comments
 (0)