radeon/ttm/PCIe: Use dma_addr if TTM has set it.
[pandora-kernel.git] / drivers / gpu / drm / radeon / radeon_ttm.c
index 6f156e9..ca04505 100644 (file)
@@ -647,6 +647,7 @@ struct radeon_ttm_backend {
        unsigned long                   num_pages;
        struct page                     **pages;
        struct page                     *dummy_read_page;
+       dma_addr_t                      *dma_addrs;
        bool                            populated;
        bool                            bound;
        unsigned                        offset;
@@ -662,6 +663,7 @@ static int radeon_ttm_backend_populate(struct ttm_backend *backend,
 
        gtt = container_of(backend, struct radeon_ttm_backend, backend);
        gtt->pages = pages;
+       gtt->dma_addrs = dma_addrs;
        gtt->num_pages = num_pages;
        gtt->dummy_read_page = dummy_read_page;
        gtt->populated = true;
@@ -674,6 +676,7 @@ static void radeon_ttm_backend_clear(struct ttm_backend *backend)
 
        gtt = container_of(backend, struct radeon_ttm_backend, backend);
        gtt->pages = NULL;
+       gtt->dma_addrs = NULL;
        gtt->num_pages = 0;
        gtt->dummy_read_page = NULL;
        gtt->populated = false;
@@ -694,7 +697,7 @@ static int radeon_ttm_backend_bind(struct ttm_backend *backend,
                     gtt->num_pages, bo_mem, backend);
        }
        r = radeon_gart_bind(gtt->rdev, gtt->offset,
-                            gtt->num_pages, gtt->pages);
+                            gtt->num_pages, gtt->pages, gtt->dma_addrs);
        if (r) {
                DRM_ERROR("failed to bind %lu pages at 0x%08X\n",
                          gtt->num_pages, gtt->offset);