Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1522501 > unrolled thread

[V2] android: binder: use VM_ALLOC to get vm area

Started byGanesh Mahendran <opensource.ganesh@gmail.com>
First post2016-11-15 11:00 +0100
Last post2016-11-15 14:20 +0100
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [V2] android: binder: use VM_ALLOC to get vm area Ganesh Mahendran <opensource.ganesh@gmail.com> - 2016-11-15 11:00 +0100
    Re: [V2] android: binder: use VM_ALLOC to get vm area Greg KH <gregkh@linuxfoundation.org> - 2016-11-15 11:20 +0100
      Re: [V2] android: binder: use VM_ALLOC to get vm area Ganesh Mahendran <opensource.ganesh@gmail.com> - 2016-11-15 14:20 +0100

#1522501 — [V2] android: binder: use VM_ALLOC to get vm area

FromGanesh Mahendran <opensource.ganesh@gmail.com>
Date2016-11-15 11:00 +0100
Subject[V2] android: binder: use VM_ALLOC to get vm area
Message-ID<sDIH0-3dJ-7@gated-at.bofh.it>
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.

Also 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 use VM_ALLOC to get vm area.

Below is the throughput test result:

  # ./binderThroughputTest -w 100
  I run this command 10 times:
                               before    after
  average iterations per sec:  11199.9   11886.9

No performance regression found throgh binder test.

Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
---
 drivers/android/binder.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 3c71b98..b5908ec 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -2901,7 +2901,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
 		goto err_already_mapped;
 	}
 
-	area = get_vm_area(vma->vm_end - vma->vm_start, VM_IOREMAP);
+	area = get_vm_area(vma->vm_end - vma->vm_start, VM_ALLOC);
 	if (area == NULL) {
 		ret = -ENOMEM;
 		failure_string = "get_vm_area";
-- 
1.9.1

[toc] | [next] | [standalone]


#1522520

FromGreg KH <gregkh@linuxfoundation.org>
Date2016-11-15 11:20 +0100
Message-ID<sDJ0l-3Dr-3@gated-at.bofh.it>
In reply to#1522501
On Tue, Nov 15, 2016 at 05:55:39PM +0800, Ganesh Mahendran wrote:
> 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.
> 
> Also 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 use VM_ALLOC to get vm area.
> 
> Below is the throughput test result:
> 
>   # ./binderThroughputTest -w 100
>   I run this command 10 times:
>                                before    after
>   average iterations per sec:  11199.9   11886.9
> 
> No performance regression found throgh binder test.
> 
> Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
> ---
>  drivers/android/binder.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

What changed from v1?

Always list that below the --- line.

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1522673

FromGanesh Mahendran <opensource.ganesh@gmail.com>
Date2016-11-15 14:20 +0100
Message-ID<sDLOx-5pg-3@gated-at.bofh.it>
In reply to#1522520
Hi, Greg

2016-11-15 18:18 GMT+08:00 Greg KH <gregkh@linuxfoundation.org>:
> On Tue, Nov 15, 2016 at 05:55:39PM +0800, Ganesh Mahendran wrote:
>> 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.
>>
>> Also 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 use VM_ALLOC to get vm area.
>>
>> Below is the throughput test result:
>>
>>   # ./binderThroughputTest -w 100
>>   I run this command 10 times:
>>                                before    after
>>   average iterations per sec:  11199.9   11886.9
>>
>> No performance regression found throgh binder test.
>>
>> Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
>> ---
>>  drivers/android/binder.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> What changed from v1?

Sorry for missing the change information.

In V2, I run the binder test. And there is no side effect with this
patch.

>
> Always list that below the --- line.

Thanks for reminder.

>
> thanks,
>
> greg k-h

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web