static void ati_free_page_map(ati_page_map *page_map) { unmap_page_from_agp(virt_to_page(page_map->real)); iounmap(page_map->remapped); ClearPageReserved(virt_to_page(page_map->real)); free_page((unsigned long) page_map->real); }
static int drm_set_caching(struct drm_ttm *ttm, int noncached) { int i; struct page **cur_page; int do_tlbflush = 0; if ((ttm->page_flags & DRM_TTM_PAGE_UNCACHED) == noncached) return 0; if (noncached) drm_ttm_cache_flush(); for (i = 0; i < ttm->num_pages; ++i) { cur_page = ttm->pages + i; if (*cur_page) { if (!PageHighMem(*cur_page)) { if (noncached) { map_page_into_agp(*cur_page); } else { unmap_page_from_agp(*cur_page); } do_tlbflush = 1; } } } #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) if (do_tlbflush) { flush_agp_mappings(); } #endif DRM_FLAG_MASKED(ttm->page_flags, noncached, DRM_TTM_PAGE_UNCACHED); return 0; }
static void ati_free_page_map(struct ati_page_map *page_map) { unmap_page_from_agp(virt_to_page(page_map->real)); set_memory_wb((unsigned long)page_map->real, 1); free_page((unsigned long) page_map->real); }