From: <th...@ke...> - 2006-12-20 13:40:56
|
linux-core/drm_bufs.c | 3 +-- linux-core/drm_compat.h | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) New commits: diff-tree 672593f611df484af89e425ff5f1ea0ea074f2bb (from 3b47b27558915a3a28591209e324b977e09d7c03) Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com> Date: Wed Dec 20 14:40:36 2006 +0100 Replace vmalloc_32. The vmalloc_32 function together with the memset to clear the new pages are replaced with a vmalloc_user. A pre-2.6.18 compat vmalloc_user is added. Please replace any breakage on machines with > 1GB of memory. diff --git a/linux-core/drm_bufs.c b/linux-core/drm_bufs.c index ef110c2..1ff191a 100644 --- a/linux-core/drm_bufs.c +++ b/linux-core/drm_bufs.c @@ -195,14 +195,13 @@ static int drm_addmap_core(drm_device_t *maplist = list; return 0; } - map->handle = vmalloc_32(map->size); + map->handle = vmalloc_user(map->size); DRM_DEBUG("%lu %d %p\n", map->size, drm_order(map->size), map->handle); if (!map->handle) { drm_free(map, sizeof(*map), DRM_MEM_MAPS); return -ENOMEM; } - memset(map->handle, 0, map->size); map->offset = (unsigned long)map->handle; if (map->flags & _DRM_CONTAINS_LOCK) { /* Prevent a 2nd X Server from creating a 2nd lock */ diff --git a/linux-core/drm_compat.h b/linux-core/drm_compat.h index c7a4a7e..dcda193 100644 --- a/linux-core/drm_compat.h +++ b/linux-core/drm_compat.h @@ -148,6 +148,13 @@ static __inline__ void *kcalloc(size_t n } #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) +#define vmalloc_user(_size) ({void * tmp = vmalloc(_size); \ + if (tmp) memset(tmp, 0, size); \ + (tmp);}) +#endif + + #include <linux/mm.h> #include <asm/page.h> |