diff options
author | Jerome Glisse <glisse@freedesktop.org> | 2008-03-10 23:36:27 +0100 |
---|---|---|
committer | John Doe <glisse@freedesktop.org> | 2008-03-10 23:36:27 +0100 |
commit | a7e6ca62ad0d9c3c45fd9e1d81b59c2db2d714cf (patch) | |
tree | 8f757eeaa2c234af14ca1df515de7810e770ed91 /linux-core/drm_scatter.c | |
parent | a7dc4d08b9b4f8fe6fcaa4c778f6dd3718d1e36a (diff) | |
parent | 9f19e79f955281b9de393219e4ad9835ffe29c49 (diff) |
Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Diffstat (limited to 'linux-core/drm_scatter.c')
-rw-r--r-- | linux-core/drm_scatter.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/linux-core/drm_scatter.c b/linux-core/drm_scatter.c index 77b9f95d..dfae4b84 100644 --- a/linux-core/drm_scatter.c +++ b/linux-core/drm_scatter.c @@ -36,6 +36,15 @@ #define DEBUG_SCATTER 0 +static inline void *drm_vmalloc_dma(unsigned long size) +{ +#if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE) + return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL | _PAGE_NO_CACHE); +#else + return vmalloc_32(size); +#endif +} + void drm_sg_cleanup(struct drm_sg_mem *entry) { struct page *page; @@ -105,7 +114,7 @@ int drm_sg_alloc(struct drm_device *dev, struct drm_scatter_gather * request) } memset((void *)entry->busaddr, 0, pages * sizeof(*entry->busaddr)); - entry->virtual = vmalloc_32(pages << PAGE_SHIFT); + entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT); if (!entry->virtual) { drm_free(entry->busaddr, entry->pages * sizeof(*entry->busaddr), DRM_MEM_PAGES); |