Lines Matching +full:total +full:- +full:timeout

1 // SPDX-License-Identifier: MIT
16 #define TIMEOUT(name__) \ macro
27 static bool __timeout(unsigned long timeout, const char *fmt, ...) in __timeout() argument
33 if (time_before(jiffies, timeout)) in __timeout()
50 block->header, drm_buddy_block_state(block), in __dump_block()
52 drm_buddy_block_size(mm, block), !block->parent, buddy); in __dump_block()
81 err = -EINVAL; in check_block()
87 if (block_size < mm->chunk_size) { in check_block()
89 err = -EINVAL; in check_block()
92 /* We can't use is_power_of_2() for a u64 on 32-bit systems. */ in check_block()
93 if (block_size & (block_size - 1)) { in check_block()
95 err = -EINVAL; in check_block()
98 if (!IS_ALIGNED(block_size, mm->chunk_size)) { in check_block()
100 err = -EINVAL; in check_block()
103 if (!IS_ALIGNED(offset, mm->chunk_size)) { in check_block()
105 err = -EINVAL; in check_block()
110 err = -EINVAL; in check_block()
115 if (!buddy && block->parent) { in check_block()
117 err = -EINVAL; in check_block()
123 err = -EINVAL; in check_block()
128 err = -EINVAL; in check_block()
134 err = -EINVAL; in check_block()
146 u64 total; in check_blocks() local
151 total = 0; in check_blocks()
158 err = -EINVAL; in check_blocks()
172 err = -EINVAL; in check_blocks()
179 total += drm_buddy_block_size(mm, block); in check_blocks()
184 if (total != expected_size) { in check_blocks()
186 expected_size, total); in check_blocks()
187 err = -EINVAL; in check_blocks()
208 u64 total; in check_mm() local
211 if (!mm->n_roots) { in check_mm()
213 return -EINVAL; in check_mm()
216 if (mm->n_roots != hweight64(mm->size)) { in check_mm()
218 mm->n_roots, hweight64(mm->size)); in check_mm()
219 return -EINVAL; in check_mm()
224 total = 0; in check_mm()
226 for (i = 0; i < mm->n_roots; ++i) { in check_mm()
230 root = mm->roots[i]; in check_mm()
233 err = -EINVAL; in check_mm()
241 err = -EINVAL; in check_mm()
247 if (order != mm->max_order) { in check_mm()
249 err = -EINVAL; in check_mm()
264 err = -EINVAL; in check_mm()
268 block = list_first_entry_or_null(&mm->free_list[order], in check_mm()
272 err = -EINVAL; in check_mm()
279 total += drm_buddy_block_size(mm, root); in check_mm()
283 if (total != mm->size) { in check_mm()
285 mm->size, total); in check_mm()
286 err = -EINVAL; in check_mm()
292 kunit_err(test, "prev root(%u), dump:\n", i - 1); in check_mm()
314 s = 1 + drm_prandom_u32_max_state((BIT(33 - 12)) - 1, &prng); in mm_config()
318 s &= -ms; in mm_config()
338 * Create a pot-sized mm, then allocate one of each possible in drm_test_buddy_alloc_pathological()
350 for (top = max_order; top; top--) { in drm_test_buddy_alloc_pathological()
354 list_del(&block->link); in drm_test_buddy_alloc_pathological()
358 for (order = top; order--;) { in drm_test_buddy_alloc_pathological()
363 "buddy_alloc hit -ENOMEM with order=%d, top=%d\n", in drm_test_buddy_alloc_pathological()
369 list_move_tail(&block->link, &blocks); in drm_test_buddy_alloc_pathological()
372 /* There should be one final page for this sub-allocation */ in drm_test_buddy_alloc_pathological()
376 "buddy_alloc hit -ENOMEM for hole\n"); in drm_test_buddy_alloc_pathological()
381 list_move_tail(&block->link, &holes); in drm_test_buddy_alloc_pathological()
386 "buddy_alloc unexpectedly succeeded at top-order %d/%d, it should be full!", in drm_test_buddy_alloc_pathological()
415 TIMEOUT(end_time); in drm_test_buddy_alloc_smoke()
428 bool timeout = false; in drm_test_buddy_alloc_smoke() local
430 u64 total, size; in drm_test_buddy_alloc_smoke() local
435 "pre-mm check failed, abort\n"); in drm_test_buddy_alloc_smoke()
438 total = 0; in drm_test_buddy_alloc_smoke()
445 if (err == -ENOMEM) { in drm_test_buddy_alloc_smoke()
446 KUNIT_FAIL(test, "buddy_alloc hit -ENOMEM with order=%d\n", in drm_test_buddy_alloc_smoke()
449 if (order--) { in drm_test_buddy_alloc_smoke()
464 list_move_tail(&block->link, &blocks); in drm_test_buddy_alloc_smoke()
468 total += drm_buddy_block_size(&mm, block); in drm_test_buddy_alloc_smoke()
471 timeout = true; in drm_test_buddy_alloc_smoke()
474 } while (total < mm.size); in drm_test_buddy_alloc_smoke()
477 err = check_blocks(test, &mm, &blocks, total, false); in drm_test_buddy_alloc_smoke()
483 "post-mm check failed\n"); in drm_test_buddy_alloc_smoke()
486 if (err || timeout) in drm_test_buddy_alloc_smoke()
508 * Create a pot-sized mm, then allocate one of each possible in drm_test_buddy_alloc_pessimistic()
523 "buddy_alloc hit -ENOMEM with order=%d\n", in drm_test_buddy_alloc_pessimistic()
529 list_move_tail(&block->link, &blocks); in drm_test_buddy_alloc_pessimistic()
536 "buddy_alloc hit -ENOMEM on final alloc\n"); in drm_test_buddy_alloc_pessimistic()
541 list_move_tail(&block->link, &blocks); in drm_test_buddy_alloc_pessimistic()
544 for (order = max_order; order--;) { in drm_test_buddy_alloc_pessimistic()
552 list_del(&block->link); in drm_test_buddy_alloc_pessimistic()
558 list_del(&block->link); in drm_test_buddy_alloc_pessimistic()
564 "buddy_alloc hit -ENOMEM with order=%d\n", in drm_test_buddy_alloc_pessimistic()
570 list_del(&block->link); in drm_test_buddy_alloc_pessimistic()
579 "buddy_alloc (realloc) hit -ENOMEM with order=%d\n", in drm_test_buddy_alloc_pessimistic()
585 list_del(&block->link); in drm_test_buddy_alloc_pessimistic()
607 mm_size = PAGE_SIZE * ((1 << (max_order + 1)) - 1); in drm_test_buddy_alloc_optimistic()
618 "buddy_alloc hit -ENOMEM with order=%d\n", in drm_test_buddy_alloc_optimistic()
624 list_move_tail(&block->link, &blocks); in drm_test_buddy_alloc_optimistic()
651 "pre-mm check failed, abort!"); in drm_test_buddy_alloc_range()
656 for_each_prime_number_from(page_num, 1, ULONG_MAX - 1) { in drm_test_buddy_alloc_range()
681 rem -= size; in drm_test_buddy_alloc_range()
690 KUNIT_EXPECT_FALSE_MSG(test, check_mm(test, &mm), "post-mm check failed\n"); in drm_test_buddy_alloc_range()