Lines Matching refs:mas
380 MA_STATE(mas, &mod_area_mt, 0, module_tags.size); in clean_unused_module_areas_locked()
383 mas_for_each(&mas, val, module_tags.size) { in clean_unused_module_areas_locked()
391 start_tag = (struct alloc_tag *)(module_tags.start_addr + mas.index); in clean_unused_module_areas_locked()
392 end_tag = (struct alloc_tag *)(module_tags.start_addr + mas.last); in clean_unused_module_areas_locked()
394 mas_erase(&mas); in clean_unused_module_areas_locked()
399 static bool find_aligned_area(struct ma_state *mas, unsigned long section_size, in find_aligned_area() argument
406 if (!mas_empty_area(mas, 0, section_size - 1, prepend + size)) { in find_aligned_area()
407 if (IS_ALIGNED(mas->index + prepend, align)) in find_aligned_area()
411 mas_reset(mas); in find_aligned_area()
412 if (!mas_empty_area(mas, 0, section_size - 1, in find_aligned_area()
421 mas_reset(mas); in find_aligned_area()
492 MA_STATE(mas, &mod_area_mt, 0, section_size - 1); in reserve_module_tags()
514 mas_lock(&mas); in reserve_module_tags()
515 if (!find_aligned_area(&mas, section_size, size, prepend, align)) { in reserve_module_tags()
521 offset = mas.index; in reserve_module_tags()
524 if (offset != mas.index) { in reserve_module_tags()
525 unsigned long pad_start = mas.index; in reserve_module_tags()
527 mas.last = offset - 1; in reserve_module_tags()
528 mas_store(&mas, &prepend_mod); in reserve_module_tags()
529 if (mas_is_err(&mas)) { in reserve_module_tags()
530 ret = ERR_PTR(xa_err(mas.node)); in reserve_module_tags()
533 mas.index = offset; in reserve_module_tags()
534 mas.last = offset + size - 1; in reserve_module_tags()
535 mas_store(&mas, mod); in reserve_module_tags()
536 if (mas_is_err(&mas)) { in reserve_module_tags()
537 mas.index = pad_start; in reserve_module_tags()
538 mas_erase(&mas); in reserve_module_tags()
539 ret = ERR_PTR(xa_err(mas.node)); in reserve_module_tags()
542 mas.last = offset + size - 1; in reserve_module_tags()
543 mas_store(&mas, mod); in reserve_module_tags()
544 if (mas_is_err(&mas)) in reserve_module_tags()
545 ret = ERR_PTR(xa_err(mas.node)); in reserve_module_tags()
548 mas_unlock(&mas); in reserve_module_tags()
577 MA_STATE(mas, &mod_area_mt, module_tags.size, module_tags.size); in release_module_tags()
582 mas_lock(&mas); in release_module_tags()
583 mas_for_each_rev(&mas, val, 0) in release_module_tags()
593 start_tag = (struct alloc_tag *)(module_tags.start_addr + mas.index); in release_module_tags()
594 end_tag = (struct alloc_tag *)(module_tags.start_addr + mas.last); in release_module_tags()
613 mas_store(&mas, used ? &unloaded_mod : NULL); in release_module_tags()
614 val = mas_prev_range(&mas, 0); in release_module_tags()
616 mas_store(&mas, NULL); in release_module_tags()
618 mas_unlock(&mas); in release_module_tags()
651 MA_STATE(mas, &mod_area_mt, 0, module_tags.size); in replace_module()
654 mas_lock(&mas); in replace_module()
655 mas_for_each(&mas, val, module_tags.size) { in replace_module()
659 mas_store_gfp(&mas, new_mod, GFP_KERNEL); in replace_module()
662 mas_unlock(&mas); in replace_module()