Received: by 10.213.65.68 with SMTP id h4csp1039887imn; Wed, 28 Mar 2018 19:00:53 -0700 (PDT) X-Google-Smtp-Source: AIpwx49+4S3RvKKfcJcsfeE/0MHkY3PW5EhFQKraM9w67cjWOcJ/QQkfh3vSyhIg46+65vz72KGO X-Received: by 2002:a17:902:59c9:: with SMTP id d9-v6mr6213366plj.251.1522288853005; Wed, 28 Mar 2018 19:00:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522288852; cv=none; d=google.com; s=arc-20160816; b=GLn50BJBUYnxXaqsXP/1+j8RF0gvZ7j/yR4R14q72Z7fIf2YGNaY/xXW42DhxJESiW RcZ71WkgmUT6fc/U47k4G6292Jckd2lOHw9AYkoLRgHX4acYusCpjHe3w2DuWOI7TFEA GITLrTKFwBf9LSR7mm+38yT6L1RrijZP2Vj9ihT5omXlSsse6gH23FiI1zbPH6ULSzGw Kj6Jhd4EbnJepABrtYK+rA5mJoUsRcBVD3ljloQl8WtC8ffruk4qZvdClLUsk8kWZOUw lUaQ0f4sdNMbanFyZGB6o4aKC946/9GOaRBbZ3m0QtHbIS6dJTmlceUfuQIC7m9M8BZ7 Cqqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=M3e0aET+wVzPIQj9AAmfKHaB12WWlgb0FfWs/0WDLjk=; b=y4jXKEfln6V96lqtRD9CS5cUF6jmNXAhTP3CtLJJskOVaCS/Irym5Ch13X3lblgHzT zoISLz1NNwMhQdpPRJ+UoRrEjvUhnldqwKTppxJq17Hi5TxWg6xUIQGpWnyyYsPRTt5h QIznoZYS8Mbdr9RE3GDED8ZbGFkEssydPi53I5W0VGlavbbidIxLyeCXG6yto59W4pEh DuRFZtsj9X4687272BmiJmB5ygNWS0b5Zvq2oDlqgsiptVuj29Ju5KMthsqcAOE+0RYx 0pYeIxKYvK7V2YSFWFI7dZmKyYI/svVeX3IqA/9ttGJq99mcdvq5J/FP9j3+TatTtLfV u9Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@android.com header.s=20161025 header.b=K3WyedFo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=android.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si4754166plj.247.2018.03.28.19.00.38; Wed, 28 Mar 2018 19:00:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@android.com header.s=20161025 header.b=K3WyedFo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=android.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752006AbeC2B7o (ORCPT + 99 others); Wed, 28 Mar 2018 21:59:44 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:55476 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751193AbeC2B7n (ORCPT ); Wed, 28 Mar 2018 21:59:43 -0400 Received: by mail-wm0-f67.google.com with SMTP id b127so7194017wmf.5 for ; Wed, 28 Mar 2018 18:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=android.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=M3e0aET+wVzPIQj9AAmfKHaB12WWlgb0FfWs/0WDLjk=; b=K3WyedFogRHXlu9MUObChFm167w7zsrnsbDv1xSrsv+HYvH8bpr7zNh6bwdoXyLryk R9P0rEyFSY+ETbrtQEE8zj8gM7Hdaze7MIwTvtTBWoPoAYkjMfEIr1h2rlqQHXKGjT5a 8EegNA2ybGADqjTjJo9CtVYATrE8sJpbIVQy+Rg0IClRdOInmYG+hnEEnkpMvwHBwEP1 v0CFX1frfLVZwBGY8AMrZcFJnqDIFHDW0QhsaiaiP/zZzTXqkkkTIT1HUAeWL6eG9PQb iEZ+8ZU8Ug6bKtWlzZNVCug66vULXKUtr4C4iTHNH+qtQKKLbgNmWn4COvFVoDFraFEm Yj1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=M3e0aET+wVzPIQj9AAmfKHaB12WWlgb0FfWs/0WDLjk=; b=CbRY5HrsXvtrAParuJf9UM/q2rtBhpXmhJ7DY0wiXtExDixcHgM8DzsnGmprjqw39a Ue5iDTf59irUV+i7sahmyxD+wpjHKiroVyVY/Pewc6P6gw7LrRXvPHyTHpnEd/6Nqxk+ jIoBoDeO+UJH6RVJIgq9jnTXyj0jG1p+5lVSNtqBRf1Cdsklz8WDbsTJ0YUMgJSphtZ8 bFGgEHZiQ/d7EDfyJDXz4tN36X1RsmGWa7KD+txENBo2HWSzWu1RXZAZ+h5LfcQjVQm+ BboX6YVIZOy6yOtsiZQoWvfbzq0pdcBh643YAYiNWipGPYg2n2mm6USS9CqFWo19QlXP sO0Q== X-Gm-Message-State: AElRT7HxD/TSfeF221yFtQQmbBwmQNKqUGNnIuSf3JdKo9hXuB9puC+L 3sLM09Rfdb3M1lQy3g2jE4xM8q36o4qYnxD2Mt0XHQ== X-Received: by 10.80.230.24 with SMTP id y24mr5397886edm.258.1522288782429; Wed, 28 Mar 2018 18:59:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.80.235.68 with HTTP; Wed, 28 Mar 2018 18:59:41 -0700 (PDT) In-Reply-To: <20180329010040.96760-1-minchan@kernel.org> References: <20180329010040.96760-1-minchan@kernel.org> From: =?UTF-8?B?QXJ2ZSBIasO4bm5ldsOlZw==?= Date: Wed, 28 Mar 2018 18:59:41 -0700 Message-ID: Subject: Re: [PATCH v2] ANDROID: binder: change down_write to down_read To: Minchan Kim Cc: LKML , Todd Kjos , Greg Kroah-Hartman , Martijn Coenen Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 28, 2018 at 6:00 PM, Minchan Kim wrote: > binder_update_page_range needs down_write of mmap_sem because > vm_insert_page need to change vma->vm_flags to VM_MIXEDMAP unless > it is set. However, when I profile binder working, it seems > every binder buffers should be mapped in advance by binder_mmap. > It means we could set VM_MIXEDMAP in bider_mmap time which is > already hold a mmap_sem as down_write so binder_update_page_range > doesn't need to hold a mmap_sem as down_write. > > Android suffers from mmap_sem contention so let's reduce mmap_sem > down_write. > > Cc: Todd Kjos > Cc: Greg Kroah-Hartman > Reviewed-by: Martijn Coenen > Signed-off-by: Minchan Kim > --- > From v1: > * remove WARN_ON_ONCE - Greg > * add reviewed-by - Martijn > > Martijn, I took your LGTM of v1 as Reviewed-by. If you don't like it > or want to change it to acked-by, please, tell me. > > drivers/android/binder.c | 2 +- > drivers/android/binder_alloc.c | 6 +++--- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/android/binder.c b/drivers/android/binder.c > index 764b63a5aade..9a14c6dd60c4 100644 > --- a/drivers/android/binder.c > +++ b/drivers/android/binder.c > @@ -4722,7 +4722,7 @@ static int binder_mmap(struct file *filp, struct vm= _area_struct *vma) > failure_string =3D "bad vm_flags"; > goto err_bad_arg; > } > - vma->vm_flags =3D (vma->vm_flags | VM_DONTCOPY) & ~VM_MAYWRITE; > + vma->vm_flags |=3D (VM_DONTCOPY | VM_MIXEDMAP) & ~VM_MAYWRITE; Why did you change this to |=3D? You are no longer clearing VM_MAYWRITE. > vma->vm_ops =3D &binder_vm_ops; > vma->vm_private_data =3D proc; > > diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_allo= c.c > index 5a426c877dfb..4f382d51def1 100644 > --- a/drivers/android/binder_alloc.c > +++ b/drivers/android/binder_alloc.c > @@ -219,7 +219,7 @@ static int binder_update_page_range(struct binder_all= oc *alloc, int allocate, > mm =3D alloc->vma_vm_mm; > > if (mm) { > - down_write(&mm->mmap_sem); > + down_read(&mm->mmap_sem); > vma =3D alloc->vma; > } > > @@ -288,7 +288,7 @@ static int binder_update_page_range(struct binder_all= oc *alloc, int allocate, > /* vm_insert_page does not seem to increment the refcount= */ > } > if (mm) { > - up_write(&mm->mmap_sem); > + up_read(&mm->mmap_sem); > mmput(mm); > } > return 0; > @@ -321,7 +321,7 @@ static int binder_update_page_range(struct binder_all= oc *alloc, int allocate, > } > err_no_vma: > if (mm) { > - up_write(&mm->mmap_sem); > + up_read(&mm->mmap_sem); > mmput(mm); > } > return vma ? -ENOMEM : -ESRCH; > -- > 2.17.0.rc1.321.gba9d0f2565-goog > --=20 Arve Hj=C3=B8nnev=C3=A5g