Rev 5078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5078 | Rev 5271 | ||
---|---|---|---|
Line 47... | Line 47... | ||
47 | spinlock_t lock; |
47 | spinlock_t lock; |
48 | }; |
48 | }; |
Line 49... | Line 49... | ||
49 | 49 | ||
50 | static int ttm_bo_man_get_node(struct ttm_mem_type_manager *man, |
50 | static int ttm_bo_man_get_node(struct ttm_mem_type_manager *man, |
51 | struct ttm_buffer_object *bo, |
51 | struct ttm_buffer_object *bo, |
52 | struct ttm_placement *placement, |
- | |
53 | uint32_t flags, |
52 | const struct ttm_place *place, |
54 | struct ttm_mem_reg *mem) |
53 | struct ttm_mem_reg *mem) |
55 | { |
54 | { |
56 | struct ttm_range_manager *rman = (struct ttm_range_manager *) man->priv; |
55 | struct ttm_range_manager *rman = (struct ttm_range_manager *) man->priv; |
57 | struct drm_mm *mm = &rman->mm; |
56 | struct drm_mm *mm = &rman->mm; |
- | 57 | struct drm_mm_node *node = NULL; |
|
58 | struct drm_mm_node *node = NULL; |
58 | enum drm_mm_search_flags sflags = DRM_MM_SEARCH_BEST; |
59 | enum drm_mm_allocator_flags aflags = DRM_MM_CREATE_DEFAULT; |
59 | enum drm_mm_allocator_flags aflags = DRM_MM_CREATE_DEFAULT; |
60 | unsigned long lpfn; |
60 | unsigned long lpfn; |
Line 61... | Line 61... | ||
61 | int ret; |
61 | int ret; |
62 | 62 | ||
63 | lpfn = placement->lpfn; |
63 | lpfn = place->lpfn; |
Line 64... | Line 64... | ||
64 | if (!lpfn) |
64 | if (!lpfn) |
65 | lpfn = man->size; |
65 | lpfn = man->size; |
66 | 66 | ||
Line 67... | Line 67... | ||
67 | node = kzalloc(sizeof(*node), GFP_KERNEL); |
67 | node = kzalloc(sizeof(*node), GFP_KERNEL); |
- | 68 | if (!node) |
|
68 | if (!node) |
69 | return -ENOMEM; |
- | 70 | ||
Line 69... | Line 71... | ||
69 | return -ENOMEM; |
71 | if (place->flags & TTM_PL_FLAG_TOPDOWN) { |
70 | 72 | sflags = DRM_MM_SEARCH_BELOW; |
|
71 | if (flags & TTM_PL_FLAG_TOPDOWN) |
73 | aflags = DRM_MM_CREATE_TOP; |
72 | aflags = DRM_MM_CREATE_TOP; |
74 | } |
73 | - | ||
74 | spin_lock(&rman->lock); |
75 | |
75 | ret = drm_mm_insert_node_in_range_generic(mm, node, mem->num_pages, |
76 | spin_lock(&rman->lock); |
Line 76... | Line 77... | ||
76 | mem->page_alignment, 0, |
77 | ret = drm_mm_insert_node_in_range_generic(mm, node, mem->num_pages, |
77 | placement->fpfn, lpfn, |
78 | mem->page_alignment, 0, |
78 | DRM_MM_SEARCH_BEST, |
79 | place->fpfn, lpfn, |