Lines Matching refs:order
54 * @vaddr: original vaddr return for the mapping and order in the lower bits
78 /* Allocate pages of size 1 << order with the given gfp_flags */
80 unsigned int order)
87 /* Don't set the __GFP_COMP flag for higher order allocations.
91 if (order)
96 p = alloc_pages_node(pool->nid, gfp_flags, order);
98 p->private = order;
106 if (order)
109 vaddr = dma_alloc_attrs(pool->dev, (1ULL << order) * PAGE_SIZE,
122 dma->vaddr = (unsigned long)vaddr | order;
131 /* Reset the caching and pages of size 1 << order */
133 unsigned int order, struct page *p)
144 set_pages_wb(p, 1 << order);
148 __free_pages(p, order);
152 if (order)
157 dma_free_attrs(pool->dev, (1UL << order) * PAGE_SIZE, vaddr, dma->addr,
184 /* Map pages of 1 << order size and fill the DMA address array */
185 static int ttm_pool_map(struct ttm_pool *pool, unsigned int order,
196 size_t size = (1ULL << order) * PAGE_SIZE;
203 for (i = 1 << order; i ; --i) {
211 /* Unmap pages of 1 << order size */
226 unsigned int i, num_pages = 1 << pt->order;
238 atomic_long_add(1 << pt->order, &allocated_pages);
249 atomic_long_sub(1 << pt->order, &allocated_pages);
259 enum ttm_caching caching, unsigned int order)
263 pt->order = order;
282 ttm_pool_free_page(pt->pool, pt->caching, pt->order, p);
285 /* Return the pool_type to use for the given caching and order */
288 unsigned int order)
291 return &pool->caching[caching].orders[order];
297 return &global_dma32_write_combined[order];
299 return &global_write_combined[order];
302 return &global_dma32_uncached[order];
304 return &global_uncached[order];
327 ttm_pool_free_page(pt->pool, pt->caching, pt->order, p);
328 num_pages = 1 << pt->order;
336 /* Return the allocation order based for a page */
349 static int ttm_pool_page_allocated(struct ttm_pool *pool, unsigned int order,
358 r = ttm_pool_map(pool, order, p, dma_addr);
363 *num_pages -= 1 << order;
364 for (i = 1 << order; i; --i, ++(*pages), ++p)
388 unsigned int order;
394 order = ttm_pool_page_order(pool, *pages);
395 nr = (1UL << order);
399 pt = ttm_pool_select_type(pool, caching, order);
403 ttm_pool_free_page(pool, caching, order, *pages);
429 unsigned int order;
447 for (order = min_t(unsigned int, MAX_ORDER, __fls(num_pages));
449 order = min_t(unsigned int, order, __fls(num_pages))) {
453 pt = ttm_pool_select_type(pool, tt->caching, order);
463 r = ttm_pool_page_allocated(pool, order, p,
471 if (num_pages < (1 << order))
479 while (num_pages >= (1 << order) &&
480 (p = ttm_pool_alloc_page(pool, gfp_flags, order))) {
489 r = ttm_pool_page_allocated(pool, order, p, &dma_addr,
498 if (order) {
499 --order;
514 ttm_pool_free_page(pool, page_caching, order, p);
638 /* Print a nice header for the order */