Lines Matching full: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) in drm_gem_shmem_test_obj_create() argument
58 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_obj_create()
62 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_obj_create()
63 KUNIT_EXPECT_EQ(test, shmem->base.size, TEST_SIZE); in drm_gem_shmem_test_obj_create()
64 KUNIT_EXPECT_NOT_NULL(test, shmem->base.filp); in drm_gem_shmem_test_obj_create()
65 KUNIT_EXPECT_NOT_NULL(test, shmem->base.funcs); in drm_gem_shmem_test_obj_create()
71 * Test creating a shmem GEM object from a scatter/gather table exported
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) in drm_gem_shmem_test_obj_create_private() argument
78 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_obj_create_private()
88 buf = kunit_kzalloc(test, TEST_SIZE, GFP_KERNEL); in drm_gem_shmem_test_obj_create_private()
89 KUNIT_ASSERT_NOT_NULL(test, buf); in drm_gem_shmem_test_obj_create_private()
92 KUNIT_ASSERT_NOT_NULL(test, sgt); in drm_gem_shmem_test_obj_create_private()
94 ret = kunit_add_action_or_reset(test, kfree_wrapper, sgt); in drm_gem_shmem_test_obj_create_private()
95 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_obj_create_private()
98 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_obj_create_private()
100 ret = kunit_add_action_or_reset(test, sg_free_table_wrapper, sgt); in drm_gem_shmem_test_obj_create_private()
101 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_obj_create_private()
110 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, gem_obj); in drm_gem_shmem_test_obj_create_private()
111 KUNIT_EXPECT_EQ(test, gem_obj->size, TEST_SIZE); in drm_gem_shmem_test_obj_create_private()
112 KUNIT_EXPECT_NULL(test, gem_obj->filp); in drm_gem_shmem_test_obj_create_private()
113 KUNIT_EXPECT_NOT_NULL(test, gem_obj->funcs); in drm_gem_shmem_test_obj_create_private()
116 kunit_remove_action(test, sg_free_table_wrapper, sgt); in drm_gem_shmem_test_obj_create_private()
117 kunit_remove_action(test, kfree_wrapper, sgt); in drm_gem_shmem_test_obj_create_private()
120 KUNIT_EXPECT_PTR_EQ(test, shmem->sgt, sgt); in drm_gem_shmem_test_obj_create_private()
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) in drm_gem_shmem_test_pin_pages() argument
132 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_pin_pages()
137 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_pin_pages()
138 KUNIT_EXPECT_NULL(test, shmem->pages); in drm_gem_shmem_test_pin_pages()
139 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 0); in drm_gem_shmem_test_pin_pages()
141 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_pin_pages()
142 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_pin_pages()
145 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_pin_pages()
146 KUNIT_ASSERT_NOT_NULL(test, shmem->pages); in drm_gem_shmem_test_pin_pages()
147 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 1); in drm_gem_shmem_test_pin_pages()
150 KUNIT_ASSERT_NOT_NULL(test, shmem->pages[i]); in drm_gem_shmem_test_pin_pages()
153 KUNIT_EXPECT_NULL(test, shmem->pages); in drm_gem_shmem_test_pin_pages()
154 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 0); in drm_gem_shmem_test_pin_pages()
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) in drm_gem_shmem_test_vmap() argument
165 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_vmap()
171 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_vmap()
172 KUNIT_EXPECT_NULL(test, shmem->vaddr); in drm_gem_shmem_test_vmap()
173 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 0); in drm_gem_shmem_test_vmap()
175 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_vmap()
176 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_vmap()
179 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_vmap()
180 KUNIT_ASSERT_NOT_NULL(test, shmem->vaddr); in drm_gem_shmem_test_vmap()
181 KUNIT_ASSERT_FALSE(test, iosys_map_is_null(&map)); in drm_gem_shmem_test_vmap()
182 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 1); in drm_gem_shmem_test_vmap()
186 KUNIT_EXPECT_EQ(test, iosys_map_rd(&map, i, u8), TEST_BYTE); in drm_gem_shmem_test_vmap()
189 KUNIT_EXPECT_NULL(test, shmem->vaddr); in drm_gem_shmem_test_vmap()
190 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 0); in drm_gem_shmem_test_vmap()
194 * Test exporting a scatter/gather table of pinned pages suitable for
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) in drm_gem_shmem_test_get_pages_sgt() argument
201 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_get_pages_sgt()
209 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_get_pages_sgt()
211 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_get_pages_sgt()
212 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_get_pages_sgt()
215 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_get_pages_sgt()
218 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt); in drm_gem_shmem_test_get_pages_sgt()
219 KUNIT_EXPECT_NULL(test, shmem->sgt); in drm_gem_shmem_test_get_pages_sgt()
221 ret = kunit_add_action_or_reset(test, sg_free_table_wrapper, sgt); in drm_gem_shmem_test_get_pages_sgt()
222 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_get_pages_sgt()
225 KUNIT_EXPECT_NOT_NULL(test, sg); in drm_gem_shmem_test_get_pages_sgt()
229 KUNIT_EXPECT_GE(test, len, TEST_SIZE); in drm_gem_shmem_test_get_pages_sgt()
233 * Test pinning pages and exporting a scatter/gather table suitable for
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) in drm_gem_shmem_test_get_sg_table() argument
240 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_get_sg_table()
247 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_get_sg_table()
249 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_get_sg_table()
250 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_get_sg_table()
254 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt); in drm_gem_shmem_test_get_sg_table()
255 KUNIT_ASSERT_NOT_NULL(test, shmem->pages); in drm_gem_shmem_test_get_sg_table()
256 KUNIT_EXPECT_EQ(test, shmem->pages_use_count, 1); in drm_gem_shmem_test_get_sg_table()
257 KUNIT_EXPECT_PTR_EQ(test, sgt, shmem->sgt); in drm_gem_shmem_test_get_sg_table()
260 KUNIT_EXPECT_NOT_NULL(test, sg); in drm_gem_shmem_test_get_sg_table()
264 KUNIT_EXPECT_GE(test, len, TEST_SIZE); in drm_gem_shmem_test_get_sg_table()
268 * Test updating the madvise state of a shmem GEM object. The test
273 static void drm_gem_shmem_test_madvise(struct kunit *test) in drm_gem_shmem_test_madvise() argument
275 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_madvise()
280 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_madvise()
281 KUNIT_ASSERT_EQ(test, shmem->madv, 0); in drm_gem_shmem_test_madvise()
283 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_madvise()
284 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_madvise()
287 KUNIT_EXPECT_TRUE(test, ret); in drm_gem_shmem_test_madvise()
288 KUNIT_ASSERT_EQ(test, shmem->madv, 1); in drm_gem_shmem_test_madvise()
292 KUNIT_EXPECT_FALSE(test, ret); in drm_gem_shmem_test_madvise()
293 KUNIT_ASSERT_EQ(test, shmem->madv, -1); in drm_gem_shmem_test_madvise()
297 KUNIT_EXPECT_FALSE(test, ret); in drm_gem_shmem_test_madvise()
298 KUNIT_ASSERT_EQ(test, shmem->madv, -1); in drm_gem_shmem_test_madvise()
302 * Test purging a shmem GEM object. First, assert that a newly created
308 static void drm_gem_shmem_test_purge(struct kunit *test) in drm_gem_shmem_test_purge() argument
310 struct drm_device *drm_dev = test->priv; in drm_gem_shmem_test_purge()
316 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shmem); in drm_gem_shmem_test_purge()
318 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); in drm_gem_shmem_test_purge()
319 KUNIT_ASSERT_EQ(test, ret, 0); in drm_gem_shmem_test_purge()
322 KUNIT_EXPECT_FALSE(test, ret); in drm_gem_shmem_test_purge()
325 KUNIT_EXPECT_TRUE(test, ret); in drm_gem_shmem_test_purge()
329 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt); in drm_gem_shmem_test_purge()
332 KUNIT_EXPECT_TRUE(test, ret); in drm_gem_shmem_test_purge()
335 KUNIT_EXPECT_NULL(test, shmem->pages); in drm_gem_shmem_test_purge()
336 KUNIT_EXPECT_NULL(test, shmem->sgt); in drm_gem_shmem_test_purge()
337 KUNIT_EXPECT_EQ(test, shmem->madv, -1); in drm_gem_shmem_test_purge()
340 static int drm_gem_shmem_test_init(struct kunit *test) in drm_gem_shmem_test_init() argument
346 dev = drm_kunit_helper_alloc_device(test); in drm_gem_shmem_test_init()
347 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); in drm_gem_shmem_test_init()
354 drm_dev = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm_dev), in drm_gem_shmem_test_init()
356 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm_dev); in drm_gem_shmem_test_init()
358 test->priv = drm_dev; in drm_gem_shmem_test_init()