Lines Matching refs:test

3  * KUnit test suite for GEM objects backed by shmem buffers
14 #include <kunit/test.h>
51 * Test creating a shmem GEM object backed by shmem buffer. The test
56 static void drm_gem_shmem_test_obj_create(struct kunit *test)
58 struct drm_device *drm_dev = test->priv;
62 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
63 KUNIT_EXPECT_EQ(test, shmem->base.size, TEST_SIZE);
64 KUNIT_EXPECT_NOT_NULL(test, shmem->base.filp);
65 KUNIT_EXPECT_NOT_NULL(test, shmem->base.funcs);
72 * via a DMA-BUF. The test case succeed if the GEM object is successfully
76 static void drm_gem_shmem_test_obj_create_private(struct kunit *test)
78 struct drm_device *drm_dev = test->priv;
88 buf = kunit_kzalloc(test, TEST_SIZE, GFP_KERNEL);
89 KUNIT_ASSERT_NOT_NULL(test, buf);
92 KUNIT_ASSERT_NOT_NULL(test, sgt);
94 ret = kunit_add_action_or_reset(test, kfree_wrapper, sgt);
95 KUNIT_ASSERT_EQ(test, ret, 0);
98 KUNIT_ASSERT_EQ(test, ret, 0);
100 ret = kunit_add_action_or_reset(test, sg_free_table_wrapper, sgt);
101 KUNIT_ASSERT_EQ(test, ret, 0);
110 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, gem_obj);
111 KUNIT_EXPECT_EQ(test, gem_obj->size, TEST_SIZE);
112 KUNIT_EXPECT_NULL(test, gem_obj->filp);
113 KUNIT_EXPECT_NOT_NULL(test, gem_obj->funcs);
116 kunit_remove_action(test, sg_free_table_wrapper, sgt);
117 kunit_remove_action(test, kfree_wrapper, sgt);
120 KUNIT_EXPECT_PTR_EQ(test, shmem->sgt, sgt);
126 * Test pinning backing pages for a shmem GEM object. The test case
130 static void drm_gem_shmem_test_pin_pages(struct kunit *test)
132 struct drm_device *drm_dev = test->priv;
137 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
138 KUNIT_EXPECT_NULL(test, shmem->pages);
139 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 0);
141 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
142 KUNIT_ASSERT_EQ(test, ret, 0);
145 KUNIT_ASSERT_EQ(test, ret, 0);
146 KUNIT_ASSERT_NOT_NULL(test, shmem->pages);
147 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 1);
150 KUNIT_ASSERT_NOT_NULL(test, shmem->pages[i]);
153 KUNIT_EXPECT_NULL(test, shmem->pages);
154 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 0);
158 * Test creating a virtual mapping for a shmem GEM object. The test
160 * counter for virtual mapping is increased by one. Moreover, the test
161 * case writes and then reads a test pattern over the mapped memory.
163 static void drm_gem_shmem_test_vmap(struct kunit *test)
165 struct drm_device *drm_dev = test->priv;
171 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
172 KUNIT_EXPECT_NULL(test, shmem->vaddr);
173 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 0);
175 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
176 KUNIT_ASSERT_EQ(test, ret, 0);
179 KUNIT_ASSERT_EQ(test, ret, 0);
180 KUNIT_ASSERT_NOT_NULL(test, shmem->vaddr);
181 KUNIT_ASSERT_FALSE(test, iosys_map_is_null(&map));
182 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 1);
186 KUNIT_EXPECT_EQ(test, iosys_map_rd(&map, i, u8), TEST_BYTE);
189 KUNIT_EXPECT_NULL(test, shmem->vaddr);
190 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 0);
195 * PRIME usage from a shmem GEM object. The test case succeeds if a
199 static void drm_gem_shmem_test_get_pages_sgt(struct kunit *test)
201 struct drm_device *drm_dev = test->priv;
209 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
211 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
212 KUNIT_ASSERT_EQ(test, ret, 0);
215 KUNIT_ASSERT_EQ(test, ret, 0);
218 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt);
219 KUNIT_EXPECT_NULL(test, shmem->sgt);
221 ret = kunit_add_action_or_reset(test, sg_free_table_wrapper, sgt);
222 KUNIT_ASSERT_EQ(test, ret, 0);
225 KUNIT_EXPECT_NOT_NULL(test, sg);
229 KUNIT_EXPECT_GE(test, len, TEST_SIZE);
234 * driver usage from a shmem GEM object. The test case succeeds if the
238 static void drm_gem_shmem_test_get_sg_table(struct kunit *test)
240 struct drm_device *drm_dev = test->priv;
247 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
249 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
250 KUNIT_ASSERT_EQ(test, ret, 0);
254 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt);
255 KUNIT_ASSERT_NOT_NULL(test, shmem->pages);
256 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 1);
257 KUNIT_EXPECT_PTR_EQ(test, sgt, shmem->sgt);
260 KUNIT_EXPECT_NOT_NULL(test, sg);
264 KUNIT_EXPECT_GE(test, len, TEST_SIZE);
268 * Test updating the madvise state of a shmem GEM object. The test
273 static void drm_gem_shmem_test_madvise(struct kunit *test)
275 struct drm_device *drm_dev = test->priv;
280 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
281 KUNIT_ASSERT_EQ(test, shmem->madv, 0);
283 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
284 KUNIT_ASSERT_EQ(test, ret, 0);
287 KUNIT_EXPECT_TRUE(test, ret);
288 KUNIT_ASSERT_EQ(test, shmem->madv, 1);
292 KUNIT_EXPECT_FALSE(test, ret);
293 KUNIT_ASSERT_EQ(test, shmem->madv, -1);
297 KUNIT_EXPECT_FALSE(test, ret);
298 KUNIT_ASSERT_EQ(test, shmem->madv, -1);
308 static void drm_gem_shmem_test_purge(struct kunit *test)
310 struct drm_device *drm_dev = test->priv;
316 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem);
318 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem);
319 KUNIT_ASSERT_EQ(test, ret, 0);
322 KUNIT_EXPECT_FALSE(test, ret);
325 KUNIT_EXPECT_TRUE(test, ret);
329 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt);
332 KUNIT_EXPECT_TRUE(test, ret);
335 KUNIT_EXPECT_NULL(test, shmem->pages);
336 KUNIT_EXPECT_NULL(test, shmem->sgt);
337 KUNIT_EXPECT_EQ(test, shmem->madv, -1);
340 static int drm_gem_shmem_test_init(struct kunit *test)
346 dev = drm_kunit_helper_alloc_device(test);
347 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
354 drm_dev = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm_dev),
356 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm_dev);
358 test->priv = drm_dev;