diff options
author | Jerome Glisse <jglisse@redhat.com> | 2011-11-01 15:57:22 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-12-06 05:38:36 -0500 |
commit | 667b7a27c221acaea844ba41f1c0a713aba44d31 (patch) | |
tree | 2cea3d1fb60bcd81dd552022008e26c37b892fb7 | |
parent | 3316497bcd73dcad971d79bed32571ed785a8c01 (diff) |
drm/ttm: remove split btw highmen and lowmem page
Split btw highmem and lowmem page was rendered useless by the
pool code. Remove it. Note further cleanup would change the
ttm page allocation helper to actualy take an array instead
of relying on list this could drasticly reduce the number of
function call in the common case of allocation whole buffer.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_tt.c | 11 | ||||
-rw-r--r-- | include/drm/ttm/ttm_bo_driver.h | 7 |
2 files changed, 2 insertions, 16 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index c68b0e770d16..f0c5ffd446d9 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c | |||
@@ -70,7 +70,7 @@ static struct page *__ttm_tt_get_page(struct ttm_tt *ttm, int index) | |||
70 | struct ttm_mem_global *mem_glob = ttm->glob->mem_glob; | 70 | struct ttm_mem_global *mem_glob = ttm->glob->mem_glob; |
71 | int ret; | 71 | int ret; |
72 | 72 | ||
73 | while (NULL == (p = ttm->pages[index])) { | 73 | if (NULL == (p = ttm->pages[index])) { |
74 | 74 | ||
75 | INIT_LIST_HEAD(&h); | 75 | INIT_LIST_HEAD(&h); |
76 | 76 | ||
@@ -86,10 +86,7 @@ static struct page *__ttm_tt_get_page(struct ttm_tt *ttm, int index) | |||
86 | if (unlikely(ret != 0)) | 86 | if (unlikely(ret != 0)) |
87 | goto out_err; | 87 | goto out_err; |
88 | 88 | ||
89 | if (PageHighMem(p)) | 89 | ttm->pages[index] = p; |
90 | ttm->pages[--ttm->first_himem_page] = p; | ||
91 | else | ||
92 | ttm->pages[++ttm->last_lomem_page] = p; | ||
93 | } | 90 | } |
94 | return p; | 91 | return p; |
95 | out_err: | 92 | out_err: |
@@ -271,8 +268,6 @@ static void ttm_tt_free_alloced_pages(struct ttm_tt *ttm) | |||
271 | ttm_put_pages(&h, count, ttm->page_flags, ttm->caching_state, | 268 | ttm_put_pages(&h, count, ttm->page_flags, ttm->caching_state, |
272 | ttm->dma_address); | 269 | ttm->dma_address); |
273 | ttm->state = tt_unpopulated; | 270 | ttm->state = tt_unpopulated; |
274 | ttm->first_himem_page = ttm->num_pages; | ||
275 | ttm->last_lomem_page = -1; | ||
276 | } | 271 | } |
277 | 272 | ||
278 | void ttm_tt_destroy(struct ttm_tt *ttm) | 273 | void ttm_tt_destroy(struct ttm_tt *ttm) |
@@ -316,8 +311,6 @@ struct ttm_tt *ttm_tt_create(struct ttm_bo_device *bdev, unsigned long size, | |||
316 | 311 | ||
317 | ttm->glob = bdev->glob; | 312 | ttm->glob = bdev->glob; |
318 | ttm->num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; | 313 | ttm->num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; |
319 | ttm->first_himem_page = ttm->num_pages; | ||
320 | ttm->last_lomem_page = -1; | ||
321 | ttm->caching_state = tt_cached; | 314 | ttm->caching_state = tt_cached; |
322 | ttm->page_flags = page_flags; | 315 | ttm->page_flags = page_flags; |
323 | 316 | ||
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index 37527d671f80..9da182b400ec 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
@@ -136,11 +136,6 @@ enum ttm_caching_state { | |||
136 | * @dummy_read_page: Page to map where the ttm_tt page array contains a NULL | 136 | * @dummy_read_page: Page to map where the ttm_tt page array contains a NULL |
137 | * pointer. | 137 | * pointer. |
138 | * @pages: Array of pages backing the data. | 138 | * @pages: Array of pages backing the data. |
139 | * @first_himem_page: Himem pages are put last in the page array, which | ||
140 | * enables us to run caching attribute changes on only the first part | ||
141 | * of the page array containing lomem pages. This is the index of the | ||
142 | * first himem page. | ||
143 | * @last_lomem_page: Index of the last lomem page in the page array. | ||
144 | * @num_pages: Number of pages in the page array. | 139 | * @num_pages: Number of pages in the page array. |
145 | * @bdev: Pointer to the current struct ttm_bo_device. | 140 | * @bdev: Pointer to the current struct ttm_bo_device. |
146 | * @be: Pointer to the ttm backend. | 141 | * @be: Pointer to the ttm backend. |
@@ -157,8 +152,6 @@ enum ttm_caching_state { | |||
157 | struct ttm_tt { | 152 | struct ttm_tt { |
158 | struct page *dummy_read_page; | 153 | struct page *dummy_read_page; |
159 | struct page **pages; | 154 | struct page **pages; |
160 | long first_himem_page; | ||
161 | long last_lomem_page; | ||
162 | uint32_t page_flags; | 155 | uint32_t page_flags; |
163 | unsigned long num_pages; | 156 | unsigned long num_pages; |
164 | struct ttm_bo_global *glob; | 157 | struct ttm_bo_global *glob; |