• Home
  • Raw
  • Download

Lines Matching refs:scan

739 void drm_mm_scan_init_with_range(struct drm_mm_scan *scan,  in drm_mm_scan_init_with_range()  argument
752 scan->mm = mm; in drm_mm_scan_init_with_range()
757 scan->color = color; in drm_mm_scan_init_with_range()
758 scan->alignment = alignment; in drm_mm_scan_init_with_range()
759 scan->remainder_mask = is_power_of_2(alignment) ? alignment - 1 : 0; in drm_mm_scan_init_with_range()
760 scan->size = size; in drm_mm_scan_init_with_range()
761 scan->mode = mode; in drm_mm_scan_init_with_range()
764 scan->range_start = start; in drm_mm_scan_init_with_range()
765 scan->range_end = end; in drm_mm_scan_init_with_range()
767 scan->hit_start = U64_MAX; in drm_mm_scan_init_with_range()
768 scan->hit_end = 0; in drm_mm_scan_init_with_range()
783 bool drm_mm_scan_add_block(struct drm_mm_scan *scan, in drm_mm_scan_add_block() argument
786 struct drm_mm *mm = scan->mm; in drm_mm_scan_add_block()
813 mm->color_adjust(hole, scan->color, &col_start, &col_end); in drm_mm_scan_add_block()
815 adj_start = max(col_start, scan->range_start); in drm_mm_scan_add_block()
816 adj_end = min(col_end, scan->range_end); in drm_mm_scan_add_block()
817 if (adj_end <= adj_start || adj_end - adj_start < scan->size) in drm_mm_scan_add_block()
820 if (scan->mode == DRM_MM_INSERT_HIGH) in drm_mm_scan_add_block()
821 adj_start = adj_end - scan->size; in drm_mm_scan_add_block()
823 if (scan->alignment) { in drm_mm_scan_add_block()
826 if (likely(scan->remainder_mask)) in drm_mm_scan_add_block()
827 rem = adj_start & scan->remainder_mask; in drm_mm_scan_add_block()
829 div64_u64_rem(adj_start, scan->alignment, &rem); in drm_mm_scan_add_block()
832 if (scan->mode != DRM_MM_INSERT_HIGH) in drm_mm_scan_add_block()
833 adj_start += scan->alignment; in drm_mm_scan_add_block()
834 if (adj_start < max(col_start, scan->range_start) || in drm_mm_scan_add_block()
835 min(col_end, scan->range_end) - adj_start < scan->size) in drm_mm_scan_add_block()
839 adj_end - adj_start < scan->size) in drm_mm_scan_add_block()
844 scan->hit_start = adj_start; in drm_mm_scan_add_block()
845 scan->hit_end = adj_start + scan->size; in drm_mm_scan_add_block()
847 DRM_MM_BUG_ON(scan->hit_start >= scan->hit_end); in drm_mm_scan_add_block()
848 DRM_MM_BUG_ON(scan->hit_start < hole_start); in drm_mm_scan_add_block()
849 DRM_MM_BUG_ON(scan->hit_end > hole_end); in drm_mm_scan_add_block()
874 bool drm_mm_scan_remove_block(struct drm_mm_scan *scan, in drm_mm_scan_remove_block() argument
879 DRM_MM_BUG_ON(node->mm != scan->mm); in drm_mm_scan_remove_block()
899 return (node->start + node->size > scan->hit_start && in drm_mm_scan_remove_block()
900 node->start < scan->hit_end); in drm_mm_scan_remove_block()
915 struct drm_mm_node *drm_mm_scan_color_evict(struct drm_mm_scan *scan) in drm_mm_scan_color_evict() argument
917 struct drm_mm *mm = scan->mm; in drm_mm_scan_color_evict()
935 if (hole_start <= scan->hit_start && in drm_mm_scan_color_evict()
936 hole_end >= scan->hit_end) in drm_mm_scan_color_evict()
945 DRM_MM_BUG_ON(hole_start > scan->hit_start); in drm_mm_scan_color_evict()
946 DRM_MM_BUG_ON(hole_end < scan->hit_end); in drm_mm_scan_color_evict()
948 mm->color_adjust(hole, scan->color, &hole_start, &hole_end); in drm_mm_scan_color_evict()
949 if (hole_start > scan->hit_start) in drm_mm_scan_color_evict()
951 if (hole_end < scan->hit_end) in drm_mm_scan_color_evict()