On 01/07/2011 06:11 PM, Konrad Rzeszutek Wilk wrote:
We only use the "if (pool == NULL)" path for right now.
Signed-off-by: Konrad Rzeszutek Wilk<konrad.wilk at oracle.com>
Patch name is incorrect, also see potential indentation issue below, otherwise Reviewed-by: Thomas Hellstrom thomas@shipmail.org
drivers/gpu/drm/ttm/ttm_page_alloc.c | 26 +++++++++++++++++++++++--- 1 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c index 6859288..5d09677 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -683,14 +683,22 @@ int ttm_get_pages(struct list_head *pages, int flags, gfp_flags |= GFP_HIGHUSER;
for (r = 0; r< count; ++r) {
p = alloc_page(gfp_flags);
if ((flags& TTM_PAGE_FLAG_DMA32)&& dma_address) {
void *addr;
addr = dma_alloc_coherent(NULL, PAGE_SIZE,
&dma_address[r],
gfp_flags);
Indentation again
if (addr == NULL)
return -ENOMEM;
p = virt_to_page(addr);
} else
p = alloc_page(gfp_flags); if (!p) { printk(KERN_ERR TTM_PFX "Unable to allocate page."); return -ENOMEM; }
} return 0;list_add(&p->lru, pages);
@@ -739,12 +747,24 @@ void ttm_put_pages(struct list_head *pages, unsigned page_count, int flags, unsigned long irq_flags; struct ttm_page_pool *pool = ttm_get_pool(flags, cstate); struct page *p, *tmp;
- unsigned r;
if (pool == NULL) { /* No pool for this memory type so free the pages */
list_for_each_entry_safe(p, tmp, pages, lru) {r = page_count-1;
__free_page(p);
if ((flags& TTM_PAGE_FLAG_DMA32)&& dma_address) {
void *addr = page_address(p);
WARN_ON(!addr || !dma_address[r]);
if (addr)
dma_free_coherent(NULL, PAGE_SIZE,
addr,
dma_address[r]);
dma_address[r] = 0;
} else
__free_page(p);
} /* Make the pages list empty */ INIT_LIST_HEAD(pages);r--;