• Ganesh Mahendran's avatar
    android: binder: use VM_ALLOC to get vm area · aac6830e
    Ganesh Mahendran authored
    VM_IOREMAP is used to access hardware through a mechanism called
    I/O mapped memory. Android binder is a IPC machanism which will
    not access I/O memory.
    
    And VM_IOREMAP has alignment requiement which may not needed in
    binder.
        __get_vm_area_node()
        {
        ...
            if (flags & VM_IOREMAP)
                align = 1ul << clamp_t(int, fls_long(size),
                   PAGE_SHIFT, IOREMAP_MAX_ORDER);
        ...
        }
    
    This patch will save some kernel vm area, especially for 32bit os.
    
    In 32bit OS, kernel vm area is only 240MB. We may got below
    error when launching a app:
    
    <3>[ 4482.440053] binder_alloc: binder_alloc_mmap_handler: 15728 8ce67000-8cf65000 get_vm_area failed -12
    <3>[ 4483.218817] binder_alloc: binder_alloc_mmap_handler: 15745 8ce67000-8cf65000 get_vm_area failed -12
    Signed-off-by: default avatarGanesh Mahendran <opensource.ganesh@gmail.com>
    Acked-by: default avatarMartijn Coenen <maco@android.com>
    Acked-by: default avatarTodd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    
    ----
    V3: update comments
    V2: update comments
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    aac6830e
binder_alloc.c 27.2 KB