Lines Matching refs:mm
11 static void __igt_dump_block(struct i915_buddy_mm *mm, in __igt_dump_block() argument
20 i915_buddy_block_size(mm, block), in __igt_dump_block()
25 static void igt_dump_block(struct i915_buddy_mm *mm, in igt_dump_block() argument
30 __igt_dump_block(mm, block, false); in igt_dump_block()
34 __igt_dump_block(mm, buddy, true); in igt_dump_block()
37 static int igt_check_block(struct i915_buddy_mm *mm, in igt_check_block() argument
55 block_size = i915_buddy_block_size(mm, block); in igt_check_block()
58 if (block_size < mm->chunk_size) { in igt_check_block()
68 if (!IS_ALIGNED(block_size, mm->chunk_size)) { in igt_check_block()
73 if (!IS_ALIGNED(offset, mm->chunk_size)) { in igt_check_block()
96 if (i915_buddy_block_size(mm, buddy) != block_size) { in igt_check_block()
111 static int igt_check_blocks(struct i915_buddy_mm *mm, in igt_check_blocks() argument
126 err = igt_check_block(mm, block); in igt_check_blocks()
139 prev_block_size = i915_buddy_block_size(mm, prev); in igt_check_blocks()
151 total += i915_buddy_block_size(mm, block); in igt_check_blocks()
166 igt_dump_block(mm, prev); in igt_check_blocks()
170 igt_dump_block(mm, block); in igt_check_blocks()
175 static int igt_check_mm(struct i915_buddy_mm *mm) in igt_check_mm() argument
183 if (!mm->n_roots) { in igt_check_mm()
188 if (mm->n_roots != hweight64(mm->size)) { in igt_check_mm()
190 mm->n_roots, hweight64(mm->size)); in igt_check_mm()
198 for (i = 0; i < mm->n_roots; ++i) { in igt_check_mm()
202 root = mm->roots[i]; in igt_check_mm()
209 err = igt_check_block(mm, root); in igt_check_mm()
219 if (order != mm->max_order) { in igt_check_mm()
231 prev_block_size = i915_buddy_block_size(mm, prev); in igt_check_mm()
240 block = list_first_entry_or_null(&mm->free_list[order], in igt_check_mm()
252 total += i915_buddy_block_size(mm, root); in igt_check_mm()
256 if (total != mm->size) { in igt_check_mm()
257 pr_err("expected mm size=%llx, found=%llx\n", mm->size, in igt_check_mm()
266 igt_dump_block(mm, prev); in igt_check_mm()
271 igt_dump_block(mm, root); in igt_check_mm()
300 struct i915_buddy_mm mm; in igt_buddy_alloc_smoke() local
312 err = i915_buddy_init(&mm, mm_size, chunk_size); in igt_buddy_alloc_smoke()
318 order = i915_random_order(mm.max_order + 1, &prng); in igt_buddy_alloc_smoke()
322 for (i = 0; i <= mm.max_order; ++i) { in igt_buddy_alloc_smoke()
330 err = igt_check_mm(&mm); in igt_buddy_alloc_smoke()
343 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_smoke()
370 total += i915_buddy_block_size(&mm, block); in igt_buddy_alloc_smoke()
376 } while (total < mm.size); in igt_buddy_alloc_smoke()
379 err = igt_check_blocks(&mm, &blocks, total, false); in igt_buddy_alloc_smoke()
381 i915_buddy_free_list(&mm, &blocks); in igt_buddy_alloc_smoke()
384 err = igt_check_mm(&mm); in igt_buddy_alloc_smoke()
400 i915_buddy_fini(&mm); in igt_buddy_alloc_smoke()
409 struct i915_buddy_mm mm; in igt_buddy_alloc_pessimistic() local
420 err = i915_buddy_init(&mm, PAGE_SIZE << max_order, PAGE_SIZE); in igt_buddy_alloc_pessimistic()
425 GEM_BUG_ON(mm.max_order != max_order); in igt_buddy_alloc_pessimistic()
428 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_pessimistic()
440 block = i915_buddy_alloc(&mm, 0); in igt_buddy_alloc_pessimistic()
450 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_pessimistic()
462 i915_buddy_free(&mm, block); in igt_buddy_alloc_pessimistic()
468 i915_buddy_free(&mm, block); in igt_buddy_alloc_pessimistic()
470 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_pessimistic()
477 i915_buddy_free(&mm, block); in igt_buddy_alloc_pessimistic()
482 block = i915_buddy_alloc(&mm, max_order); in igt_buddy_alloc_pessimistic()
489 i915_buddy_free(&mm, block); in igt_buddy_alloc_pessimistic()
492 i915_buddy_free_list(&mm, &blocks); in igt_buddy_alloc_pessimistic()
493 i915_buddy_fini(&mm); in igt_buddy_alloc_pessimistic()
501 struct i915_buddy_mm mm; in igt_buddy_alloc_optimistic() local
511 err = i915_buddy_init(&mm, in igt_buddy_alloc_optimistic()
518 GEM_BUG_ON(mm.max_order != max_order); in igt_buddy_alloc_optimistic()
521 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_optimistic()
533 block = i915_buddy_alloc(&mm, 0); in igt_buddy_alloc_optimistic()
542 i915_buddy_free_list(&mm, &blocks); in igt_buddy_alloc_optimistic()
543 i915_buddy_fini(&mm); in igt_buddy_alloc_optimistic()
551 struct i915_buddy_mm mm; in igt_buddy_alloc_pathological() local
564 err = i915_buddy_init(&mm, PAGE_SIZE << max_order, PAGE_SIZE); in igt_buddy_alloc_pathological()
569 GEM_BUG_ON(mm.max_order != max_order); in igt_buddy_alloc_pathological()
576 i915_buddy_free(&mm, block); in igt_buddy_alloc_pathological()
580 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_pathological()
591 block = i915_buddy_alloc(&mm, 0); in igt_buddy_alloc_pathological()
599 block = i915_buddy_alloc(&mm, top); in igt_buddy_alloc_pathological()
609 i915_buddy_free_list(&mm, &holes); in igt_buddy_alloc_pathological()
613 block = i915_buddy_alloc(&mm, order); in igt_buddy_alloc_pathological()
625 i915_buddy_free_list(&mm, &blocks); in igt_buddy_alloc_pathological()
626 i915_buddy_fini(&mm); in igt_buddy_alloc_pathological()
632 struct i915_buddy_mm mm; in igt_buddy_alloc_range() local
645 err = i915_buddy_init(&mm, size, chunk_size); in igt_buddy_alloc_range()
651 err = igt_check_mm(&mm); in igt_buddy_alloc_range()
657 rem = mm.size; in igt_buddy_alloc_range()
664 size = min(page_num * mm.chunk_size, rem); in igt_buddy_alloc_range()
666 err = i915_buddy_alloc_range(&mm, &tmp, offset, size); in igt_buddy_alloc_range()
695 err = igt_check_blocks(&mm, &tmp, size, true); in igt_buddy_alloc_range()
714 i915_buddy_free_list(&mm, &blocks); in igt_buddy_alloc_range()
717 err = igt_check_mm(&mm); in igt_buddy_alloc_range()
723 i915_buddy_fini(&mm); in igt_buddy_alloc_range()
731 struct i915_buddy_mm mm; in igt_buddy_alloc_limit() local
735 err = i915_buddy_init(&mm, size, PAGE_SIZE); in igt_buddy_alloc_limit()
739 if (mm.max_order != I915_BUDDY_MAX_ORDER) { in igt_buddy_alloc_limit()
741 mm.max_order, I915_BUDDY_MAX_ORDER); in igt_buddy_alloc_limit()
746 block = i915_buddy_alloc(&mm, mm.max_order); in igt_buddy_alloc_limit()
752 if (i915_buddy_block_order(block) != mm.max_order) { in igt_buddy_alloc_limit()
754 i915_buddy_block_order(block), mm.max_order); in igt_buddy_alloc_limit()
759 if (i915_buddy_block_size(&mm, block) != in igt_buddy_alloc_limit()
760 BIT_ULL(mm.max_order) * PAGE_SIZE) { in igt_buddy_alloc_limit()
762 i915_buddy_block_size(&mm, block), in igt_buddy_alloc_limit()
763 BIT_ULL(mm.max_order) * PAGE_SIZE); in igt_buddy_alloc_limit()
769 i915_buddy_free(&mm, block); in igt_buddy_alloc_limit()
771 i915_buddy_fini(&mm); in igt_buddy_alloc_limit()