lkml.org 
[lkml]   [2007]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] [9/26] x86_64: Fix vmalloc_32 to really allocate <4GB on 64bit platforms
    Date

    Ugly ifdef, but should handle all 64bit platforms that have suitable
    zones. On some like Altix it's probably impossible without IOMMU
    use to get memory <4GB this way, but they have to live with that.
    Signed-off-by: Andi Kleen <ak@suse.de>

    ---
    mm/vmalloc.c | 12 ++++++++++--
    1 file changed, 10 insertions(+), 2 deletions(-)

    Index: linux/mm/vmalloc.c
    ===================================================================
    --- linux.orig/mm/vmalloc.c
    +++ linux/mm/vmalloc.c
    @@ -577,6 +577,14 @@ void *vmalloc_exec(unsigned long size)
    return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC);
    }

    +#if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32)
    +#define GFP_VMALLOC32 GFP_DMA32
    +#elif defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA)
    +#define GFP_VMALLOC32 GFP_DMA
    +#else
    +#define GFP_VMALLOC32 GFP_KERNEL
    +#endif
    +
    /**
    * vmalloc_32 - allocate virtually contiguous memory (32bit addressable)
    * @size: allocation size
    @@ -586,7 +594,7 @@ void *vmalloc_exec(unsigned long size)
    */
    void *vmalloc_32(unsigned long size)
    {
    - return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL);
    + return __vmalloc(size, GFP_VMALLOC32, PAGE_KERNEL);
    }
    EXPORT_SYMBOL(vmalloc_32);

    @@ -602,7 +610,7 @@ void *vmalloc_32_user(unsigned long size
    struct vm_struct *area;
    void *ret;

    - ret = __vmalloc(size, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL);
    + ret = __vmalloc(size, GFP_VMALLOC32 | __GFP_ZERO, PAGE_KERNEL);
    if (ret) {
    write_lock(&vmlist_lock);
    area = __find_vm_area(ret);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-04-30 01:51    [W:0.048 / U:59.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site