aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp/intel-agp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/agp/intel-agp.c')
-rw-r--r--drivers/char/agp/intel-agp.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 03eac1eb8e0f..189efb6ef970 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -210,13 +210,11 @@ static void *i8xx_alloc_pages(void)
210 if (page == NULL) 210 if (page == NULL)
211 return NULL; 211 return NULL;
212 212
213 if (change_page_attr(page, 4, PAGE_KERNEL_NOCACHE) < 0) { 213 if (set_pages_uc(page, 4) < 0) {
214 change_page_attr(page, 4, PAGE_KERNEL); 214 set_pages_wb(page, 4);
215 global_flush_tlb();
216 __free_pages(page, 2); 215 __free_pages(page, 2);
217 return NULL; 216 return NULL;
218 } 217 }
219 global_flush_tlb();
220 get_page(page); 218 get_page(page);
221 atomic_inc(&agp_bridge->current_memory_agp); 219 atomic_inc(&agp_bridge->current_memory_agp);
222 return page_address(page); 220 return page_address(page);
@@ -230,8 +228,7 @@ static void i8xx_destroy_pages(void *addr)
230 return; 228 return;
231 229
232 page = virt_to_page(addr); 230 page = virt_to_page(addr);
233 change_page_attr(page, 4, PAGE_KERNEL); 231 set_pages_wb(page, 4);
234 global_flush_tlb();
235 put_page(page); 232 put_page(page);
236 __free_pages(page, 2); 233 __free_pages(page, 2);
237 atomic_dec(&agp_bridge->current_memory_agp); 234 atomic_dec(&agp_bridge->current_memory_agp);
@@ -341,7 +338,6 @@ static struct agp_memory *alloc_agpphysmem_i8xx(size_t pg_count, int type)
341 338
342 switch (pg_count) { 339 switch (pg_count) {
343 case 1: addr = agp_bridge->driver->agp_alloc_page(agp_bridge); 340 case 1: addr = agp_bridge->driver->agp_alloc_page(agp_bridge);
344 global_flush_tlb();
345 break; 341 break;
346 case 4: 342 case 4:
347 /* kludge to get 4 physical pages for ARGB cursor */ 343 /* kludge to get 4 physical pages for ARGB cursor */
@@ -404,7 +400,6 @@ static void intel_i810_free_by_type(struct agp_memory *curr)
404 else { 400 else {
405 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), 401 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]),
406 AGP_PAGE_DESTROY_UNMAP); 402 AGP_PAGE_DESTROY_UNMAP);
407 global_flush_tlb();
408 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), 403 agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]),
409 AGP_PAGE_DESTROY_FREE); 404 AGP_PAGE_DESTROY_FREE);
410 } 405 }