agp/amd-k7: Allow binding user memory to the AGP GART.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 16 Oct 2010 00:45:15 +0000 (00:45 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 19 Oct 2010 04:12:32 +0000 (14:12 +1000)
TTM-based DRM drivers need to be able to bind user memory to the AGP
aperture. This patch fixes the "[TTM] AGP Bind memory failed." errors
and the subsequent fallout seen with the nouveau driver.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Tested-by: Grzesiek Sójka <pld@pfu.pl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/char/agp/amd-k7-agp.c

index b6b1568314c8a5f63a44de50d70ca176b57b8090..b1b4362bc6487c88c8b7fb2e69c828f407727c67 100644 (file)
@@ -309,7 +309,8 @@ static int amd_insert_memory(struct agp_memory *mem, off_t pg_start, int type)
 
        num_entries = A_SIZE_LVL2(agp_bridge->current_size)->num_entries;
 
-       if (type != 0 || mem->type != 0)
+       if (type != mem->type ||
+           agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type))
                return -EINVAL;
 
        if ((pg_start + mem->page_count) > num_entries)
@@ -348,7 +349,8 @@ static int amd_remove_memory(struct agp_memory *mem, off_t pg_start, int type)
        unsigned long __iomem *cur_gatt;
        unsigned long addr;
 
-       if (type != 0 || mem->type != 0)
+       if (type != mem->type ||
+           agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type))
                return -EINVAL;
 
        for (i = pg_start; i < (mem->page_count + pg_start); i++) {