drm/i915/selftests: Take rpm wakeref around GGTT lowlevel tests
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 7 Nov 2017 11:40:51 +0000 (11:40 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 7 Nov 2017 17:50:33 +0000 (17:50 +0000)
The vma routines are responsible for acquiring the device rpm wakeref
before they poke the HW. However, some of the selftests bypass the
higher level vma routines in order to poke directly at the lowlevel GGTT
functions; these are then responsible for managing rpm themselves.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171107114051.10583-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c

index 9da0c9f999167a62821a6c05ff7cdf831204426e..581296860539235aa70a1a3f420cf3f37e93cf99 100644 (file)
@@ -267,7 +267,9 @@ static int lowlevel_hole(struct drm_i915_private *i915,
                        mock_vma.node.size = BIT_ULL(size);
                        mock_vma.node.start = addr;
 
+                       intel_runtime_pm_get(i915);
                        vm->insert_entries(vm, &mock_vma, I915_CACHE_NONE, 0);
+                       intel_runtime_pm_put(i915);
                }
                count = n;
 
@@ -1047,6 +1049,7 @@ static int igt_ggtt_page(void *arg)
                goto out_remove;
        }
 
+       intel_runtime_pm_get(i915);
        for (n = 0; n < count; n++) {
                u64 offset = tmp.start + order[n] * PAGE_SIZE;
                u32 __iomem *vaddr;
@@ -1086,6 +1089,7 @@ static int igt_ggtt_page(void *arg)
                        break;
                }
        }
+       intel_runtime_pm_put(i915);
 
        kfree(order);
 out_remove: