diff options
Diffstat (limited to 'drivers/gpu/drm/ttm')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_agp_backend.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_tt.c | 11 |
3 files changed, 18 insertions, 7 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_agp_backend.c b/drivers/gpu/drm/ttm/ttm_agp_backend.c index e8f6d2229d8c..4648ed2f0143 100644 --- a/drivers/gpu/drm/ttm/ttm_agp_backend.c +++ b/drivers/gpu/drm/ttm/ttm_agp_backend.c | |||
| @@ -63,8 +63,7 @@ static int ttm_agp_populate(struct ttm_backend *backend, | |||
| 63 | if (!page) | 63 | if (!page) |
| 64 | page = dummy_read_page; | 64 | page = dummy_read_page; |
| 65 | 65 | ||
| 66 | mem->memory[mem->page_count++] = | 66 | mem->pages[mem->page_count++] = page; |
| 67 | phys_to_gart(page_to_phys(page)); | ||
| 68 | } | 67 | } |
| 69 | agp_be->mem = mem; | 68 | agp_be->mem = mem; |
| 70 | return 0; | 69 | return 0; |
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 1587aeca7bea..c1c407f7cca3 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c | |||
| @@ -282,7 +282,7 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, | |||
| 282 | 282 | ||
| 283 | ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement); | 283 | ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement); |
| 284 | if (ret) | 284 | if (ret) |
| 285 | return ret; | 285 | goto out_err; |
| 286 | 286 | ||
| 287 | if (mem->mem_type != TTM_PL_SYSTEM) { | 287 | if (mem->mem_type != TTM_PL_SYSTEM) { |
| 288 | ret = ttm_tt_bind(bo->ttm, mem); | 288 | ret = ttm_tt_bind(bo->ttm, mem); |
| @@ -527,9 +527,12 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, unsigned mem_type, | |||
| 527 | ret = ttm_bo_wait(bo, false, interruptible, no_wait); | 527 | ret = ttm_bo_wait(bo, false, interruptible, no_wait); |
| 528 | spin_unlock(&bo->lock); | 528 | spin_unlock(&bo->lock); |
| 529 | 529 | ||
| 530 | if (ret && ret != -ERESTART) { | 530 | if (unlikely(ret != 0)) { |
| 531 | printk(KERN_ERR TTM_PFX "Failed to expire sync object before " | 531 | if (ret != -ERESTART) { |
| 532 | "buffer eviction.\n"); | 532 | printk(KERN_ERR TTM_PFX |
| 533 | "Failed to expire sync object before " | ||
| 534 | "buffer eviction.\n"); | ||
| 535 | } | ||
| 533 | goto out; | 536 | goto out; |
| 534 | } | 537 | } |
| 535 | 538 | ||
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index c27ab3a877ad..0331fa74cd3f 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c | |||
| @@ -68,7 +68,7 @@ static void ttm_tt_cache_flush_clflush(struct page *pages[], | |||
| 68 | ttm_tt_clflush_page(*pages++); | 68 | ttm_tt_clflush_page(*pages++); |
| 69 | mb(); | 69 | mb(); |
| 70 | } | 70 | } |
| 71 | #else | 71 | #elif !defined(__powerpc__) |
| 72 | static void ttm_tt_ipi_handler(void *null) | 72 | static void ttm_tt_ipi_handler(void *null) |
| 73 | { | 73 | { |
| 74 | ; | 74 | ; |
| @@ -83,6 +83,15 @@ void ttm_tt_cache_flush(struct page *pages[], unsigned long num_pages) | |||
| 83 | ttm_tt_cache_flush_clflush(pages, num_pages); | 83 | ttm_tt_cache_flush_clflush(pages, num_pages); |
| 84 | return; | 84 | return; |
| 85 | } | 85 | } |
| 86 | #elif defined(__powerpc__) | ||
| 87 | unsigned long i; | ||
| 88 | |||
| 89 | for (i = 0; i < num_pages; ++i) { | ||
| 90 | if (pages[i]) { | ||
| 91 | unsigned long start = (unsigned long)page_address(pages[i]); | ||
| 92 | flush_dcache_range(start, start + PAGE_SIZE); | ||
| 93 | } | ||
| 94 | } | ||
| 86 | #else | 95 | #else |
| 87 | if (on_each_cpu(ttm_tt_ipi_handler, NULL, 1) != 0) | 96 | if (on_each_cpu(ttm_tt_ipi_handler, NULL, 1) != 0) |
| 88 | printk(KERN_ERR TTM_PFX | 97 | printk(KERN_ERR TTM_PFX |
