]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
AGP: Allocate AGP pages with GFP_DMA32 by default
authorLinus Torvalds <torvalds@osdl.org>
Fri, 15 Dec 2006 00:56:30 +0000 (01:56 +0100)
committerAdrian Bunk <bunk@stusta.de>
Fri, 15 Dec 2006 00:56:30 +0000 (01:56 +0100)
Not all graphic page remappers support physical addresses over the 4GB
mark for remapping, so while some do (the AMD64 GART always did, and I
just fixed the i965 to do so properly), we're safest off just forcing
GFP_DMA32 allocations to make sure graphics pages get allocated in the
low 32-bit address space by default.

AGP sub-drivers that really care, and can do better, could just choose
to implement their own allocator (or we could add another "64-bit safe"
default allocator for their use), but quite frankly, you're not likely
to care in practice.

So for now, this trivial change means that we won't be allocating pages
that we can't map correctly by mistake on x86-64.

[ On traditional 32-bit x86, this could never happen, because GFP_KERNEL
  would never allocate any highmem memory anyway ]

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
drivers/char/agp/generic.c
drivers/char/agp/intel-agp.c

index 5567ce8d72b06edfc726bbdf9c3416938430a5ab..37e10ff3b539dfcbc8969cddd2569f33f21bd9d2 100644 (file)
@@ -1045,7 +1045,7 @@ void *agp_generic_alloc_page(struct agp_bridge_data *bridge)
 {
        struct page * page;
 
-       page = alloc_page(GFP_KERNEL);
+       page = alloc_page(GFP_KERNEL | GFP_DMA32);
        if (page == NULL)
                return NULL;
 
index 631531fd97a58dab4b619aa0c0ecb9728ddb3f41..867f353b38ff0125587b7ed834b3b02d87b8c1d7 100644 (file)
@@ -160,7 +160,7 @@ static void *i8xx_alloc_pages(void)
 {
        struct page * page;
 
-       page = alloc_pages(GFP_KERNEL, 2);
+       page = alloc_pages(GFP_KERNEL | GFP_DMA32, 2);
        if (page == NULL)
                return NULL;