Lines Matching refs:mm
52 static bool assert_no_holes(const struct drm_mm *mm) in assert_no_holes() argument
59 drm_mm_for_each_hole(hole, mm, hole_start, hole_end) in assert_no_holes()
66 drm_mm_for_each_node(hole, mm) { in assert_no_holes()
76 static bool assert_one_hole(const struct drm_mm *mm, u64 start, u64 end) in assert_one_hole() argument
87 drm_mm_for_each_hole(hole, mm, hole_start, hole_end) { in assert_one_hole()
105 static bool assert_continuous(const struct drm_mm *mm, u64 size) in assert_continuous() argument
111 if (!assert_no_holes(mm)) in assert_continuous()
116 drm_mm_for_each_node(node, mm) { in assert_continuous()
135 drm_mm_for_each_node_in_range(check, mm, addr, addr + size) { in assert_continuous()
167 static bool assert_node(struct drm_mm_node *node, struct drm_mm *mm, in assert_node() argument
172 if (!drm_mm_node_allocated(node) || node->mm != mm) { in assert_node()
198 #define show_mm(mm) do { \ argument
200 drm_mm_print((mm), &__p); } while (0)
205 struct drm_mm mm; in igt_init() local
210 memset(&mm, 0, sizeof(mm)); in igt_init()
211 if (drm_mm_initialized(&mm)) { in igt_init()
216 memset(&mm, 0xff, sizeof(mm)); in igt_init()
217 drm_mm_init(&mm, 0, size); in igt_init()
218 if (!drm_mm_initialized(&mm)) { in igt_init()
223 if (!drm_mm_clean(&mm)) { in igt_init()
229 if (!assert_one_hole(&mm, 0, size)) { in igt_init()
237 ret = drm_mm_reserve_node(&mm, &tmp); in igt_init()
244 if (!assert_no_holes(&mm)) { in igt_init()
251 if (!assert_one_hole(&mm, 0, size)) { in igt_init()
258 show_mm(&mm); in igt_init()
259 drm_mm_takedown(&mm); in igt_init()
265 struct drm_mm mm; in igt_debug() local
273 drm_mm_init(&mm, 0, 4096); in igt_debug()
278 ret = drm_mm_reserve_node(&mm, &nodes[0]); in igt_debug()
287 ret = drm_mm_reserve_node(&mm, &nodes[1]); in igt_debug()
294 show_mm(&mm); in igt_debug()
306 static bool expect_reserve_fail(struct drm_mm *mm, struct drm_mm_node *node) in expect_reserve_fail() argument
310 err = drm_mm_reserve_node(mm, node); in expect_reserve_fail()
325 static bool check_reserve_boundaries(struct drm_mm *mm, in check_reserve_boundaries() argument
357 if (!expect_reserve_fail(mm, in check_reserve_boundaries()
373 struct drm_mm mm; in __igt_reserve() local
397 drm_mm_init(&mm, 0, count * size); in __igt_reserve()
399 if (!check_reserve_boundaries(&mm, count, size)) in __igt_reserve()
406 err = drm_mm_reserve_node(&mm, &nodes[n]); in __igt_reserve()
420 if (!expect_reserve_fail(&mm, &nodes[n])) in __igt_reserve()
425 if (!assert_continuous(&mm, size)) in __igt_reserve()
431 if (!expect_reserve_fail(&mm, in __igt_reserve()
437 err = drm_mm_reserve_node(&mm, &nodes[order[n]]); in __igt_reserve()
446 if (!assert_continuous(&mm, size)) in __igt_reserve()
451 if (!expect_reserve_fail(&mm, set_node(&tmp, 0, size*count))) in __igt_reserve()
455 if (!expect_reserve_fail(&mm, in __igt_reserve()
471 err = drm_mm_reserve_node(&mm, node); in __igt_reserve()
482 if (!assert_continuous(&mm, size)) in __igt_reserve()
488 drm_mm_for_each_node_safe(node, next, &mm) in __igt_reserve()
490 drm_mm_takedown(&mm); in __igt_reserve()
524 static bool expect_insert(struct drm_mm *mm, struct drm_mm_node *node, in expect_insert() argument
530 err = drm_mm_insert_node_generic(mm, node, in expect_insert()
539 if (!assert_node(node, mm, size, alignment, color)) { in expect_insert()
547 static bool expect_insert_fail(struct drm_mm *mm, u64 size) in expect_insert_fail() argument
552 err = drm_mm_insert_node(mm, &tmp, size); in expect_insert_fail()
571 struct drm_mm mm; in __igt_insert() local
591 drm_mm_init(&mm, 0, count * size); in __igt_insert()
599 if (!expect_insert(&mm, node, size, 0, n, mode)) { in __igt_insert()
613 if (!assert_node(&nodes[n], &mm, size, 0, n)) { in __igt_insert()
629 if (!assert_continuous(&mm, size)) in __igt_insert()
633 if (!expect_insert_fail(&mm, size)) in __igt_insert()
641 if (!expect_insert(&mm, &nodes[n], size, 0, n, mode)) { in __igt_insert()
653 if (!assert_continuous(&mm, size)) in __igt_insert()
666 if (!expect_insert(&mm, node, size, 0, n, mode)) { in __igt_insert()
675 if (!assert_continuous(&mm, size)) in __igt_insert()
678 if (!expect_insert_fail(&mm, size)) in __igt_insert()
682 drm_mm_for_each_node_safe(node, next, &mm) in __igt_insert()
684 DRM_MM_BUG_ON(!drm_mm_clean(&mm)); in __igt_insert()
691 drm_mm_for_each_node_safe(node, next, &mm) in __igt_insert()
693 drm_mm_takedown(&mm); in __igt_insert()
761 static bool expect_insert_in_range(struct drm_mm *mm, struct drm_mm_node *node, in expect_insert_in_range() argument
768 err = drm_mm_insert_node_in_range(mm, node, in expect_insert_in_range()
779 if (!assert_node(node, mm, size, alignment, color)) { in expect_insert_in_range()
787 static bool expect_insert_in_range_fail(struct drm_mm *mm, in expect_insert_in_range_fail() argument
795 err = drm_mm_insert_node_in_range(mm, &tmp, in expect_insert_in_range_fail()
814 static bool assert_contiguous_in_range(struct drm_mm *mm, in assert_contiguous_in_range() argument
822 if (!expect_insert_in_range_fail(mm, size, start, end)) in assert_contiguous_in_range()
826 drm_mm_for_each_node(node, mm) { in assert_contiguous_in_range()
855 node = __drm_mm_interval_first(mm, 0, start - 1); in assert_contiguous_in_range()
864 node = __drm_mm_interval_first(mm, end, U64_MAX); in assert_contiguous_in_range()
878 struct drm_mm mm; in __igt_insert_range() local
897 drm_mm_init(&mm, 0, count * size); in __igt_insert_range()
904 if (!expect_insert_in_range(&mm, &nodes[n], in __igt_insert_range()
915 if (!assert_contiguous_in_range(&mm, size, start, end)) { in __igt_insert_range()
926 if (!expect_insert_in_range(&mm, &nodes[n], in __igt_insert_range()
940 if (!assert_contiguous_in_range(&mm, size, start, end)) { in __igt_insert_range()
946 drm_mm_for_each_node_safe(node, next, &mm) in __igt_insert_range()
948 DRM_MM_BUG_ON(!drm_mm_clean(&mm)); in __igt_insert_range()
955 drm_mm_for_each_node_safe(node, next, &mm) in __igt_insert_range()
957 drm_mm_takedown(&mm); in __igt_insert_range()
965 struct drm_mm mm; in insert_outside_range() local
970 drm_mm_init(&mm, start, size); in insert_outside_range()
972 if (!expect_insert_in_range_fail(&mm, 1, 0, start)) in insert_outside_range()
975 if (!expect_insert_in_range_fail(&mm, size, in insert_outside_range()
979 if (!expect_insert_in_range_fail(&mm, size, in insert_outside_range()
983 if (!expect_insert_in_range_fail(&mm, 1, end, end + size)) in insert_outside_range()
986 drm_mm_takedown(&mm); in insert_outside_range()
1039 struct drm_mm mm; in igt_align() local
1053 drm_mm_init(&mm, 1, U64_MAX - 2); in igt_align()
1061 if (!expect_insert(&mm, &nodes[i], in igt_align()
1072 drm_mm_for_each_node_safe(node, next, &mm) in igt_align()
1074 DRM_MM_BUG_ON(!drm_mm_clean(&mm)); in igt_align()
1081 drm_mm_for_each_node_safe(node, next, &mm) in igt_align()
1083 drm_mm_takedown(&mm); in igt_align()
1091 struct drm_mm mm; in igt_align_pot() local
1098 drm_mm_init(&mm, 1, U64_MAX - 2); in igt_align_pot()
1111 if (!expect_insert(&mm, node, in igt_align_pot()
1124 drm_mm_for_each_node_safe(node, next, &mm) { in igt_align_pot()
1128 drm_mm_takedown(&mm); in igt_align_pot()
1149 static void show_holes(const struct drm_mm *mm, int count) in show_holes() argument
1154 drm_mm_for_each_hole(hole, mm, hole_start, hole_end) { in show_holes()
1233 static bool evict_nothing(struct drm_mm *mm, in evict_nothing() argument
1243 drm_mm_scan_init(&scan, mm, 1, 0, 0, 0); in evict_nothing()
1263 drm_mm_for_each_node(node, mm) { in evict_nothing()
1277 return assert_continuous(mm, nodes[0].node.size); in evict_nothing()
1280 static bool evict_everything(struct drm_mm *mm, in evict_everything() argument
1290 drm_mm_scan_init(&scan, mm, total_size, 0, 0, 0); in evict_everything()
1314 if (!assert_one_hole(mm, 0, total_size)) in evict_everything()
1318 err = drm_mm_reserve_node(mm, &e->node); in evict_everything()
1326 return assert_continuous(mm, nodes[0].node.size); in evict_everything()
1329 static int evict_something(struct drm_mm *mm, in evict_something() argument
1344 drm_mm_scan_init_with_range(&scan, mm, in evict_something()
1354 err = drm_mm_insert_node_generic(mm, &tmp, size, alignment, 0, in evict_something()
1360 show_holes(mm, 3); in evict_something()
1370 if (!assert_node(&tmp, mm, size, alignment, 0) || in evict_something()
1384 err = drm_mm_reserve_node(mm, &e->node); in evict_something()
1392 if (!assert_continuous(mm, nodes[0].node.size)) { in evict_something()
1405 struct drm_mm mm; in igt_evict() local
1428 drm_mm_init(&mm, 0, size); in igt_evict()
1430 err = drm_mm_insert_node(&mm, &nodes[n].node, 1); in igt_evict()
1439 if (!evict_nothing(&mm, size, nodes)) { in igt_evict()
1443 if (!evict_everything(&mm, size, nodes)) { in igt_evict()
1451 err = evict_something(&mm, 0, U64_MAX, in igt_evict()
1465 err = evict_something(&mm, 0, U64_MAX, in igt_evict()
1483 err = evict_something(&mm, 0, U64_MAX, in igt_evict()
1500 drm_mm_for_each_node_safe(node, next, &mm) in igt_evict()
1502 drm_mm_takedown(&mm); in igt_evict()
1518 struct drm_mm mm; in igt_evict_range() local
1538 drm_mm_init(&mm, 0, size); in igt_evict_range()
1540 err = drm_mm_insert_node(&mm, &nodes[n].node, 1); in igt_evict_range()
1551 err = evict_something(&mm, range_start, range_end, in igt_evict_range()
1564 err = evict_something(&mm, range_start, range_end, in igt_evict_range()
1581 err = evict_something(&mm, range_start, range_end, in igt_evict_range()
1597 drm_mm_for_each_node_safe(node, next, &mm) in igt_evict_range()
1599 drm_mm_takedown(&mm); in igt_evict_range()
1619 struct drm_mm mm; in igt_topdown() local
1645 drm_mm_init(&mm, 0, size*count); in igt_topdown()
1647 if (!expect_insert(&mm, &nodes[n], in igt_topdown()
1660 if (!assert_one_hole(&mm, 0, size*(count - n - 1))) in igt_topdown()
1664 if (!assert_continuous(&mm, size)) in igt_topdown()
1679 if (!expect_insert(&mm, node, in igt_topdown()
1707 drm_mm_for_each_node_safe(node, next, &mm) in igt_topdown()
1709 DRM_MM_BUG_ON(!drm_mm_clean(&mm)); in igt_topdown()
1715 drm_mm_for_each_node_safe(node, next, &mm) in igt_topdown()
1717 drm_mm_takedown(&mm); in igt_topdown()
1734 struct drm_mm mm; in igt_bottomup() local
1759 drm_mm_init(&mm, 0, size*count); in igt_bottomup()
1761 if (!expect_insert(&mm, &nodes[n], in igt_bottomup()
1768 if (!assert_one_hole(&mm, size*(n + 1), size*count)) in igt_bottomup()
1772 if (!assert_continuous(&mm, size)) in igt_bottomup()
1787 if (!expect_insert(&mm, node, in igt_bottomup()
1808 drm_mm_for_each_node_safe(node, next, &mm) in igt_bottomup()
1810 DRM_MM_BUG_ON(!drm_mm_clean(&mm)); in igt_bottomup()
1816 drm_mm_for_each_node_safe(node, next, &mm) in igt_bottomup()
1818 drm_mm_takedown(&mm); in igt_bottomup()
1830 struct drm_mm mm; in __igt_once() local
1834 drm_mm_init(&mm, 0, 7); in __igt_once()
1839 err = drm_mm_reserve_node(&mm, &rsvd_lo); in __igt_once()
1848 err = drm_mm_reserve_node(&mm, &rsvd_hi); in __igt_once()
1861 err = drm_mm_insert_node_generic(&mm, &node, in __igt_once()
1871 err = drm_mm_insert_node_generic(&mm, &node, 2, 0, 0, mode); in __igt_once()
1885 drm_mm_takedown(&mm); in __igt_once()
1931 struct drm_mm mm; in igt_color() local
1943 drm_mm_init(&mm, 0, U64_MAX); in igt_color()
1952 if (!expect_insert(&mm, node, in igt_color()
1961 drm_mm_for_each_node_safe(node, nn, &mm) { in igt_color()
1974 mm.color_adjust = separate_adjacent_colors; in igt_color()
1987 err = drm_mm_reserve_node(&mm, node); in igt_color()
2009 err = drm_mm_reserve_node(&mm, node); in igt_color()
2020 err = drm_mm_reserve_node(&mm, node); in igt_color()
2037 if (!expect_insert(&mm, node, in igt_color()
2047 drm_mm_for_each_node_safe(node, nn, &mm) { in igt_color()
2076 drm_mm_for_each_node_safe(node, nn, &mm) { in igt_color()
2080 drm_mm_takedown(&mm); in igt_color()
2084 static int evict_color(struct drm_mm *mm, in evict_color() argument
2100 drm_mm_scan_init_with_range(&scan, mm, in evict_color()
2110 err = drm_mm_insert_node_generic(mm, &tmp, size, alignment, color, in evict_color()
2116 show_holes(mm, 3); in evict_color()
2129 if (!assert_node(&tmp, mm, size, alignment, color)) { in evict_color()
2141 err = drm_mm_reserve_node(mm, &e->node); in evict_color()
2159 struct drm_mm mm; in igt_color_evict() local
2181 drm_mm_init(&mm, 0, 2*total_size - 1); in igt_color_evict()
2182 mm.color_adjust = separate_adjacent_colors; in igt_color_evict()
2184 if (!expect_insert(&mm, &nodes[n].node, in igt_color_evict()
2195 err = evict_color(&mm, 0, U64_MAX, in igt_color_evict()
2208 err = evict_color(&mm, 0, U64_MAX, in igt_color_evict()
2225 err = evict_color(&mm, 0, U64_MAX, in igt_color_evict()
2242 show_mm(&mm); in igt_color_evict()
2243 drm_mm_for_each_node_safe(node, next, &mm) in igt_color_evict()
2245 drm_mm_takedown(&mm); in igt_color_evict()
2262 struct drm_mm mm; in igt_color_evict_range() local
2282 drm_mm_init(&mm, 0, 2*total_size - 1); in igt_color_evict_range()
2283 mm.color_adjust = separate_adjacent_colors; in igt_color_evict_range()
2285 if (!expect_insert(&mm, &nodes[n].node, in igt_color_evict_range()
2296 err = evict_color(&mm, range_start, range_end, in igt_color_evict_range()
2309 err = evict_color(&mm, range_start, range_end, in igt_color_evict_range()
2326 err = evict_color(&mm, range_start, range_end, in igt_color_evict_range()
2343 show_mm(&mm); in igt_color_evict_range()
2344 drm_mm_for_each_node_safe(node, next, &mm) in igt_color_evict_range()
2346 drm_mm_takedown(&mm); in igt_color_evict_range()