Skip to content

Commit

Permalink
drm: ati_pcigart: simplify page_count manipulations
Browse files Browse the repository at this point in the history
From: Nick Piggin <npiggin@suse.de>

Allocate a compound page for the user mapping instead of tweaking the page
refcounts.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Dave Airlie <airlied@linux.ie>
  • Loading branch information
Dave Airlie authored and Dave Airlie committed Jan 25, 2006
1 parent f1e5c03 commit 507d256
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions drivers/char/drm/ati_pcigart.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,16 @@ static void *drm_ati_alloc_pcigart_table(void)
int i;
DRM_DEBUG("%s\n", __FUNCTION__);

address = __get_free_pages(GFP_KERNEL, ATI_PCIGART_TABLE_ORDER);
address = __get_free_pages(GFP_KERNEL | __GFP_COMP,
ATI_PCIGART_TABLE_ORDER);
if (address == 0UL) {
return NULL;
}

page = virt_to_page(address);

for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++) {
get_page(page);
for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++)
SetPageReserved(page);
}

DRM_DEBUG("%s: returning 0x%08lx\n", __FUNCTION__, address);
return (void *)address;
Expand All @@ -83,10 +82,8 @@ static void drm_ati_free_pcigart_table(void *address)

page = virt_to_page((unsigned long)address);

for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++) {
__put_page(page);
for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++)
ClearPageReserved(page);
}

free_pages((unsigned long)address, ATI_PCIGART_TABLE_ORDER);
}
Expand Down

0 comments on commit 507d256

Please sign in to comment.