[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