In commit 450cede7f380 ("drm/i915/gem: Fix the mman selftest") we fixed up
the mman selftest to allocate user buffers via smem only if we have lmem,
otherwise it uses internal buffers.
As the commit message asserts, we should only be using buffers that
userland should be able to create.
Internal buffers are not intended to be used by userland.
Instead, fix the code to always create buffers from smem.
In the case of integrated, this will create them from the shmem non-ttm
backend, which is fine.
This also fixes up the code to allow conversion of internal backend to
ttm without breaking this test.
Signed-off-by: Robert Beckett <[email protected]>
---
.../gpu/drm/i915/gem/selftests/i915_gem_mman.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
index 3ced9948a331..e529eb8461ff 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
@@ -596,17 +596,12 @@ static enum i915_mmap_type default_mapping(struct drm_i915_private *i915)
}
static struct drm_i915_gem_object *
-create_sys_or_internal(struct drm_i915_private *i915,
- unsigned long size)
+create_sys(struct drm_i915_private *i915, unsigned long size)
{
- if (HAS_LMEM(i915)) {
- struct intel_memory_region *sys_region =
- i915->mm.regions[INTEL_REGION_SMEM];
+ struct intel_memory_region *sys_region =
+ i915->mm.regions[INTEL_REGION_SMEM];
- return __i915_gem_object_create_user(i915, size, &sys_region, 1);
- }
-
- return i915_gem_object_create_internal(i915, size);
+ return __i915_gem_object_create_user(i915, size, &sys_region, 1);
}
static bool assert_mmap_offset(struct drm_i915_private *i915,
@@ -617,7 +612,7 @@ static bool assert_mmap_offset(struct drm_i915_private *i915,
u64 offset;
int ret;
- obj = create_sys_or_internal(i915, size);
+ obj = create_sys(i915, size);
if (IS_ERR(obj))
return expected && expected == PTR_ERR(obj);
@@ -719,7 +714,7 @@ static int igt_mmap_offset_exhaustion(void *arg)
}
/* Fill the hole, further allocation attempts should then fail */
- obj = create_sys_or_internal(i915, PAGE_SIZE);
+ obj = create_sys(i915, PAGE_SIZE);
if (IS_ERR(obj)) {
err = PTR_ERR(obj);
pr_err("Unable to create object for reclaimed hole\n");
--
2.25.1