]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/gpu/drm/drm_memory.c
drm/radeon: Fix 3 regressions - since buffer rework
[mv-sheeva.git] / drivers / gpu / drm / drm_memory.c
index 0a436184dd88bbbba72d789f5bd693b936c8e2ee..7732268eced2564d37f229eefdd7c38ead97dcfd 100644 (file)
@@ -59,10 +59,11 @@ int drm_mem_info(char *buf, char **start, off_t offset,
 static void *agp_remap(unsigned long offset, unsigned long size,
                       struct drm_device * dev)
 {
-       unsigned long *phys_addr_map, i, num_pages =
+       unsigned long i, num_pages =
            PAGE_ALIGN(size) / PAGE_SIZE;
        struct drm_agp_mem *agpmem;
        struct page **page_map;
+       struct page **phys_page_map;
        void *addr;
 
        size = PAGE_ALIGN(size);
@@ -76,7 +77,7 @@ static void *agp_remap(unsigned long offset, unsigned long size,
                    && (agpmem->bound + (agpmem->pages << PAGE_SHIFT)) >=
                    (offset + size))
                        break;
-       if (!agpmem)
+       if (&agpmem->head == &dev->agp->memory)
                return NULL;
 
        /*
@@ -89,10 +90,9 @@ static void *agp_remap(unsigned long offset, unsigned long size,
        if (!page_map)
                return NULL;
 
-       phys_addr_map =
-           agpmem->memory->memory + (offset - agpmem->bound) / PAGE_SIZE;
+       phys_page_map = (agpmem->memory->pages + (offset - agpmem->bound) / PAGE_SIZE);
        for (i = 0; i < num_pages; ++i)
-               page_map[i] = pfn_to_page(phys_addr_map[i] >> PAGE_SHIFT);
+               page_map[i] = phys_page_map[i];
        addr = vmap(page_map, num_pages, VM_IOREMAP, PAGE_AGP);
        vfree(page_map);