]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/xe/vma: Move pat_index to vma attributes
authorHimal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Thu, 21 Aug 2025 17:30:47 +0000 (23:00 +0530)
committerHimal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Tue, 26 Aug 2025 05:55:35 +0000 (11:25 +0530)
The PAT index determines how PTEs are encoded and can be modified by
madvise. Therefore, it is now part of the vma attributes.

Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20250821173104.3030148-4-himal.prasad.ghimiray@intel.com
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
drivers/gpu/drm/xe/xe_pt.c
drivers/gpu/drm/xe/xe_vm.c
drivers/gpu/drm/xe/xe_vm_types.h

index f3a39e734a906837db1042efa3c1297faae921a5..ba7a50bf3a2de18b5d6f55e601ef86c9ae33245f 100644 (file)
@@ -518,7 +518,7 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset,
 {
        struct xe_pt_stage_bind_walk *xe_walk =
                container_of(walk, typeof(*xe_walk), base);
-       u16 pat_index = xe_walk->vma->pat_index;
+       u16 pat_index = xe_walk->vma->attr.pat_index;
        struct xe_pt *xe_parent = container_of(parent, typeof(*xe_parent), base);
        struct xe_vm *vm = xe_walk->vm;
        struct xe_pt *xe_child;
index 529b6767caac2b6dda7f106530679ed7f9ea76e7..bb831629d1499f9a12a5572bb486bb5c2b18548b 100644 (file)
@@ -1223,7 +1223,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
        if (vm->xe->info.has_atomic_enable_pte_bit)
                vma->gpuva.flags |= XE_VMA_ATOMIC_PTE_BIT;
 
-       vma->pat_index = pat_index;
+       vma->attr.pat_index = pat_index;
 
        if (bo) {
                struct drm_gpuvm_bo *vm_bo;
@@ -2704,7 +2704,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 
                        if (op->base.remap.prev) {
                                vma = new_vma(vm, op->base.remap.prev,
-                                             old->pat_index, flags);
+                                             old->attr.pat_index, flags);
                                if (IS_ERR(vma))
                                        return PTR_ERR(vma);
 
@@ -2734,7 +2734,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 
                        if (op->base.remap.next) {
                                vma = new_vma(vm, op->base.remap.next,
-                                             old->pat_index, flags);
+                                             old->attr.pat_index, flags);
                                if (IS_ERR(vma))
                                        return PTR_ERR(vma);
 
index 8e8138c2b80a0dd96923f938a899cd0dfd21a7e3..c7b2bfa0a0d1a1cd6c1d265442fb367fa83cd078 100644 (file)
@@ -102,6 +102,11 @@ struct xe_vma_mem_attr {
         * values. These are defined in uapi/drm/xe_drm.h.
         */
        u32 atomic_access;
+
+       /**
+        * @pat_index: The pat index to use when encoding the PTEs for this vma.
+        */
+       u16 pat_index;
 };
 
 struct xe_vma {
@@ -152,11 +157,6 @@ struct xe_vma {
        /** @tile_staged: bind is staged for this VMA */
        u8 tile_staged;
 
-       /**
-        * @pat_index: The pat index to use when encoding the PTEs for this vma.
-        */
-       u16 pat_index;
-
        /**
         * @ufence: The user fence that was provided with MAP.
         * Needs to be signalled before UNMAP can be processed.