]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/adlp: Fix GEM VM asserts for DPT VMs
authorImre Deak <imre.deak@intel.com>
Mon, 24 May 2021 17:27:02 +0000 (20:27 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 25 May 2021 10:06:11 +0000 (13:06 +0300)
An object mapped via DPT can have remapped and rotated VMA instances
besides the normal VMA instance, similarly to GGTT VMA instances.
Adjust the corresponding VMA lookup asserts.

While at it also check if a DPT VM is passed incorrectly to
i915_vm_to_ppgtt().

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210524172703.2113058-2-imre.deak@intel.com
drivers/gpu/drm/i915/gt/intel_gtt.h
drivers/gpu/drm/i915/i915_vma.c
drivers/gpu/drm/i915/i915_vma.h

index 79f565aeb8c09f9d6bda87ffd2cdbaf34bdc09da..441644f2506a53f2d40952ceb7cebda499fe793a 100644 (file)
@@ -356,6 +356,7 @@ struct i915_ppgtt {
 
 #define i915_is_ggtt(vm) ((vm)->is_ggtt)
 #define i915_is_dpt(vm) ((vm)->is_dpt)
+#define i915_is_ggtt_or_dpt(vm) (i915_is_ggtt(vm) || i915_is_dpt(vm))
 
 int __must_check
 i915_vm_lock_objects(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww);
@@ -390,7 +391,7 @@ static inline struct i915_ppgtt *
 i915_vm_to_ppgtt(struct i915_address_space *vm)
 {
        BUILD_BUG_ON(offsetof(struct i915_ppgtt, vm));
-       GEM_BUG_ON(i915_is_ggtt(vm));
+       GEM_BUG_ON(i915_is_ggtt_or_dpt(vm));
        return container_of(vm, struct i915_ppgtt, vm);
 }
 
index 07490db51cdc3039bc05946a4b919e3d6c5df726..37a00992cec5826f805d0d9470deab0bba854480 100644 (file)
@@ -274,7 +274,7 @@ i915_vma_instance(struct drm_i915_gem_object *obj,
 {
        struct i915_vma *vma;
 
-       GEM_BUG_ON(view && !i915_is_ggtt(vm));
+       GEM_BUG_ON(view && !i915_is_ggtt_or_dpt(vm));
        GEM_BUG_ON(!atomic_read(&vm->open));
 
        spin_lock(&obj->vma.lock);
index 8df784a026d21b5775fbf2ed9e522df65b44f4f1..2a108e66cd4953a5fdbf9766794e64465e580ab4 100644 (file)
@@ -158,7 +158,7 @@ i915_vma_compare(struct i915_vma *vma,
 {
        ptrdiff_t cmp;
 
-       GEM_BUG_ON(view && !i915_is_ggtt(vm));
+       GEM_BUG_ON(view && !i915_is_ggtt_or_dpt(vm));
 
        cmp = ptrdiff(vma->vm, vm);
        if (cmp)