if (set_pages_uc(page, 4) < 0) {
set_pages_wb(page, 4);
- global_flush_tlb();
__free_pages(page, 2);
return NULL;
}
- global_flush_tlb();
get_page(page);
atomic_inc(&agp_bridge->current_memory_agp);
return page_address(page);
page = virt_to_page(addr);
set_pages_wb(page, 4);
- global_flush_tlb();
put_page(page);
__free_pages(page, 2);
atomic_dec(&agp_bridge->current_memory_agp);
switch (pg_count) {
case 1: addr = agp_bridge->driver->agp_alloc_page(agp_bridge);
- global_flush_tlb();
break;
case 4:
/* kludge to get 4 physical pages for ARGB cursor */
else {
agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]),
AGP_PAGE_DESTROY_UNMAP);
- global_flush_tlb();
agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]),
AGP_PAGE_DESTROY_FREE);
}