]> git.hungrycats.org Git - linux/commitdiff
DRI CVS merge: add DRM(calloc)() function, and remove unnecessary TLB
authorLinus Torvalds <torvalds@home.osdl.org>
Wed, 24 Sep 2003 09:27:32 +0000 (02:27 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 24 Sep 2003 09:27:32 +0000 (02:27 -0700)
flush after vmap.

drivers/char/drm/drmP.h
drivers/char/drm/drm_memory.h
drivers/char/drm/drm_memory_debug.h

index 2cfca61b9801de805a1bc3a99e76c1f048e8993a..3030989e0869cd74d582e07062743f487a834934 100644 (file)
@@ -784,6 +784,7 @@ extern void      DRM(mem_init)(void);
 extern int          DRM(mem_info)(char *buf, char **start, off_t offset,
                                   int request, int *eof, void *data);
 extern void         *DRM(alloc)(size_t size, int area);
+extern void         *DRM(calloc)(size_t nmemb, size_t size, int area);
 extern void         *DRM(realloc)(void *oldpt, size_t oldsize, size_t size,
                                   int area);
 extern void         DRM(free)(void *pt, size_t size, int area);
index c96e01e78dd102db5bcc27d8da0f4ac761919e60..658fc8ca76ae81cabcb3b1a4c735c75ff930b7cf 100644 (file)
@@ -117,10 +117,7 @@ agp_remap (unsigned long offset, unsigned long size, drm_device_t *dev)
                page_map[i] = pfn_to_page(phys_addr_map[i] >> PAGE_SHIFT);
        addr = vmap(page_map, num_pages, VM_IOREMAP, PAGE_AGP);
        vfree(page_map);
-       if (!addr)
-               return NULL;
 
-       flush_tlb_kernel_range((unsigned long) addr, (unsigned long) addr + size);
        return addr;
 }
 
@@ -224,6 +221,18 @@ void *DRM(alloc)(size_t size, int area)
        return kmalloc(size, GFP_KERNEL);
 }
 
+/** Wrapper around kmalloc() */
+void *DRM(calloc)(size_t size, size_t nmemb, int area)
+{
+       void *addr;
+
+       addr = kmalloc(size * nmemb, GFP_KERNEL);
+       if (addr != NULL)
+               memset((void *)addr, 0, size * nmemb);
+
+       return addr;
+}
+
 /** Wrapper around kmalloc() and kfree() */
 void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area)
 {
index 05a9fc2b3ee573767e431162fbf5db795479060a..6354b56598fb6de758e51519c4df07c4bab9ccf6 100644 (file)
@@ -166,6 +166,17 @@ void *DRM(alloc)(size_t size, int area)
        return pt;
 }
 
+void *DRM(calloc)(size_t size, size_t nmemb, int area)
+{
+       void *addr;
+
+       addr = DRM(alloc)(nmemb * size, area);
+       if (addr != NULL)
+               memset((void *)addr, 0, size * nmemb);
+
+       return addr;
+}
+
 void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area)
 {
        void *pt;