[PATCH 20/25] trash

Matthew Auld matthew.auld at intel.com
Mon Sep 30 21:11:58 UTC 2019


---
 drivers/gpu/drm/i915/selftests/i915_gem.c | 36 ++++++++++++-----------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c b/drivers/gpu/drm/i915/selftests/i915_gem.c
index 4951957a4d8d..acd4321e9b6d 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem.c
@@ -36,31 +36,33 @@ static int switch_to_context(struct drm_i915_private *i915,
 
 static void trash_stolen(struct drm_i915_private *i915)
 {
-	struct i915_ggtt *ggtt = &i915->ggtt;
-	const u64 slot = ggtt->error_capture.start;
 	const resource_size_t size = resource_size(&i915->dsm);
-	unsigned long page;
+	bool mismatch;
 	u32 prng = 0x12345678;
+	u32 *vaddr;
+	u32 dw;
 
-	if (!HAS_MAPPABLE_APERTURE(i915))
+	vaddr = memremap(i915->dsm.start, size, MEMREMAP_WC);
+	if (!vaddr) {
+		pr_err("%s memremap failed\n", __func__);
+		WARN_ON(1);
 		return;
+	}
 
-	for (page = 0; page < size; page += PAGE_SIZE) {
-		const dma_addr_t dma = i915->dsm.start + page;
-		u32 __iomem *s;
-		int x;
-
-		ggtt->vm.insert_page(&ggtt->vm, dma, slot, I915_CACHE_NONE, 0);
-
-		s = io_mapping_map_atomic_wc(&ggtt->iomap, slot);
-		for (x = 0; x < PAGE_SIZE / sizeof(u32); x++) {
-			prng = next_pseudo_random32(prng);
-			iowrite32(prng, &s[x]);
+	mismatch = false;
+	for (dw = 0; dw < size / sizeof(u32); dw++) {
+		prng = next_pseudo_random32(prng);
+		vaddr[dw] = prng;
+		if (vaddr[dw] != prng) {
+			pr_err("vaddr[%d]=%u, prng=%u\n", dw, vaddr[dw], prng);
+			mismatch = true;
+			break;
 		}
-		io_mapping_unmap_atomic(s);
 	}
 
-	ggtt->vm.clear_range(&ggtt->vm, slot, PAGE_SIZE);
+	WARN_ON(mismatch);
+
+	memunmap(vaddr);
 }
 
 static void simulate_hibernate(struct drm_i915_private *i915)
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list