Lines Matching defs:ppgtt

88 static void gen8_ppgtt_notify_vgt(struct i915_ppgtt *ppgtt, bool create)
90 struct drm_i915_private *i915 = ppgtt->vm.i915;
91 struct intel_uncore *uncore = ppgtt->vm.gt->uncore;
96 atomic_inc(px_used(ppgtt->pd)); /* never remove */
98 atomic_dec(px_used(ppgtt->pd));
102 if (i915_vm_is_4lvl(&ppgtt->vm)) {
103 const u64 daddr = px_dma(ppgtt->pd);
115 const u64 daddr = i915_page_dir_dma_addr(ppgtt, i);
190 struct i915_ppgtt * const ppgtt = i915_vm_to_ppgtt(vm);
193 return ppgtt->pd;
195 return i915_pd_entry(ppgtt->pd, gen8_pd_index(idx, vm->top));
224 struct i915_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
230 gen8_ppgtt_notify_vgt(ppgtt, false);
232 if (ppgtt->pd)
233 __gen8_ppgtt_cleanup(vm, ppgtt->pd,
455 gen8_ppgtt_insert_pte(struct i915_ppgtt *ppgtt,
463 const gen8_pte_t pte_encode = ppgtt->vm.pte_encode(0, pat_index, flags);
740 struct i915_ppgtt * const ppgtt = i915_vm_to_ppgtt(vm);
755 idx = gen8_ppgtt_insert_pte(ppgtt, pdp, &iter, idx,
892 static int gen8_preallocate_top_level_pdp(struct i915_ppgtt *ppgtt)
894 struct i915_address_space *vm = &ppgtt->vm;
895 struct i915_page_directory *pd = ppgtt->pd;
996 * GEN8 legacy ppgtt programming is accomplished through a max 4 PDP registers
1006 struct i915_ppgtt *ppgtt;
1009 ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL);
1010 if (!ppgtt)
1013 ppgtt_init(ppgtt, gt, lmem_pt_obj_flags);
1014 ppgtt->vm.top = i915_vm_is_4lvl(&ppgtt->vm) ? 3 : 2;
1015 ppgtt->vm.pd_shift = ilog2(SZ_4K * SZ_4K / sizeof(gen8_pte_t));
1025 ppgtt->vm.has_read_only = !IS_GRAPHICS_VER(gt->i915, 11, 12);
1028 ppgtt->vm.alloc_pt_dma = alloc_pt_lmem;
1030 ppgtt->vm.alloc_pt_dma = alloc_pt_dma;
1038 ppgtt->vm.alloc_scratch_dma = alloc_pt_dma;
1041 ppgtt->vm.pte_encode = gen12_pte_encode;
1043 ppgtt->vm.pte_encode = gen8_pte_encode;
1045 ppgtt->vm.bind_async_flags = I915_VMA_LOCAL_BIND;
1046 ppgtt->vm.insert_entries = gen8_ppgtt_insert;
1048 ppgtt->vm.insert_page = xehpsdv_ppgtt_insert_entry;
1050 ppgtt->vm.insert_page = gen8_ppgtt_insert_entry;
1051 ppgtt->vm.allocate_va_range = gen8_ppgtt_alloc;
1052 ppgtt->vm.clear_range = gen8_ppgtt_clear;
1053 ppgtt->vm.foreach = gen8_ppgtt_foreach;
1054 ppgtt->vm.cleanup = gen8_ppgtt_cleanup;
1056 err = gen8_init_scratch(&ppgtt->vm);
1060 pd = gen8_alloc_top_pd(&ppgtt->vm);
1065 ppgtt->pd = pd;
1067 if (!i915_vm_is_4lvl(&ppgtt->vm)) {
1068 err = gen8_preallocate_top_level_pdp(ppgtt);
1074 gen8_ppgtt_notify_vgt(ppgtt, true);
1076 err = gen8_init_rsvd(&ppgtt->vm);
1080 return ppgtt;
1083 i915_vm_put(&ppgtt->vm);