Lines Matching refs:mt
19 #define mt_dump(mt, fmt) do {} while (0)
20 #define mt_validate(mt) do {} while (0)
57 static int __init mtree_insert_index(struct maple_tree *mt,
60 return mtree_insert(mt, index, xa_mk_value(index & LONG_MAX), gfp);
63 static void __init mtree_erase_index(struct maple_tree *mt, unsigned long index)
65 MT_BUG_ON(mt, mtree_erase(mt, index) != xa_mk_value(index & LONG_MAX));
66 MT_BUG_ON(mt, mtree_load(mt, index) != NULL);
69 static int __init mtree_test_insert(struct maple_tree *mt, unsigned long index,
72 return mtree_insert(mt, index, ptr, GFP_KERNEL);
75 static int __init mtree_test_store_range(struct maple_tree *mt,
78 return mtree_store_range(mt, start, end, ptr, GFP_KERNEL);
81 static int __init mtree_test_store(struct maple_tree *mt, unsigned long start,
84 return mtree_test_store_range(mt, start, start, ptr);
87 static int __init mtree_test_insert_range(struct maple_tree *mt,
90 return mtree_insert_range(mt, start, end, ptr, GFP_KERNEL);
93 static void __init *mtree_test_load(struct maple_tree *mt, unsigned long index)
95 return mtree_load(mt, index);
98 static void __init *mtree_test_erase(struct maple_tree *mt, unsigned long index)
100 return mtree_erase(mt, index);
104 static noinline void __init check_mtree_alloc_range(struct maple_tree *mt,
112 ret = mtree_alloc_range(mt, &result, ptr, size, start, end,
114 MT_BUG_ON(mt, ret != eret);
118 MT_BUG_ON(mt, result != expected);
121 static noinline void __init check_mtree_alloc_rrange(struct maple_tree *mt,
129 ret = mtree_alloc_rrange(mt, &result, ptr, size, start, end,
131 MT_BUG_ON(mt, ret != eret);
135 MT_BUG_ON(mt, result != expected);
139 static noinline void __init check_load(struct maple_tree *mt,
142 void *ret = mtree_test_load(mt, index);
146 MT_BUG_ON(mt, ret != ptr);
149 static noinline void __init check_store_range(struct maple_tree *mt,
155 ret = mtree_test_store_range(mt, start, end, ptr);
156 MT_BUG_ON(mt, ret != expected);
162 check_load(mt, i, ptr);
165 static noinline void __init check_insert_range(struct maple_tree *mt,
171 ret = mtree_test_insert_range(mt, start, end, ptr);
172 MT_BUG_ON(mt, ret != expected);
178 check_load(mt, i, ptr);
181 static noinline void __init check_insert(struct maple_tree *mt,
186 ret = mtree_test_insert(mt, index, ptr);
187 MT_BUG_ON(mt, ret != 0);
190 static noinline void __init check_dup_insert(struct maple_tree *mt,
195 ret = mtree_test_insert(mt, index, ptr);
196 MT_BUG_ON(mt, ret != -EEXIST);
200 static noinline void __init check_index_load(struct maple_tree *mt,
203 return check_load(mt, index, xa_mk_value(index & LONG_MAX));
221 static noinline void __init check_rev_seq(struct maple_tree *mt,
226 MT_BUG_ON(mt, !mtree_empty(mt));
230 MT_BUG_ON(mt, mtree_insert_index(mt, i, GFP_KERNEL));
232 check_index_load(mt, j);
234 check_load(mt, i - 1, NULL);
235 mt_set_in_rcu(mt);
236 MT_BUG_ON(mt, !mt_height(mt));
237 mt_clear_in_rcu(mt);
238 MT_BUG_ON(mt, !mt_height(mt));
241 check_load(mt, max + 1, NULL);
246 mt_dump(mt, mt_dump_dec);
254 static noinline void __init check_seq(struct maple_tree *mt, unsigned long max,
259 MT_BUG_ON(mt, !mtree_empty(mt));
263 MT_BUG_ON(mt, mtree_insert_index(mt, i, GFP_KERNEL));
265 check_index_load(mt, j);
268 MT_BUG_ON(mt, !mt_height(mt));
269 check_load(mt, i + 1, NULL);
275 mt_dump(mt, mt_dump_dec);
283 static noinline void __init check_lb_not_empty(struct maple_tree *mt)
291 check_insert(mt, i, (void *) i);
293 check_load(mt, j-1, NULL);
294 check_load(mt, j, (void *) j);
295 check_load(mt, j+1, NULL);
299 mtree_destroy(mt);
302 static noinline void __init check_lower_bound_split(struct maple_tree *mt)
304 MT_BUG_ON(mt, !mtree_empty(mt));
305 check_lb_not_empty(mt);
308 static noinline void __init check_upper_bound_split(struct maple_tree *mt)
313 MT_BUG_ON(mt, !mtree_empty(mt));
322 check_insert(mt, i, (void *) i);
324 check_load(mt, j-1, NULL);
325 check_load(mt, j, (void *) j);
326 check_load(mt, j+1, NULL);
330 mtree_destroy(mt);
333 static noinline void __init check_mid_split(struct maple_tree *mt)
337 check_insert(mt, huge, (void *) huge);
338 check_insert(mt, 0, xa_mk_value(0));
339 check_lb_not_empty(mt);
342 static noinline void __init check_rev_find(struct maple_tree *mt)
346 MA_STATE(mas, mt, 0, 0);
349 mtree_store_range(mt, i*10, i*10 + 5,
355 MT_BUG_ON(mt, val != xa_mk_value(100));
357 MT_BUG_ON(mt, val != NULL);
361 MT_BUG_ON(mt, val != NULL);
365 MT_BUG_ON(mt, val != xa_mk_value(100));
367 MT_BUG_ON(mt, val != xa_mk_value(99));
371 MT_BUG_ON(mt, val != xa_mk_value(2));
373 MT_BUG_ON(mt, val != xa_mk_value(1));
375 MT_BUG_ON(mt, val != xa_mk_value(0));
377 MT_BUG_ON(mt, val != NULL);
381 static noinline void __init check_find(struct maple_tree *mt)
390 MA_STATE(mas, mt, 0, 0);
393 MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL));
409 MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL));
411 MT_BUG_ON(mt, mtree_insert(mt, val,
422 MT_BUG_ON(mt, xa_mk_value(val) != entry);
424 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
438 MT_BUG_ON(mt, xa_mk_value(val) != entry);
440 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
454 MT_BUG_ON(mt, xa_mk_value(val) != entry);
456 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
470 mt_for_each(mt, entry, index, max) {
471 MT_BUG_ON(mt, xa_mk_value(val) != entry);
483 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL));
484 mt_for_each(mt, entry, index, ULONG_MAX) {
486 MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
488 MT_BUG_ON(mt, xa_mk_value(val) != entry);
502 MT_BUG_ON(mt, max > 25);
504 mtree_erase_index(mt, ULONG_MAX);
508 entry = mt_find(mt, &index, 512);
509 MT_BUG_ON(mt, xa_mk_value(256) != entry);
513 entry = mt_find(mt, &index, 20);
514 MT_BUG_ON(mt, entry != NULL);
519 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL));
526 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
528 MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
530 MT_BUG_ON(mt, xa_mk_value(val) != entry);
580 MT_BUG_ON(mt, entry != entry2);
581 MT_BUG_ON(mt, index != mas.index);
582 MT_BUG_ON(mt, last != mas.last);
589 MT_BUG_ON(mt, entry != entry2);
592 MT_BUG_ON(mt, mas_prev(&mas, 0) != NULL);
595 mtree_destroy(mt);
598 static noinline void __init check_find_2(struct maple_tree *mt)
603 MA_STATE(mas, mt, 0, 0);
606 MT_BUG_ON(mt, true);
610 mtree_insert_index(mt, i, GFP_KERNEL);
615 MT_BUG_ON(mt, entry != xa_mk_value(j));
619 MT_BUG_ON(mt, j != i + 1);
623 mtree_erase_index(mt, i);
631 MT_BUG_ON(mt, entry != xa_mk_value(j));
635 MT_BUG_ON(mt, j != 256);
638 /*MT_BUG_ON(mt, !mtree_empty(mt)); */
643 static noinline void __init check_alloc_rev_range(struct maple_tree *mt)
750 MA_STATE(mas, mt, 0, 0);
752 mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
762 check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
764 mt_validate(mt);
775 MT_BUG_ON(mt, mas_empty_area_rev(&mas, min,
783 MT_BUG_ON(mt, mas.last + 1 != (holes[i+1] >> 12));
784 MT_BUG_ON(mt, mas.index != (holes[i+1] >> 12) - (holes[i+2] >> 12));
798 check_mtree_alloc_rrange(mt,
805 mt_validate(mt);
809 mtree_erase(mt, 34148798727); /* create a deleted range. */
810 mtree_erase(mt, 34148798725);
811 check_mtree_alloc_rrange(mt, 0, 34359052173, 210253414,
812 34148798725, 0, mt);
814 mtree_destroy(mt);
817 static noinline void __init check_alloc_range(struct maple_tree *mt)
925 MA_STATE(mas, mt, 0, 0);
927 mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
934 mt_dump(mt, mt_dump_hex);
936 check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
938 mt_validate(mt);
951 MT_BUG_ON(mt, mas_empty_area(&mas, min >> 12,
954 MT_BUG_ON(mt, mas.index != holes[i] >> 12);
966 check_mtree_alloc_range(mt,
973 mt_validate(mt);
975 mt_dump(mt, mt_dump_hex);
979 mtree_destroy(mt);
983 static noinline void __init check_ranges(struct maple_tree *mt)
996 MT_BUG_ON(mt, !mtree_empty(mt));
997 check_insert_range(mt, r[0], r[1], xa_mk_value(r[0]), 0);
998 check_insert_range(mt, r[2], r[3], xa_mk_value(r[2]), 0);
999 check_insert_range(mt, r[4], r[5], xa_mk_value(r[4]), -EEXIST);
1000 MT_BUG_ON(mt, !mt_height(mt));
1002 check_store_range(mt, r[4], r[5], xa_mk_value(r[4]), 0);
1003 check_store_range(mt, r[6], r[7], xa_mk_value(r[6]), 0);
1004 check_store_range(mt, r[8], r[9], xa_mk_value(r[8]), 0);
1005 MT_BUG_ON(mt, !mt_height(mt));
1006 mtree_destroy(mt);
1007 MT_BUG_ON(mt, mt_height(mt));
1009 check_seq(mt, 50, false);
1011 check_store_range(mt, 5, 47, xa_mk_value(47), 0);
1012 MT_BUG_ON(mt, !mt_height(mt));
1013 mtree_destroy(mt);
1016 check_seq(mt, 100, false);
1019 check_store_range(mt, r[10], r[11], xa_mk_value(r[10]), 0);
1020 MT_BUG_ON(mt, !mt_height(mt));
1021 mtree_destroy(mt);
1024 check_seq(mt, 200, false);
1026 check_store_range(mt, r[10], r[11], xa_mk_value(r[10]), 0);
1027 MT_BUG_ON(mt, !mt_height(mt));
1028 mtree_destroy(mt);
1030 check_seq(mt, 30, false);
1031 check_store_range(mt, 6, 18, xa_mk_value(6), 0);
1032 MT_BUG_ON(mt, !mt_height(mt));
1033 mtree_destroy(mt);
1037 check_seq(mt, 400, false);
1040 check_store_range(mt, r[12], r[13], xa_mk_value(r[12]), 0);
1042 mtree_test_erase(mt, 140);
1043 mtree_test_erase(mt, 141);
1044 mtree_test_erase(mt, 142);
1045 mtree_test_erase(mt, 143);
1046 mtree_test_erase(mt, 130);
1047 mtree_test_erase(mt, 131);
1048 mtree_test_erase(mt, 132);
1049 mtree_test_erase(mt, 133);
1050 mtree_test_erase(mt, 134);
1051 mtree_test_erase(mt, 135);
1052 check_load(mt, r[12], xa_mk_value(r[12]));
1053 check_load(mt, r[13], xa_mk_value(r[12]));
1054 check_load(mt, r[13] - 1, xa_mk_value(r[12]));
1055 check_load(mt, r[13] + 1, xa_mk_value(r[13] + 1));
1056 check_load(mt, 135, NULL);
1057 check_load(mt, 140, NULL);
1059 MT_BUG_ON(mt, !mt_height(mt));
1060 mtree_destroy(mt);
1066 check_seq(mt, 400, false);
1067 check_store_range(mt, 353, 361, xa_mk_value(353), 0);
1068 check_store_range(mt, 347, 352, xa_mk_value(347), 0);
1070 check_load(mt, 346, xa_mk_value(346));
1072 check_load(mt, i, xa_mk_value(347));
1074 check_load(mt, i, xa_mk_value(353));
1075 check_load(mt, 362, xa_mk_value(362));
1077 MT_BUG_ON(mt, !mt_height(mt));
1078 mtree_destroy(mt);
1081 check_seq(mt, 400, false);
1082 check_store_range(mt, 352, 364, NULL, 0);
1083 check_store_range(mt, 351, 363, xa_mk_value(352), 0);
1084 check_load(mt, 350, xa_mk_value(350));
1085 check_load(mt, 351, xa_mk_value(352));
1087 check_load(mt, i, xa_mk_value(352));
1088 check_load(mt, 364, NULL);
1089 check_load(mt, 365, xa_mk_value(365));
1091 MT_BUG_ON(mt, !mt_height(mt));
1092 mtree_destroy(mt);
1095 check_seq(mt, 400, false);
1096 check_store_range(mt, 352, 364, NULL, 0);
1097 check_store_range(mt, 351, 364, xa_mk_value(352), 0);
1098 check_load(mt, 350, xa_mk_value(350));
1099 check_load(mt, 351, xa_mk_value(352));
1101 check_load(mt, i, xa_mk_value(352));
1102 check_load(mt, 365, xa_mk_value(365));
1104 MT_BUG_ON(mt, !mt_height(mt));
1105 mtree_destroy(mt);
1109 check_seq(mt, 400, false);
1110 check_store_range(mt, 362, 367, xa_mk_value(362), 0);
1111 check_store_range(mt, 353, 361, xa_mk_value(353), 0);
1113 mt_validate(mt);
1114 MT_BUG_ON(mt, !mt_height(mt));
1115 mtree_destroy(mt);
1137 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1139 check_store_range(mt, 2400, 2400, xa_mk_value(2400), 0);
1140 check_store_range(mt, 2411, 2411, xa_mk_value(2411), 0);
1141 check_store_range(mt, 2412, 2412, xa_mk_value(2412), 0);
1142 check_store_range(mt, 2396, 2400, xa_mk_value(4052020), 0);
1143 check_store_range(mt, 2402, 2402, xa_mk_value(2402), 0);
1144 mtree_destroy(mt);
1151 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1153 check_store_range(mt, 2422, 2422, xa_mk_value(2422), 0);
1154 check_store_range(mt, 2424, 2424, xa_mk_value(2424), 0);
1155 check_store_range(mt, 2425, 2425, xa_mk_value(2), 0);
1156 check_store_range(mt, 2460, 2470, NULL, 0);
1157 check_store_range(mt, 2435, 2460, xa_mk_value(2435), 0);
1158 check_store_range(mt, 2461, 2470, xa_mk_value(2461), 0);
1160 MT_BUG_ON(mt, !mt_height(mt));
1161 mtree_destroy(mt);
1164 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1170 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1177 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1184 MT_BUG_ON(mt, mtree_test_store_range(mt, val, ULONG_MAX,
1192 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1199 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1209 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1216 mt_set_in_rcu(mt);
1220 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1223 MT_BUG_ON(mt, !mt_height(mt));
1224 mt_validate(mt);
1226 mtree_destroy(mt);
1229 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1234 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1236 check_store_range(mt, 161, 161, xa_mk_value(161), 0);
1237 check_store_range(mt, 162, 162, xa_mk_value(162), 0);
1238 check_store_range(mt, 163, 163, xa_mk_value(163), 0);
1239 check_store_range(mt, 240, 249, NULL, 0);
1240 mtree_erase(mt, 200);
1241 mtree_erase(mt, 210);
1242 mtree_erase(mt, 220);
1243 mtree_erase(mt, 230);
1245 MT_BUG_ON(mt, !mt_height(mt));
1246 mtree_destroy(mt);
1248 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1252 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1254 check_store_range(mt, 4600, 4959, xa_mk_value(1), 0);
1255 mt_validate(mt);
1256 MT_BUG_ON(mt, !mt_height(mt));
1257 mtree_destroy(mt);
1259 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1263 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1265 check_store_range(mt, 4811, 4811, xa_mk_value(4811), 0);
1266 check_store_range(mt, 4812, 4812, xa_mk_value(4812), 0);
1267 check_store_range(mt, 4861, 4861, xa_mk_value(4861), 0);
1268 check_store_range(mt, 4862, 4862, xa_mk_value(4862), 0);
1269 check_store_range(mt, 4842, 4849, NULL, 0);
1270 mt_validate(mt);
1271 MT_BUG_ON(mt, !mt_height(mt));
1272 mtree_destroy(mt);
1274 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1278 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1279 MT_BUG_ON(mt, mt_height(mt) >= 4);
1283 check_store_range(mt, 11450 + i, 11450 + i + 1, NULL, 0);
1285 check_store_range(mt, 11770 + i, 11770 + i + 1, NULL, 0);
1287 MT_BUG_ON(mt, mt_height(mt) >= 4);
1289 check_store_range(mt, 11700 + i, 11700 + i + 1, NULL, 0);
1291 MT_BUG_ON(mt, mt_height(mt) < 4);
1292 mtree_destroy(mt);
1295 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1299 check_store_range(mt, val, val2, xa_mk_value(val), 0);
1300 MT_BUG_ON(mt, mt_height(mt) >= 4);
1304 check_store_range(mt, 7800 + i, 7800 + i + 1, NULL, 0);
1307 check_store_range(mt, 8185 + i, 8185 + i + 1,
1309 MT_BUG_ON(mt, mt_height(mt) >= 4);
1311 check_store_range(mt, 8184, 8184, xa_mk_value(8184), 0);
1313 MT_BUG_ON(mt, mt_height(mt) != 4);
1316 static noinline void __init check_next_entry(struct maple_tree *mt)
1320 MA_STATE(mas, mt, i, i);
1322 MT_BUG_ON(mt, !mtree_empty(mt));
1324 check_seq(mt, limit, false);
1328 MT_BUG_ON(mt, mas_walk(&mas) != xa_mk_value(i++));
1332 MT_BUG_ON(mt, entry != NULL);
1334 MT_BUG_ON(mt, xa_mk_value(i) != entry);
1337 mtree_destroy(mt);
1340 static noinline void __init check_prev_entry(struct maple_tree *mt)
1346 MA_STATE(mas, mt, index, index);
1348 MT_BUG_ON(mt, !mtree_empty(mt));
1349 check_seq(mt, 30, false);
1353 MT_BUG_ON(mt, value != xa_mk_value(index));
1355 MT_BUG_ON(mt, value != xa_mk_value(index - 1));
1357 mtree_destroy(mt);
1360 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1369 MT_BUG_ON(mt, value != xa_mk_value(2));
1372 MT_BUG_ON(mt, value != NULL);
1376 MT_BUG_ON(mt, value != xa_mk_value(8));
1379 MT_BUG_ON(mt, value != NULL);
1384 static noinline void __init check_root_expand(struct maple_tree *mt)
1386 MA_STATE(mas, mt, 0, 0);
1393 MT_BUG_ON(mt, mas.index != 0);
1394 MT_BUG_ON(mt, ptr != NULL);
1395 MT_BUG_ON(mt, mas.index != 0);
1396 MT_BUG_ON(mt, mas.last != ULONG_MAX);
1404 MT_BUG_ON(mt, ptr != NULL);
1408 MT_BUG_ON(mt, ptr != &check_prev_entry);
1412 MT_BUG_ON(mt, ptr != NULL);
1414 mtree_destroy(mt);
1417 mt_init_flags(mt, 0);
1426 MT_BUG_ON(mt, ptr != NULL);
1427 MT_BUG_ON(mt, mas.index != 1);
1428 MT_BUG_ON(mt, mas.last != ULONG_MAX);
1432 MT_BUG_ON(mt, ptr != &check_prev_entry);
1433 MT_BUG_ON(mt, mas.last != 0);
1435 mtree_destroy(mt);
1437 mt_init_flags(mt, 0);
1444 MT_BUG_ON(mt, ptr != NULL);
1445 MT_BUG_ON(mt, (mas.index != 1) && (mas.last != ULONG_MAX));
1449 MT_BUG_ON(mt, (mas.index != 0) && (mas.last != 0));
1450 MT_BUG_ON(mt, ptr != (void *)((unsigned long) check_prev_entry | 1UL));
1454 mtree_destroy(mt);
1456 mt_init_flags(mt, 0);
1462 MT_BUG_ON(mt, ptr != NULL);
1463 MT_BUG_ON(mt, (mas.index != ULONG_MAX) && (mas.last != ULONG_MAX));
1467 MT_BUG_ON(mt, (mas.index != 0) && (mas.last != 0));
1468 MT_BUG_ON(mt, ptr != (void *)((unsigned long) check_prev_entry | 2UL));
1474 static noinline void __init check_gap_combining(struct maple_tree *mt)
1520 MA_STATE(mas, mt, 0, 0);
1529 MT_BUG_ON(mt, !mtree_empty(mt));
1530 check_seq(mt, singletons, false); /* create 100 singletons. */
1533 mtree_test_erase(mt, seq100[2]);
1534 check_load(mt, seq100[2], NULL);
1535 mtree_test_erase(mt, seq100[1]);
1536 check_load(mt, seq100[1], NULL);
1540 MT_BUG_ON(mt, entry != xa_mk_value(index));
1544 MT_BUG_ON(mt, entry != xa_mk_value(index + 4));
1546 MT_BUG_ON(mt, mn1 == mn2); /* test the test. */
1554 MT_BUG_ON(mt, mas_empty_area_rev(&mas, seq100[3], seq100[4],
1556 MT_BUG_ON(mt, mas.index != index + 1);
1559 mtree_test_erase(mt, seq100[6]);
1560 check_load(mt, seq100[6], NULL);
1561 mtree_test_erase(mt, seq100[7]);
1562 check_load(mt, seq100[7], NULL);
1563 mtree_test_erase(mt, seq100[8]);
1571 MT_BUG_ON(mt, entry != xa_mk_value(index));
1574 MT_BUG_ON(mt, entry != xa_mk_value(index + 4));
1577 MT_BUG_ON(mt, mn1 == mn2); /* test the next entry is in the next node. */
1584 MT_BUG_ON(mt, mas_empty_area_rev(&mas, seq100[10], seq100[11],
1586 MT_BUG_ON(mt, mas.index != seq100[6]);
1590 mtree_store(mt, seq100[13], NULL, GFP_KERNEL);
1591 check_load(mt, seq100[13], NULL);
1592 check_load(mt, seq100[14], xa_mk_value(seq100[14]));
1593 mtree_store(mt, seq100[14], NULL, GFP_KERNEL);
1594 check_load(mt, seq100[13], NULL);
1595 check_load(mt, seq100[14], NULL);
1599 MT_BUG_ON(mt, mas_empty_area_rev(&mas, seq100[16], seq100[15],
1601 MT_BUG_ON(mt, mas.index != seq100[13]);
1602 mt_validate(mt);
1610 mtree_test_store_range(mt, seq100[18], seq100[14], NULL);
1611 mtree_test_erase(mt, seq100[15]);
1614 MT_BUG_ON(mt, mas_empty_area_rev(&mas, seq100[16], seq100[19],
1617 MT_BUG_ON(mt, mas.index != seq100[18]);
1618 mt_validate(mt);
1619 mtree_destroy(mt);
1622 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1623 check_seq(mt, 2000, false);
1625 mtree_test_erase(mt, seq2000[0]);
1626 mtree_test_erase(mt, seq2000[1]);
1631 MT_BUG_ON(mt, mas_empty_area_rev(&mas, seq2000[2], seq2000[3],
1633 MT_BUG_ON(mt, mas.index != seq2000[1]);
1635 mt_validate(mt);
1636 mtree_destroy(mt);
1640 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1641 check_seq(mt, 400, false);
1642 mtree_test_store_range(mt, seq400[0], seq400[1], NULL);
1644 mtree_destroy(mt);
1646 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
1647 check_seq(mt, 400, false);
1649 mtree_test_store_range(mt, seq400[2], seq400[9],
1651 mtree_test_store_range(mt, seq400[3], seq400[9],
1653 mtree_test_store_range(mt, seq400[4], seq400[9],
1655 mtree_test_store_range(mt, seq400[5], seq400[9],
1657 mtree_test_store_range(mt, seq400[0], seq400[9],
1659 mtree_test_store_range(mt, seq400[6], seq400[9],
1661 mtree_test_store_range(mt, seq400[7], seq400[9],
1663 mtree_test_store_range(mt, seq400[8], seq400[9],
1665 mtree_test_store_range(mt, seq400[10], seq400[11],
1667 mt_validate(mt);
1669 mtree_destroy(mt);
1671 static noinline void __init check_node_overwrite(struct maple_tree *mt)
1676 mtree_test_store_range(mt, i*100, i*100 + 50, xa_mk_value(i*100));
1678 mtree_test_store_range(mt, 319951, 367950, NULL);
1679 /*mt_dump(mt, mt_dump_dec); */
1680 mt_validate(mt);
1684 static noinline void __init bench_slot_store(struct maple_tree *mt)
1689 mtree_store_range(mt, i, i + 5, xa_mk_value(i), GFP_KERNEL);
1692 mtree_store_range(mt, brk, brk, NULL, GFP_KERNEL);
1693 mtree_store_range(mt, brk_start, brk, xa_mk_value(brk),
1700 static noinline void __init bench_node_store(struct maple_tree *mt)
1705 mtree_store_range(mt, i, i + 5, xa_mk_value(i), GFP_KERNEL);
1708 mtree_store_range(mt, overwrite, overwrite + 15,
1719 static noinline void __init bench_awalk(struct maple_tree *mt)
1722 MA_STATE(mas, mt, 1470, 1470);
1725 mtree_store_range(mt, i, i + 5, xa_mk_value(i), GFP_KERNEL);
1727 mtree_store_range(mt, 1470, 1475, NULL, GFP_KERNEL);
1736 static noinline void __init bench_walk(struct maple_tree *mt)
1739 MA_STATE(mas, mt, 1470, 1470);
1742 mtree_store_range(mt, i, i + 5, xa_mk_value(i), GFP_KERNEL);
1753 static noinline void __init bench_mt_for_each(struct maple_tree *mt)
1760 mtree_store_range(mt, i, i + 4, xa_mk_value(i), GFP_KERNEL);
1765 mt_for_each(mt, entry, index, max) {
1766 MT_BUG_ON(mt, entry != xa_mk_value(j));
1777 static noinline void __init bench_mas_for_each(struct maple_tree *mt)
1782 MA_STATE(mas, mt, 0, 0);
1789 mtree_store_range(mt, i, i + gap, xa_mk_value(i), GFP_KERNEL);
1797 MT_BUG_ON(mt, entry != xa_mk_value(j));
1807 static noinline void __init bench_mas_prev(struct maple_tree *mt)
1812 MA_STATE(mas, mt, 0, 0);
1819 mtree_store_range(mt, i, i + gap, xa_mk_value(i), GFP_KERNEL);
1828 MT_BUG_ON(mt, entry != xa_mk_value(j));
1837 static noinline void __init check_forking(struct maple_tree *mt)
1843 MA_STATE(mas, mt, 0, 0);
1844 MA_STATE(newmas, mt, 0, 0);
1850 mtree_store_range(mt, i*10, i*10 + 5,
1880 static noinline void __init check_iteration(struct maple_tree *mt)
1884 MA_STATE(mas, mt, 0, 0);
1887 mtree_store_range(mt, i * 10, i * 10 + 9,
1895 MT_BUG_ON(mt, mas.index != i * 10);
1896 MT_BUG_ON(mt, mas.last != i * 10 + 9);
1907 MT_BUG_ON(mt, val != xa_mk_value(i));
1912 MT_BUG_ON(mt, mas.index != i * 10);
1913 MT_BUG_ON(mt, mas.last != i * 10 + 9);
1924 MT_BUG_ON(mt, val != xa_mk_value(i));
1929 MT_BUG_ON(mt, mas.index != i * 10);
1930 MT_BUG_ON(mt, mas.last != i * 10 + 9);
1941 MT_BUG_ON(mt, val != xa_mk_value(76));
1947 static noinline void __init check_mas_store_gfp(struct maple_tree *mt)
1953 MA_STATE(mas, mt, 0, 0);
1954 MA_STATE(newmas, mt, 0, 0);
1957 mtree_store_range(mt, i*10, i*10 + 5,
1980 static noinline void __init bench_forking(struct maple_tree *mt)
1986 MA_STATE(mas, mt, 0, 0);
1987 MA_STATE(newmas, mt, 0, 0);
1994 mtree_store_range(mt, i*10, i*10 + 5,
2026 static noinline void __init next_prev_test(struct maple_tree *mt)
2030 MA_STATE(mas, mt, 0, 0);
2050 mtree_store_range(mt, i*10, i*10 + 5,
2083 MT_BUG_ON(mt, val != NULL);
2086 MT_BUG_ON(mt, val != xa_mk_value(690 / 10));
2087 MT_BUG_ON(mt, mas.index != 690);
2088 MT_BUG_ON(mt, mas.last != 695);
2091 MT_BUG_ON(mt, val != xa_mk_value(680 / 10));
2092 MT_BUG_ON(mt, mas.index != 680);
2093 MT_BUG_ON(mt, mas.last != 685);
2096 MT_BUG_ON(mt, val != xa_mk_value(690 / 10));
2097 MT_BUG_ON(mt, mas.index != 690);
2098 MT_BUG_ON(mt, mas.last != 695);
2101 MT_BUG_ON(mt, val != xa_mk_value(700 / 10));
2102 MT_BUG_ON(mt, mas.index != 700);
2103 MT_BUG_ON(mt, mas.last != 705);
2108 MT_BUG_ON(mt, val != xa_mk_value(70 / 10));
2109 MT_BUG_ON(mt, mas.index != 70);
2110 MT_BUG_ON(mt, mas.last != 75);
2113 MT_BUG_ON(mt, val != xa_mk_value(80 / 10));
2114 MT_BUG_ON(mt, mas.index != 80);
2115 MT_BUG_ON(mt, mas.last != 85);
2118 MT_BUG_ON(mt, val != xa_mk_value(70 / 10));
2119 MT_BUG_ON(mt, mas.index != 70);
2120 MT_BUG_ON(mt, mas.last != 75);
2126 MT_BUG_ON(mt, val != NULL);
2128 MT_BUG_ON(mt, val != xa_mk_value(level2[2] / 10));
2129 MT_BUG_ON(mt, mas.index != level2[2]);
2130 MT_BUG_ON(mt, mas.last != level2[3]);
2134 MT_BUG_ON(mt, val != xa_mk_value(level2[4] / 10));
2135 MT_BUG_ON(mt, mas.index != level2[4]);
2136 MT_BUG_ON(mt, mas.last != level2[5]);
2137 MT_BUG_ON(mt, mn == mas.node);
2140 MT_BUG_ON(mt, val != xa_mk_value(level2[2] / 10));
2141 MT_BUG_ON(mt, mas.index != level2[2]);
2142 MT_BUG_ON(mt, mas.last != level2[3]);
2147 MT_BUG_ON(mt, val != xa_mk_value(nr_entries));
2148 MT_BUG_ON(mt, mas.index != (nr_entries * 10));
2149 MT_BUG_ON(mt, mas.last != (nr_entries * 10 + 5));
2152 MT_BUG_ON(mt, val != NULL);
2153 MT_BUG_ON(mt, mas.index != last_index);
2154 MT_BUG_ON(mt, mas.last != ULONG_MAX);
2157 MT_BUG_ON(mt, val != xa_mk_value(nr_entries));
2158 MT_BUG_ON(mt, mas.index != (nr_entries * 10));
2159 MT_BUG_ON(mt, mas.last != (nr_entries * 10 + 5));
2165 MT_BUG_ON(mt, val != xa_mk_value(1));
2166 MT_BUG_ON(mt, mas.index != 10);
2167 MT_BUG_ON(mt, mas.last != 15);
2170 MT_BUG_ON(mt, val != xa_mk_value(0));
2171 MT_BUG_ON(mt, mas.index != 0);
2172 MT_BUG_ON(mt, mas.last != 5);
2175 MT_BUG_ON(mt, val != NULL);
2176 MT_BUG_ON(mt, mas.index != 0);
2177 MT_BUG_ON(mt, mas.last != 5);
2178 MT_BUG_ON(mt, mas.node != MAS_UNDERFLOW);
2188 MT_BUG_ON(mt, val != NULL);
2189 MT_BUG_ON(mt, mas.index != 0);
2190 MT_BUG_ON(mt, mas.last != 9);
2193 mtree_destroy(mt);
2195 mt_init(mt);
2196 mtree_store_range(mt, 0, 0, xa_mk_value(0), GFP_KERNEL);
2197 mtree_store_range(mt, 5, 5, xa_mk_value(5), GFP_KERNEL);
2201 MT_BUG_ON(mt, val != NULL);
2208 static noinline void __init check_spanning_relatives(struct maple_tree *mt)
2214 mtree_store_range(mt, i*10, i*10 + 5,
2218 mtree_store_range(mt, 9365, 9955, NULL, GFP_KERNEL);
2221 static noinline void __init check_fuzzer(struct maple_tree *mt)
2228 mtree_test_insert(mt, 88, (void *)0xb1);
2229 mtree_test_insert(mt, 84, (void *)0xa9);
2230 mtree_test_insert(mt, 2, (void *)0x5);
2231 mtree_test_insert(mt, 4, (void *)0x9);
2232 mtree_test_insert(mt, 14, (void *)0x1d);
2233 mtree_test_insert(mt, 7, (void *)0xf);
2234 mtree_test_insert(mt, 12, (void *)0x19);
2235 mtree_test_insert(mt, 18, (void *)0x25);
2236 mtree_test_store_range(mt, 8, 18, (void *)0x11);
2237 mtree_destroy(mt);
2244 mt_init_flags(mt, 0);
2245 mtree_test_store(mt, 87, (void *)0xaf);
2246 mtree_test_store(mt, 0, (void *)0x1);
2247 mtree_test_load(mt, 4);
2248 mtree_test_insert(mt, 4, (void *)0x9);
2249 mtree_test_store(mt, 8, (void *)0x11);
2250 mtree_test_store(mt, 44, (void *)0x59);
2251 mtree_test_store(mt, 68, (void *)0x89);
2252 mtree_test_store(mt, 2, (void *)0x5);
2253 mtree_test_insert(mt, 43, (void *)0x57);
2254 mtree_test_insert(mt, 24, (void *)0x31);
2255 mtree_test_insert(mt, 844, (void *)0x699);
2256 mtree_test_store(mt, 84, (void *)0xa9);
2257 mtree_test_store(mt, 4, (void *)0x9);
2258 mtree_test_erase(mt, 4);
2259 mtree_test_load(mt, 5);
2260 mtree_test_erase(mt, 0);
2261 mtree_destroy(mt);
2268 mt_init_flags(mt, 0);
2269 mtree_test_store_range(mt, 0, ULONG_MAX, (void *)0x1);
2270 mtree_test_store(mt, 4, (void *)0x9);
2271 mtree_test_erase(mt, 5);
2272 mtree_test_erase(mt, 0);
2273 mtree_test_erase(mt, 4);
2274 mtree_test_store(mt, 5, (void *)0xb);
2275 mtree_test_erase(mt, 5);
2276 mtree_test_store(mt, 5, (void *)0xb);
2277 mtree_test_erase(mt, 5);
2278 mtree_test_erase(mt, 4);
2279 mtree_test_store(mt, 4, (void *)0x9);
2280 mtree_test_store(mt, 444, (void *)0x379);
2281 mtree_test_store(mt, 0, (void *)0x1);
2282 mtree_test_load(mt, 0);
2283 mtree_test_store(mt, 5, (void *)0xb);
2284 mtree_test_erase(mt, 0);
2285 mtree_destroy(mt);
2293 mt_init_flags(mt, 0);
2294 mtree_test_insert(mt, 261, (void *)0x20b);
2295 mtree_test_store(mt, 516, (void *)0x409);
2296 mtree_test_store(mt, 6, (void *)0xd);
2297 mtree_test_insert(mt, 5, (void *)0xb);
2298 mtree_test_insert(mt, 1256, (void *)0x9d1);
2299 mtree_test_store(mt, 4, (void *)0x9);
2300 mtree_test_erase(mt, 1);
2301 mtree_test_store(mt, 56, (void *)0x71);
2302 mtree_test_insert(mt, 1, (void *)0x3);
2303 mtree_test_store(mt, 24, (void *)0x31);
2304 mtree_test_erase(mt, 1);
2305 mtree_test_insert(mt, 2263, (void *)0x11af);
2306 mtree_test_insert(mt, 446, (void *)0x37d);
2307 mtree_test_store_range(mt, 6, 45, (void *)0xd);
2308 mtree_test_store_range(mt, 3, 446, (void *)0x7);
2309 mtree_destroy(mt);
2315 mt_init_flags(mt, 0);
2316 mtree_test_store(mt, 48, (void *)0x61);
2317 mtree_test_store(mt, 3, (void *)0x7);
2318 mtree_test_load(mt, 0);
2319 mtree_test_store(mt, 88, (void *)0xb1);
2320 mtree_test_store(mt, 81, (void *)0xa3);
2321 mtree_test_insert(mt, 0, (void *)0x1);
2322 mtree_test_insert(mt, 8, (void *)0x11);
2323 mtree_test_insert(mt, 4, (void *)0x9);
2324 mtree_test_insert(mt, 2480, (void *)0x1361);
2325 mtree_test_insert(mt, ULONG_MAX,
2327 mtree_test_erase(mt, ULONG_MAX);
2328 mtree_destroy(mt);
2337 mt_init_flags(mt, 0);
2338 mtree_test_erase(mt, 3);
2339 mtree_test_insert(mt, 22, (void *)0x2d);
2340 mtree_test_insert(mt, 15, (void *)0x1f);
2341 mtree_test_load(mt, 2);
2342 mtree_test_insert(mt, 1, (void *)0x3);
2343 mtree_test_insert(mt, 1, (void *)0x3);
2344 mtree_test_insert(mt, 5, (void *)0xb);
2345 mtree_test_erase(mt, 1);
2346 mtree_test_insert(mt, 1, (void *)0x3);
2347 mtree_test_insert(mt, 4, (void *)0x9);
2348 mtree_test_insert(mt, 1, (void *)0x3);
2349 mtree_test_erase(mt, 1);
2350 mtree_test_insert(mt, 2, (void *)0x5);
2351 mtree_test_insert(mt, 1, (void *)0x3);
2352 mtree_test_erase(mt, 3);
2353 mtree_test_insert(mt, 22, (void *)0x2d);
2354 mtree_test_insert(mt, 15, (void *)0x1f);
2355 mtree_test_insert(mt, 2, (void *)0x5);
2356 mtree_test_insert(mt, 1, (void *)0x3);
2357 mtree_test_insert(mt, 8, (void *)0x11);
2358 mtree_test_load(mt, 2);
2359 mtree_test_insert(mt, 1, (void *)0x3);
2360 mtree_test_insert(mt, 1, (void *)0x3);
2361 mtree_test_store(mt, 1, (void *)0x3);
2362 mtree_test_insert(mt, 5, (void *)0xb);
2363 mtree_test_erase(mt, 1);
2364 mtree_test_insert(mt, 1, (void *)0x3);
2365 mtree_test_insert(mt, 4, (void *)0x9);
2366 mtree_test_insert(mt, 1, (void *)0x3);
2367 mtree_test_erase(mt, 1);
2368 mtree_test_insert(mt, 2, (void *)0x5);
2369 mtree_test_insert(mt, 1, (void *)0x3);
2370 mtree_test_erase(mt, 3);
2371 mtree_test_insert(mt, 22, (void *)0x2d);
2372 mtree_test_insert(mt, 15, (void *)0x1f);
2373 mtree_test_insert(mt, 2, (void *)0x5);
2374 mtree_test_insert(mt, 1, (void *)0x3);
2375 mtree_test_insert(mt, 8, (void *)0x11);
2376 mtree_test_insert(mt, 12, (void *)0x19);
2377 mtree_test_erase(mt, 1);
2378 mtree_test_store_range(mt, 4, 62, (void *)0x9);
2379 mtree_test_erase(mt, 62);
2380 mtree_test_store_range(mt, 1, 0, (void *)0x3);
2381 mtree_test_insert(mt, 11, (void *)0x17);
2382 mtree_test_insert(mt, 3, (void *)0x7);
2383 mtree_test_insert(mt, 3, (void *)0x7);
2384 mtree_test_store(mt, 62, (void *)0x7d);
2385 mtree_test_erase(mt, 62);
2386 mtree_test_store_range(mt, 1, 15, (void *)0x3);
2387 mtree_test_erase(mt, 1);
2388 mtree_test_insert(mt, 22, (void *)0x2d);
2389 mtree_test_insert(mt, 12, (void *)0x19);
2390 mtree_test_erase(mt, 1);
2391 mtree_test_insert(mt, 3, (void *)0x7);
2392 mtree_test_store(mt, 62, (void *)0x7d);
2393 mtree_test_erase(mt, 62);
2394 mtree_test_insert(mt, 122, (void *)0xf5);
2395 mtree_test_store(mt, 3, (void *)0x7);
2396 mtree_test_insert(mt, 0, (void *)0x1);
2397 mtree_test_store_range(mt, 0, 1, (void *)0x1);
2398 mtree_test_insert(mt, 85, (void *)0xab);
2399 mtree_test_insert(mt, 72, (void *)0x91);
2400 mtree_test_insert(mt, 81, (void *)0xa3);
2401 mtree_test_insert(mt, 726, (void *)0x5ad);
2402 mtree_test_insert(mt, 0, (void *)0x1);
2403 mtree_test_insert(mt, 1, (void *)0x3);
2404 mtree_test_store(mt, 51, (void *)0x67);
2405 mtree_test_insert(mt, 611, (void *)0x4c7);
2406 mtree_test_insert(mt, 485, (void *)0x3cb);
2407 mtree_test_insert(mt, 1, (void *)0x3);
2408 mtree_test_erase(mt, 1);
2409 mtree_test_insert(mt, 0, (void *)0x1);
2410 mtree_test_insert(mt, 1, (void *)0x3);
2411 mtree_test_insert_range(mt, 26, 1, (void *)0x35);
2412 mtree_test_load(mt, 1);
2413 mtree_test_store_range(mt, 1, 22, (void *)0x3);
2414 mtree_test_insert(mt, 1, (void *)0x3);
2415 mtree_test_erase(mt, 1);
2416 mtree_test_load(mt, 53);
2417 mtree_test_load(mt, 1);
2418 mtree_test_store_range(mt, 1, 1, (void *)0x3);
2419 mtree_test_insert(mt, 222, (void *)0x1bd);
2420 mtree_test_insert(mt, 485, (void *)0x3cb);
2421 mtree_test_insert(mt, 1, (void *)0x3);
2422 mtree_test_erase(mt, 1);
2423 mtree_test_load(mt, 0);
2424 mtree_test_insert(mt, 21, (void *)0x2b);
2425 mtree_test_insert(mt, 3, (void *)0x7);
2426 mtree_test_store(mt, 621, (void *)0x4db);
2427 mtree_test_insert(mt, 0, (void *)0x1);
2428 mtree_test_erase(mt, 5);
2429 mtree_test_insert(mt, 1, (void *)0x3);
2430 mtree_test_store(mt, 62, (void *)0x7d);
2431 mtree_test_erase(mt, 62);
2432 mtree_test_store_range(mt, 1, 0, (void *)0x3);
2433 mtree_test_insert(mt, 22, (void *)0x2d);
2434 mtree_test_insert(mt, 12, (void *)0x19);
2435 mtree_test_erase(mt, 1);
2436 mtree_test_insert(mt, 1, (void *)0x3);
2437 mtree_test_store_range(mt, 4, 62, (void *)0x9);
2438 mtree_test_erase(mt, 62);
2439 mtree_test_erase(mt, 1);
2440 mtree_test_load(mt, 1);
2441 mtree_test_store_range(mt, 1, 22, (void *)0x3);
2442 mtree_test_insert(mt, 1, (void *)0x3);
2443 mtree_test_erase(mt, 1);
2444 mtree_test_load(mt, 53);
2445 mtree_test_load(mt, 1);
2446 mtree_test_store_range(mt, 1, 1, (void *)0x3);
2447 mtree_test_insert(mt, 222, (void *)0x1bd);
2448 mtree_test_insert(mt, 485, (void *)0x3cb);
2449 mtree_test_insert(mt, 1, (void *)0x3);
2450 mtree_test_erase(mt, 1);
2451 mtree_test_insert(mt, 1, (void *)0x3);
2452 mtree_test_load(mt, 0);
2453 mtree_test_load(mt, 0);
2454 mtree_destroy(mt);
2460 mt_init_flags(mt, 0);
2461 mtree_test_load(mt, 1);
2462 mtree_test_insert(mt, 102, (void *)0xcd);
2463 mtree_test_erase(mt, 2);
2464 mtree_test_erase(mt, 0);
2465 mtree_test_load(mt, 0);
2466 mtree_test_insert(mt, 4, (void *)0x9);
2467 mtree_test_insert(mt, 2, (void *)0x5);
2468 mtree_test_insert(mt, 110, (void *)0xdd);
2469 mtree_test_insert(mt, 1, (void *)0x3);
2470 mtree_test_insert_range(mt, 5, 0, (void *)0xb);
2471 mtree_test_erase(mt, 2);
2472 mtree_test_store(mt, 0, (void *)0x1);
2473 mtree_test_store(mt, 112, (void *)0xe1);
2474 mtree_test_insert(mt, 21, (void *)0x2b);
2475 mtree_test_store(mt, 1, (void *)0x3);
2476 mtree_test_insert_range(mt, 110, 2, (void *)0xdd);
2477 mtree_test_store(mt, 2, (void *)0x5);
2478 mtree_test_load(mt, 22);
2479 mtree_test_erase(mt, 2);
2480 mtree_test_store(mt, 210, (void *)0x1a5);
2481 mtree_test_store_range(mt, 0, 2, (void *)0x1);
2482 mtree_test_store(mt, 2, (void *)0x5);
2483 mtree_test_erase(mt, 2);
2484 mtree_test_erase(mt, 22);
2485 mtree_test_erase(mt, 1);
2486 mtree_test_erase(mt, 2);
2487 mtree_test_store(mt, 0, (void *)0x1);
2488 mtree_test_load(mt, 112);
2489 mtree_test_insert(mt, 2, (void *)0x5);
2490 mtree_test_erase(mt, 2);
2491 mtree_test_store(mt, 1, (void *)0x3);
2492 mtree_test_insert_range(mt, 1, 2, (void *)0x3);
2493 mtree_test_erase(mt, 0);
2494 mtree_test_erase(mt, 2);
2495 mtree_test_store(mt, 2, (void *)0x5);
2496 mtree_test_erase(mt, 0);
2497 mtree_test_erase(mt, 2);
2498 mtree_test_store(mt, 0, (void *)0x1);
2499 mtree_test_store(mt, 0, (void *)0x1);
2500 mtree_test_erase(mt, 2);
2501 mtree_test_store(mt, 2, (void *)0x5);
2502 mtree_test_erase(mt, 2);
2503 mtree_test_insert(mt, 2, (void *)0x5);
2504 mtree_test_insert_range(mt, 1, 2, (void *)0x3);
2505 mtree_test_erase(mt, 0);
2506 mtree_test_erase(mt, 2);
2507 mtree_test_store(mt, 0, (void *)0x1);
2508 mtree_test_load(mt, 112);
2509 mtree_test_store_range(mt, 110, 12, (void *)0xdd);
2510 mtree_test_store(mt, 2, (void *)0x5);
2511 mtree_test_load(mt, 110);
2512 mtree_test_insert_range(mt, 4, 71, (void *)0x9);
2513 mtree_test_load(mt, 2);
2514 mtree_test_store(mt, 2, (void *)0x5);
2515 mtree_test_insert_range(mt, 11, 22, (void *)0x17);
2516 mtree_test_erase(mt, 12);
2517 mtree_test_store(mt, 2, (void *)0x5);
2518 mtree_test_load(mt, 22);
2519 mtree_destroy(mt);
2528 mt_init_flags(mt, 0);
2529 mtree_test_store(mt, 6, (void *)0xd);
2530 mtree_test_store(mt, 67, (void *)0x87);
2531 mtree_test_insert(mt, 15, (void *)0x1f);
2532 mtree_test_insert(mt, 6716, (void *)0x3479);
2533 mtree_test_store(mt, 61, (void *)0x7b);
2534 mtree_test_insert(mt, 13, (void *)0x1b);
2535 mtree_test_store(mt, 8, (void *)0x11);
2536 mtree_test_insert(mt, 1, (void *)0x3);
2537 mtree_test_load(mt, 0);
2538 mtree_test_erase(mt, 67167);
2539 mtree_test_insert_range(mt, 6, 7167, (void *)0xd);
2540 mtree_test_insert(mt, 6, (void *)0xd);
2541 mtree_test_erase(mt, 67);
2542 mtree_test_insert(mt, 1, (void *)0x3);
2543 mtree_test_erase(mt, 667167);
2544 mtree_test_insert(mt, 6, (void *)0xd);
2545 mtree_test_store(mt, 67, (void *)0x87);
2546 mtree_test_insert(mt, 5, (void *)0xb);
2547 mtree_test_erase(mt, 1);
2548 mtree_test_insert(mt, 6, (void *)0xd);
2549 mtree_test_erase(mt, 67);
2550 mtree_test_insert(mt, 15, (void *)0x1f);
2551 mtree_test_insert(mt, 67167, (void *)0x20cbf);
2552 mtree_test_insert(mt, 1, (void *)0x3);
2553 mtree_test_load(mt, 7);
2554 mtree_test_insert(mt, 16, (void *)0x21);
2555 mtree_test_insert(mt, 36, (void *)0x49);
2556 mtree_test_store(mt, 67, (void *)0x87);
2557 mtree_test_store(mt, 6, (void *)0xd);
2558 mtree_test_insert(mt, 367, (void *)0x2df);
2559 mtree_test_insert(mt, 115, (void *)0xe7);
2560 mtree_test_store(mt, 0, (void *)0x1);
2561 mtree_test_store_range(mt, 1, 3, (void *)0x3);
2562 mtree_test_store(mt, 1, (void *)0x3);
2563 mtree_test_erase(mt, 67167);
2564 mtree_test_insert_range(mt, 6, 47, (void *)0xd);
2565 mtree_test_store(mt, 1, (void *)0x3);
2566 mtree_test_insert_range(mt, 1, 67, (void *)0x3);
2567 mtree_test_load(mt, 67);
2568 mtree_test_insert(mt, 1, (void *)0x3);
2569 mtree_test_erase(mt, 67167);
2570 mtree_destroy(mt);
2580 mt_init_flags(mt, 0);
2581 mtree_test_insert(mt, 21, (void *)0x2b);
2582 mtree_test_insert(mt, 12, (void *)0x19);
2583 mtree_test_insert(mt, 6, (void *)0xd);
2584 mtree_test_insert(mt, 8, (void *)0x11);
2585 mtree_test_insert(mt, 2, (void *)0x5);
2586 mtree_test_insert(mt, 91, (void *)0xb7);
2587 mtree_test_insert(mt, 18, (void *)0x25);
2588 mtree_test_insert(mt, 81, (void *)0xa3);
2589 mtree_test_store_range(mt, 0, 128, (void *)0x1);
2590 mtree_test_store(mt, 1, (void *)0x3);
2591 mtree_test_erase(mt, 8);
2592 mtree_test_insert(mt, 11, (void *)0x17);
2593 mtree_test_insert(mt, 8, (void *)0x11);
2594 mtree_test_insert(mt, 21, (void *)0x2b);
2595 mtree_test_insert(mt, 2, (void *)0x5);
2596 mtree_test_insert(mt, ULONG_MAX - 10, (void *)0xffffffffffffffeb);
2597 mtree_test_erase(mt, ULONG_MAX - 10);
2598 mtree_test_store_range(mt, 0, 281, (void *)0x1);
2599 mtree_test_erase(mt, 2);
2600 mtree_test_insert(mt, 1211, (void *)0x977);
2601 mtree_test_insert(mt, 111, (void *)0xdf);
2602 mtree_test_insert(mt, 13, (void *)0x1b);
2603 mtree_test_insert(mt, 211, (void *)0x1a7);
2604 mtree_test_insert(mt, 11, (void *)0x17);
2605 mtree_test_insert(mt, 5, (void *)0xb);
2606 mtree_test_insert(mt, 1218, (void *)0x985);
2607 mtree_test_insert(mt, 61, (void *)0x7b);
2608 mtree_test_store(mt, 1, (void *)0x3);
2609 mtree_test_insert(mt, 121, (void *)0xf3);
2610 mtree_test_insert(mt, 8, (void *)0x11);
2611 mtree_test_insert(mt, 21, (void *)0x2b);
2612 mtree_test_insert(mt, 2, (void *)0x5);
2613 mtree_test_insert(mt, ULONG_MAX - 10, (void *)0xffffffffffffffeb);
2614 mtree_test_erase(mt, ULONG_MAX - 10);
2618 static noinline void __init check_dup_gaps(struct maple_tree *mt,
2626 MA_STATE(mas, mt, 0, 0);
2638 mtree_store_range(mt, i*10, (i+1)*10 - gap,
2646 MT_BUG_ON(mt, ret != 0);
2662 static noinline void __init check_dup(struct maple_tree *mt)
2669 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
2670 check_dup_gaps(mt, i, true, 5);
2671 mtree_destroy(mt);
2679 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
2680 check_dup_gaps(mt, i, true, 0);
2681 mtree_destroy(mt);
2689 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
2690 check_dup_gaps(mt, i, true, 5);
2691 mtree_destroy(mt);
2699 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
2700 check_dup_gaps(mt, i, false, 5);
2701 mtree_destroy(mt);
2709 mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
2710 check_dup_gaps(mt, i, false, 5);
2711 mtree_destroy(mt);
2719 mt_init_flags(mt, 0);
2720 check_dup_gaps(mt, i, false, 5);
2721 mtree_destroy(mt);
2731 mt_init_flags(mt, 0);
2732 check_dup_gaps(mt, i, true, 5);
2733 mtree_destroy(mt);
2741 mt_init_flags(mt, 0);
2742 check_dup_gaps(mt, i, true, 5);
2743 mtree_destroy(mt);
2750 static noinline void __init check_bnode_min_spanning(struct maple_tree *mt)
2753 MA_STATE(mas, mt, 0, 0);
2769 static noinline void __init check_empty_area_window(struct maple_tree *mt)
2772 MA_STATE(mas, mt, 0, 0);
2775 mtree_store_range(mt, i*10, i*10 + 9,
2779 mtree_store_range(mt, 160, 169, NULL, GFP_KERNEL);
2783 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 5, 90, 10) != -EBUSY);
2786 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 6, 90, 5) != -EBUSY);
2790 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 5, 90, 5) != 0);
2791 MT_BUG_ON(mt, mas.index != 5);
2792 MT_BUG_ON(mt, mas.last != 9);
2798 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 5, 217, 9) != 0);
2799 MT_BUG_ON(mt, mas.index != 161);
2800 MT_BUG_ON(mt, mas.last != 169);
2804 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 100, 218, 3) != 0);
2805 MT_BUG_ON(mt, mas.index != 216);
2806 MT_BUG_ON(mt, mas.last != 218);
2810 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 100, 218, 16) != -EBUSY);
2817 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 167, 200, 4) != -EBUSY);
2824 MT_BUG_ON(mt, mas_empty_area_rev(&mas, 100, 162, 4) != -EBUSY);
2828 MT_BUG_ON(mt, mas_empty_area(&mas, 0, 100, 9) != 0);
2829 MT_BUG_ON(mt, mas.index != 0);
2830 MT_BUG_ON(mt, mas.last != 8);
2833 MT_BUG_ON(mt, mas_empty_area(&mas, 0, 100, 4) != 0);
2834 MT_BUG_ON(mt, mas.index != 0);
2835 MT_BUG_ON(mt, mas.last != 3);
2838 MT_BUG_ON(mt, mas_empty_area(&mas, 0, 100, 11) != -EBUSY);
2841 MT_BUG_ON(mt, mas_empty_area(&mas, 5, 100, 6) != -EBUSY);
2844 MT_BUG_ON(mt, mas_empty_area(&mas, 0, 8, 10) != -EINVAL);
2850 MT_BUG_ON(mt, mas_empty_area(&mas, 100, 163, 6) != -EBUSY);
2854 static noinline void __init check_empty_area_fill(struct maple_tree *mt)
2859 MA_STATE(mas, mt, 0, 0);
2868 MT_BUG_ON(mt, mas_empty_area(&mas, 0, max, size) != 0);
2869 MT_BUG_ON(mt, mas.last != mas.index + size - 1);
2879 MT_BUG_ON(mt, mas_empty_area(&mas, 0, max, size) != -EBUSY);
2884 mtree_store_range(mt, i, i + 5, (void *)i, GFP_KERNEL);
2886 mtree_erase(mt, 631668735);
2888 mtree_erase(mt, 629506047);
2892 MT_BUG_ON(mt, mas_empty_area(&mas, 629506048, 690000000, 0x5000) != 0);
3046 static noinline void __init check_state_handling(struct maple_tree *mt)
3048 MA_STATE(mas, mt, 0, 0);
3054 mtree_store_range(mt, 0, 0, ptr, GFP_KERNEL);
3059 MT_BUG_ON(mt, entry != NULL);
3060 MT_BUG_ON(mt, mas.node != MAS_UNDERFLOW);
3065 MT_BUG_ON(mt, entry != ptr);
3066 MT_BUG_ON(mt, mas.index != 0);
3067 MT_BUG_ON(mt, mas.last != 0);
3068 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3074 MT_BUG_ON(mt, entry != ptr);
3075 MT_BUG_ON(mt, mas.index != 0);
3076 MT_BUG_ON(mt, mas.last != 0);
3077 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3082 MT_BUG_ON(mt, mas.index != 1);
3083 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3084 MT_BUG_ON(mt, entry != NULL);
3085 MT_BUG_ON(mt, mas.node != MAS_NONE);
3090 MT_BUG_ON(mt, mas.index != 1);
3091 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3092 MT_BUG_ON(mt, entry != NULL);
3093 MT_BUG_ON(mt, mas.node != MAS_NONE);
3098 MT_BUG_ON(mt, entry != ptr);
3099 MT_BUG_ON(mt, mas.index != 0);
3100 MT_BUG_ON(mt, mas.last != 0);
3101 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3105 MT_BUG_ON(mt, entry != NULL);
3106 MT_BUG_ON(mt, mas.index != 1);
3107 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3108 MT_BUG_ON(mt, mas.node != MAS_NONE);
3112 MT_BUG_ON(mt, entry != NULL);
3113 MT_BUG_ON(mt, mas.index != 1);
3114 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3115 MT_BUG_ON(mt, mas.node != MAS_NONE);
3120 MT_BUG_ON(mt, entry != NULL);
3121 MT_BUG_ON(mt, mas.index != 1);
3122 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3123 MT_BUG_ON(mt, mas.node != MAS_NONE);
3127 MT_BUG_ON(mt, entry != ptr);
3128 MT_BUG_ON(mt, mas.index != 0);
3129 MT_BUG_ON(mt, mas.last != 0);
3130 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3135 MT_BUG_ON(mt, entry != ptr);
3136 MT_BUG_ON(mt, mas.index != 0);
3137 MT_BUG_ON(mt, mas.last != 0);
3138 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3142 MT_BUG_ON(mt, entry != NULL);
3143 MT_BUG_ON(mt, mas.index != 0);
3144 MT_BUG_ON(mt, mas.last != 0);
3145 MT_BUG_ON(mt, mas.node != MAS_NONE);
3149 MT_BUG_ON(mt, entry != NULL);
3150 MT_BUG_ON(mt, mas.index != 0);
3151 MT_BUG_ON(mt, mas.last != 0);
3152 MT_BUG_ON(mt, mas.node != MAS_NONE);
3157 MT_BUG_ON(mt, entry != ptr);
3158 MT_BUG_ON(mt, mas.index != 0);
3159 MT_BUG_ON(mt, mas.last != 0);
3160 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3165 MT_BUG_ON(mt, entry != NULL);
3166 MT_BUG_ON(mt, mas.index != 1);
3167 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3168 MT_BUG_ON(mt, mas.node != MAS_NONE);
3174 MT_BUG_ON(mt, entry != NULL);
3175 MT_BUG_ON(mt, mas.index != 1);
3176 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3177 MT_BUG_ON(mt, mas.node != MAS_NONE);
3182 MT_BUG_ON(mt, entry != NULL);
3183 MT_BUG_ON(mt, mas.index != 1);
3184 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3185 MT_BUG_ON(mt, mas.node != MAS_NONE);
3189 MT_BUG_ON(mt, entry != NULL);
3190 MT_BUG_ON(mt, mas.index != 1);
3191 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3192 MT_BUG_ON(mt, mas.node != MAS_NONE);
3197 MT_BUG_ON(mt, entry != ptr);
3198 MT_BUG_ON(mt, mas.index != 0);
3199 MT_BUG_ON(mt, mas.last != 0);
3200 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3206 MT_BUG_ON(mt, entry != ptr);
3207 MT_BUG_ON(mt, mas.index != 0);
3208 MT_BUG_ON(mt, mas.last != 0);
3209 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3214 MT_BUG_ON(mt, entry != ptr);
3215 MT_BUG_ON(mt, mas.index != 0);
3216 MT_BUG_ON(mt, mas.last != 0);
3217 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3221 MT_BUG_ON(mt, entry != ptr);
3222 MT_BUG_ON(mt, mas.index != 0);
3223 MT_BUG_ON(mt, mas.last != 0);
3224 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3229 MT_BUG_ON(mt, entry != NULL);
3230 MT_BUG_ON(mt, mas.index != 1);
3231 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3232 MT_BUG_ON(mt, mas.node != MAS_NONE);
3237 MT_BUG_ON(mt, entry != ptr);
3238 MT_BUG_ON(mt, mas.index != 0);
3239 MT_BUG_ON(mt, mas.last != 0);
3240 MT_BUG_ON(mt, mas.node != MAS_ROOT);
3245 mtree_store_range(mt, 0, 0, NULL, GFP_KERNEL);
3246 mtree_store_range(mt, 0x1000, 0x1500, ptr, GFP_KERNEL);
3247 mtree_store_range(mt, 0x2000, 0x2500, ptr2, GFP_KERNEL);
3248 mtree_store_range(mt, 0x3000, 0x3500, ptr3, GFP_KERNEL);
3255 MT_BUG_ON(mt, entry != ptr);
3256 MT_BUG_ON(mt, mas.index != 0x1000);
3257 MT_BUG_ON(mt, mas.last != 0x1500);
3258 MT_BUG_ON(mt, !mas_active(mas));
3264 MT_BUG_ON(mt, entry != ptr);
3265 MT_BUG_ON(mt, mas.index != 0x1000);
3266 MT_BUG_ON(mt, mas.last != 0x1500);
3267 MT_BUG_ON(mt, !mas_active(mas));
3274 MT_BUG_ON(mt, entry != ptr);
3275 MT_BUG_ON(mt, mas.index != 0x1000);
3276 MT_BUG_ON(mt, mas.last != 0x1500);
3277 MT_BUG_ON(mt, !mas_active(mas));
3281 MT_BUG_ON(mt, entry != ptr2);
3282 MT_BUG_ON(mt, mas.index != 0x2000);
3283 MT_BUG_ON(mt, mas.last != 0x2500);
3284 MT_BUG_ON(mt, !mas_active(mas));
3288 MT_BUG_ON(mt, entry != NULL);
3289 MT_BUG_ON(mt, mas.index != 0x2501);
3290 MT_BUG_ON(mt, mas.last != 0x2fff);
3291 MT_BUG_ON(mt, !mas_active(mas));
3295 MT_BUG_ON(mt, entry != ptr3);
3296 MT_BUG_ON(mt, mas.index != 0x3000);
3297 MT_BUG_ON(mt, mas.last != 0x3500);
3298 MT_BUG_ON(mt, !mas_active(mas));
3302 MT_BUG_ON(mt, entry != NULL);
3303 MT_BUG_ON(mt, mas.index != 0x3501);
3304 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3305 MT_BUG_ON(mt, !mas_active(mas));
3309 MT_BUG_ON(mt, entry != NULL);
3310 MT_BUG_ON(mt, mas.index != 0x3501);
3311 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3312 MT_BUG_ON(mt, mas.node != MAS_OVERFLOW);
3316 MT_BUG_ON(mt, entry != NULL);
3317 MT_BUG_ON(mt, mas.index != 0x3501);
3318 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3319 MT_BUG_ON(mt, mas.node != MAS_OVERFLOW);
3323 MT_BUG_ON(mt, entry != ptr3);
3324 MT_BUG_ON(mt, mas.index != 0x3000);
3325 MT_BUG_ON(mt, mas.last != 0x3500);
3326 MT_BUG_ON(mt, !mas_active(mas));
3334 MT_BUG_ON(mt, entry != ptr2);
3335 MT_BUG_ON(mt, mas.index != 0x2000);
3336 MT_BUG_ON(mt, mas.last != 0x2500);
3337 MT_BUG_ON(mt, !mas_active(mas));
3341 MT_BUG_ON(mt, entry != ptr);
3342 MT_BUG_ON(mt, mas.index != 0x1000);
3343 MT_BUG_ON(mt, mas.last != 0x1500);
3344 MT_BUG_ON(mt, !mas_active(mas));
3348 MT_BUG_ON(mt, entry != NULL);
3349 MT_BUG_ON(mt, mas.index != 0);
3350 MT_BUG_ON(mt, mas.last != 0x0FFF);
3351 MT_BUG_ON(mt, !mas_active(mas));
3355 MT_BUG_ON(mt, entry != NULL);
3356 MT_BUG_ON(mt, mas.index != 0);
3357 MT_BUG_ON(mt, mas.last != 0x0FFF);
3358 MT_BUG_ON(mt, mas.node != MAS_UNDERFLOW);
3362 MT_BUG_ON(mt, entry != NULL);
3363 MT_BUG_ON(mt, mas.index != 0);
3364 MT_BUG_ON(mt, mas.last != 0x0FFF);
3365 MT_BUG_ON(mt, mas.node != MAS_UNDERFLOW);
3369 MT_BUG_ON(mt, entry != ptr);
3370 MT_BUG_ON(mt, mas.index != 0x1000);
3371 MT_BUG_ON(mt, mas.last != 0x1500);
3372 MT_BUG_ON(mt, !mas_active(mas));
3376 MT_BUG_ON(mt, entry != NULL);
3377 MT_BUG_ON(mt, mas.index != 0x1000);
3378 MT_BUG_ON(mt, mas.last != 0x1500);
3379 MT_BUG_ON(mt, mas.node != MAS_UNDERFLOW);
3383 MT_BUG_ON(mt, entry != ptr);
3384 MT_BUG_ON(mt, mas.index != 0x1000);
3385 MT_BUG_ON(mt, mas.last != 0x1500);
3386 MT_BUG_ON(mt, !mas_active(mas));
3391 MT_BUG_ON(mt, entry != ptr3);
3394 MT_BUG_ON(mt, entry != ptr2);
3395 MT_BUG_ON(mt, mas.index != 0x2000);
3396 MT_BUG_ON(mt, mas.last != 0x2500);
3397 MT_BUG_ON(mt, !mas_active(mas));
3401 MT_BUG_ON(mt, entry != NULL);
3402 MT_BUG_ON(mt, mas.index != 0x1501);
3403 MT_BUG_ON(mt, mas.last != 0x1FFF);
3404 MT_BUG_ON(mt, !mas_active(mas));
3408 MT_BUG_ON(mt, entry != ptr);
3409 MT_BUG_ON(mt, mas.index != 0x1000);
3410 MT_BUG_ON(mt, mas.last != 0x1500);
3411 MT_BUG_ON(mt, !mas_active(mas));
3416 MT_BUG_ON(mt, entry != ptr);
3417 MT_BUG_ON(mt, mas.index != 0x1000);
3418 MT_BUG_ON(mt, mas.last != 0x1500);
3419 MT_BUG_ON(mt, !mas_active(mas));
3425 MT_BUG_ON(mt, entry != ptr);
3426 MT_BUG_ON(mt, mas.index != 0x1000);
3427 MT_BUG_ON(mt, mas.last != 0x1500);
3428 MT_BUG_ON(mt, !mas_active(mas));
3433 MT_BUG_ON(mt, entry != ptr);
3434 MT_BUG_ON(mt, mas.index != 0x1000);
3435 MT_BUG_ON(mt, mas.last != 0x1500);
3436 MT_BUG_ON(mt, !mas_active(mas));
3440 MT_BUG_ON(mt, entry != ptr2);
3441 MT_BUG_ON(mt, mas.index != 0x2000);
3442 MT_BUG_ON(mt, mas.last != 0x2500);
3443 MT_BUG_ON(mt, !mas_active(mas));
3448 MT_BUG_ON(mt, entry != NULL);
3449 MT_BUG_ON(mt, mas.index != 0x2501);
3450 MT_BUG_ON(mt, mas.last != 0x2FFF);
3451 MT_BUG_ON(mt, !mas_active(mas));
3455 MT_BUG_ON(mt, entry != ptr3);
3456 MT_BUG_ON(mt, mas.index != 0x3000);
3457 MT_BUG_ON(mt, mas.last != 0x3500);
3458 MT_BUG_ON(mt, !mas_active(mas));
3462 MT_BUG_ON(mt, entry != NULL);
3463 MT_BUG_ON(mt, mas.index != 0x3501);
3464 MT_BUG_ON(mt, mas.last != ULONG_MAX);
3465 MT_BUG_ON(mt, !mas_active(mas));
3469 MT_BUG_ON(mt, entry != ptr3);
3470 MT_BUG_ON(mt, mas.index != 0x3000);
3471 MT_BUG_ON(mt, mas.last != 0x3500);
3472 MT_BUG_ON(mt, !mas_active(mas));
3476 MT_BUG_ON(mt, entry != ptr2);
3477 MT_BUG_ON(mt, mas.index != 0x2000);
3478 MT_BUG_ON(mt, mas.last != 0x2500);
3479 MT_BUG_ON(mt, !mas_active(mas));
3484 MT_BUG_ON(mt, entry != ptr);
3485 MT_BUG_ON(mt, mas.index != 0x1000);
3486 MT_BUG_ON(mt, mas.last != 0x1500);
3487 MT_BUG_ON(mt, !mas_active(mas));
3491 MT_BUG_ON(mt, entry != NULL);
3492 MT_BUG_ON(mt, mas.index != 0);
3493 MT_BUG_ON(mt, mas.last != 0x0FFF);
3494 MT_BUG_ON(mt, !mas_active(mas));
3499 MT_BUG_ON(mt, entry != ptr);
3500 MT_BUG_ON(mt, mas.index != 0x1000);
3501 MT_BUG_ON(mt, mas.last != 0x1500);
3502 MT_BUG_ON(mt, !mas_active(mas));
3507 MT_BUG_ON(mt, entry != ptr);
3508 MT_BUG_ON(mt, mas.index != 0x1000);
3509 MT_BUG_ON(mt, mas.last != 0x1500);
3510 MT_BUG_ON(mt, !mas_active(mas));
3515 MT_BUG_ON(mt, entry != NULL);
3516 MT_BUG_ON(mt, mas.index != 0x1501);
3517 MT_BUG_ON(mt, mas.last != 0x1fff);
3518 MT_BUG_ON(mt, !mas_active(mas));
3524 MT_BUG_ON(mt, entry != ptr);
3525 MT_BUG_ON(mt, mas.index != 0x1000);
3526 MT_BUG_ON(mt, mas.last != 0x1500);
3527 MT_BUG_ON(mt, !mas_active(mas));
3533 MT_BUG_ON(mt, entry != NULL);
3534 MT_BUG_ON(mt, mas.index != 0x1501);
3535 MT_BUG_ON(mt, mas.last != 0x1fff);
3536 MT_BUG_ON(mt, !mas_active(mas));
3542 MT_BUG_ON(mt, entry != ptr);
3543 MT_BUG_ON(mt, mas.index != 0x1000);
3544 MT_BUG_ON(mt, mas.last != 0x1500);
3545 MT_BUG_ON(mt, !mas_active(mas));
3551 MT_BUG_ON(mt, entry != NULL);
3552 MT_BUG_ON(mt, mas.index != 0x1501);
3553 MT_BUG_ON(mt, mas.last != 0x1fff);
3554 MT_BUG_ON(mt, !mas_active(mas));
3561 MT_BUG_ON(mt, entry != ptr);
3562 MT_BUG_ON(mt, mas.index != 0x1000);
3563 MT_BUG_ON(mt, mas.last != 0x1500);
3564 MT_BUG_ON(mt, !mas_active(mas));
3570 MT_BUG_ON(mt, entry != NULL);
3571 MT_BUG_ON(mt, mas.index != 0x1501);
3572 MT_BUG_ON(mt, mas.last != 0x1fff);
3573 MT_BUG_ON(mt, !mas_active(mas));