aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drmP.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-03-09 01:33:26 -0500
committerDave Airlie <airlied@redhat.com>2010-03-14 20:31:43 -0400
commit72e942dd846f98e2d35aad5436d77a878ef05c5e (patch)
treebed31b516da9fd80058800caa6161b6e0f880595 /include/drm/drmP.h
parentd424b925f7092b9d95e0a8556872349abe79d9b6 (diff)
drm/ttm: use drm calloc large and free large
Now that the drm core can do this, lets just use it, split the code out so TTM doesn't have to drag all of drmP.h in. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm/drmP.h')
-rw-r--r--include/drm/drmP.h34
1 files changed, 1 insertions, 33 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 4a3c4e441027..de2f82efb15f 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1545,39 +1545,7 @@ static __inline__ void drm_core_dropmap(struct drm_local_map *map)
1545{ 1545{
1546} 1546}
1547 1547
1548 1548#include "drm_mem_util.h"
1549static __inline__ void *drm_calloc_large(size_t nmemb, size_t size)
1550{
1551 if (size != 0 && nmemb > ULONG_MAX / size)
1552 return NULL;
1553
1554 if (size * nmemb <= PAGE_SIZE)
1555 return kcalloc(nmemb, size, GFP_KERNEL);
1556
1557 return __vmalloc(size * nmemb,
1558 GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, PAGE_KERNEL);
1559}
1560
1561/* Modeled after cairo's malloc_ab, it's like calloc but without the zeroing. */
1562static __inline__ void *drm_malloc_ab(size_t nmemb, size_t size)
1563{
1564 if (size != 0 && nmemb > ULONG_MAX / size)
1565 return NULL;
1566
1567 if (size * nmemb <= PAGE_SIZE)
1568 return kmalloc(nmemb * size, GFP_KERNEL);
1569
1570 return __vmalloc(size * nmemb,
1571 GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL);
1572}
1573
1574static __inline void drm_free_large(void *ptr)
1575{
1576 if (!is_vmalloc_addr(ptr))
1577 return kfree(ptr);
1578
1579 vfree(ptr);
1580}
1581/*@}*/ 1549/*@}*/
1582 1550
1583#endif /* __KERNEL__ */ 1551#endif /* __KERNEL__ */