Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d87dfdbf authored by Dave Airlie's avatar Dave Airlie
Browse files

Revert "ttm: Utilize the DMA API for pages that have TTM_PAGE_FLAG_DMA32 set."



This reverts commit 69a07f0b.

We've tracked a number of problems back to this, and Thomas
thinks we should redesign this for .40/41 anyways so I'm
happy to revert it.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent cbf15bdb
Loading
Loading
Loading
Loading
+3 −23
Original line number Diff line number Diff line
@@ -683,15 +683,6 @@ int ttm_get_pages(struct list_head *pages, int flags,
			gfp_flags |= GFP_HIGHUSER;

		for (r = 0; r < count; ++r) {
			if ((flags & TTM_PAGE_FLAG_DMA32) && dma_address) {
				void *addr;
				addr = dma_alloc_coherent(NULL, PAGE_SIZE,
							  &dma_address[r],
							  gfp_flags);
				if (addr == NULL)
					return -ENOMEM;
				p = virt_to_page(addr);
			} else
			p = alloc_page(gfp_flags);
			if (!p) {

@@ -699,6 +690,7 @@ int ttm_get_pages(struct list_head *pages, int flags,
				       "Unable to allocate page.");
				return -ENOMEM;
			}

			list_add(&p->lru, pages);
		}
		return 0;
@@ -746,24 +738,12 @@ 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 */

		r = page_count-1;
		list_for_each_entry_safe(p, tmp, pages, lru) {
			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);
			r--;
		}
		/* Make the pages list empty */
		INIT_LIST_HEAD(pages);