From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6B01C31E46 for ; Wed, 12 Jun 2019 15:20:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 857F021019 for ; Wed, 12 Jun 2019 15:20:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2502042AbfFLPU5 (ORCPT ); Wed, 12 Jun 2019 11:20:57 -0400 Received: from pio-pvt-msa2.bahnhof.se ([79.136.2.41]:36136 "EHLO pio-pvt-msa2.bahnhof.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2501948AbfFLPUd (ORCPT ); Wed, 12 Jun 2019 11:20:33 -0400 Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa2.bahnhof.se (Postfix) with ESMTP id 78C33405E5; Wed, 12 Jun 2019 17:20:25 +0200 (CEST) Authentication-Results: pio-pvt-msa2.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=vmwopensource.org header.i=@vmwopensource.org header.b=hrUiLx4A; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from pio-pvt-msa2.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa2.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BRzntngxnE9y; Wed, 12 Jun 2019 17:20:11 +0200 (CEST) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa2.bahnhof.se (Postfix) with ESMTPA id CE9B540572; Wed, 12 Jun 2019 17:20:09 +0200 (CEST) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id 66BCF3619C2; Wed, 12 Jun 2019 17:20:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=vmwopensource.org; s=mail; t=1560352809; bh=Yjmtl92sLAlEoB99F5XOnCklObajAbb4hpy0froOh7I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hrUiLx4AvjTxhRIGA/Le208AGL5hCC+aKe6Dz4kO+DpO6X5QQvqpLbFyVuFYDtcxw DYgkI865pUqk1xhr/Ll4LTcNoLDpGuYApq9k/aCny2d/E8wUCYfcn6jp9+0252FYQP gIhv4jRpSlU0NuRCd9EzhtVQRO0U9nNkK43wM9jE= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: dri-devel@lists.freedesktop.org Cc: linux-graphics-maintainer@vmware.com, pv-drivers@vmware.com, linux-kernel@vger.kernel.org, hch@infradead.org, Thomas Hellstrom , Andrew Morton , Matthew Wilcox , Will Deacon , Peter Zijlstra , Rik van Riel , Minchan Kim , Michal Hocko , Huang Ying , Souptick Joarder , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-mm@kvack.org, Ralph Campbell Subject: [PATCH v6 1/9] mm: Allow the [page|pfn]_mkwrite callbacks to drop the mmap_sem Date: Wed, 12 Jun 2019 17:19:42 +0200 Message-Id: <20190612151950.2870-2-thellstrom@vmwopensource.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190612151950.2870-1-thellstrom@vmwopensource.org> References: <20190612151950.2870-1-thellstrom@vmwopensource.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thomas Hellstrom Driver fault callbacks are allowed to drop the mmap_sem when expecting long hardware waits to avoid blocking other mm users. Allow the mkwrite callbacks to do the same by returning early on VM_FAULT_RETRY. In particular we want to be able to drop the mmap_sem when waiting for a reservation object lock on a GPU buffer object. These locks may be held while waiting for the GPU. Cc: Andrew Morton Cc: Matthew Wilcox Cc: Will Deacon Cc: Peter Zijlstra Cc: Rik van Riel Cc: Minchan Kim Cc: Michal Hocko Cc: Huang Ying Cc: Souptick Joarder Cc: "Jérôme Glisse" Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Thomas Hellstrom Reviewed-by: Ralph Campbell --- mm/memory.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index ddf20bd0c317..168f546af1ad 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2238,7 +2238,7 @@ static vm_fault_t do_page_mkwrite(struct vm_fault *vmf) ret = vmf->vma->vm_ops->page_mkwrite(vmf); /* Restore original flags so that caller is not surprised */ vmf->flags = old_flags; - if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE))) + if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) return ret; if (unlikely(!(ret & VM_FAULT_LOCKED))) { lock_page(page); @@ -2515,7 +2515,7 @@ static vm_fault_t wp_pfn_shared(struct vm_fault *vmf) pte_unmap_unlock(vmf->pte, vmf->ptl); vmf->flags |= FAULT_FLAG_MKWRITE; ret = vma->vm_ops->pfn_mkwrite(vmf); - if (ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)) + if (ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY)) return ret; return finish_mkwrite_fault(vmf); } @@ -2536,7 +2536,8 @@ static vm_fault_t wp_page_shared(struct vm_fault *vmf) pte_unmap_unlock(vmf->pte, vmf->ptl); tmp = do_page_mkwrite(vmf); if (unlikely(!tmp || (tmp & - (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))) { + (VM_FAULT_ERROR | VM_FAULT_NOPAGE | + VM_FAULT_RETRY)))) { put_page(vmf->page); return tmp; } @@ -3601,7 +3602,8 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf) unlock_page(vmf->page); tmp = do_page_mkwrite(vmf); if (unlikely(!tmp || - (tmp & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))) { + (tmp & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | + VM_FAULT_RETRY)))) { put_page(vmf->page); return tmp; } -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= Subject: [PATCH v6 1/9] mm: Allow the [page|pfn]_mkwrite callbacks to drop the mmap_sem Date: Wed, 12 Jun 2019 17:19:42 +0200 Message-ID: <20190612151950.2870-2-thellstrom@vmwopensource.org> References: <20190612151950.2870-1-thellstrom@vmwopensource.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pio-pvt-msa2.bahnhof.se (pio-pvt-msa2.bahnhof.se [79.136.2.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C1F0896E4 for ; Wed, 12 Jun 2019 15:20:37 +0000 (UTC) In-Reply-To: <20190612151950.2870-1-thellstrom@vmwopensource.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Thomas Hellstrom , Michal Hocko , Rik van Riel , pv-drivers@vmware.com, Minchan Kim , Will Deacon , linux-kernel@vger.kernel.org, Matthew Wilcox , hch@infradead.org, Peter Zijlstra , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-graphics-maintainer@vmware.com, Souptick Joarder , Huang Ying , Andrew Morton , Ralph Campbell , linux-mm@kvack.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKRHJpdmVyIGZh dWx0IGNhbGxiYWNrcyBhcmUgYWxsb3dlZCB0byBkcm9wIHRoZSBtbWFwX3NlbSB3aGVuIGV4cGVj dGluZwpsb25nIGhhcmR3YXJlIHdhaXRzIHRvIGF2b2lkIGJsb2NraW5nIG90aGVyIG1tIHVzZXJz LiBBbGxvdyB0aGUgbWt3cml0ZQpjYWxsYmFja3MgdG8gZG8gdGhlIHNhbWUgYnkgcmV0dXJuaW5n IGVhcmx5IG9uIFZNX0ZBVUxUX1JFVFJZLgoKSW4gcGFydGljdWxhciB3ZSB3YW50IHRvIGJlIGFi bGUgdG8gZHJvcCB0aGUgbW1hcF9zZW0gd2hlbiB3YWl0aW5nIGZvcgphIHJlc2VydmF0aW9uIG9i amVjdCBsb2NrIG9uIGEgR1BVIGJ1ZmZlciBvYmplY3QuIFRoZXNlIGxvY2tzIG1heSBiZQpoZWxk IHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBHUFUuCgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51 eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IE1hdHRoZXcgV2lsY294IDx3aWxseUBpbmZyYWRlYWQub3Jn PgpDYzogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+CkNjOiBQZXRlciBaaWpsc3Ry YSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CkNjOiBSaWsgdmFuIFJpZWwgPHJpZWxAc3VycmllbC5j b20+CkNjOiBNaW5jaGFuIEtpbSA8bWluY2hhbkBrZXJuZWwub3JnPgpDYzogTWljaGFsIEhvY2tv IDxtaG9ja29Ac3VzZS5jb20+CkNjOiBIdWFuZyBZaW5nIDx5aW5nLmh1YW5nQGludGVsLmNvbT4K Q2M6IFNvdXB0aWNrIEpvYXJkZXIgPGpyZHIubGludXhAZ21haWwuY29tPgpDYzogIkrDqXLDtG1l IEdsaXNzZSIgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwpDYzog bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxz dHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgpSZXZpZXdlZC1ieTogUmFscGggQ2FtcGJlbGwg PHJjYW1wYmVsbEBudmlkaWEuY29tPgotLS0KIG1tL21lbW9yeS5jIHwgMTAgKysrKysrLS0tLQog MSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IGRkZjIwYmQwYzMxNy4uMTY4ZjU0 NmFmMWFkIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAtMjIz OCw3ICsyMjM4LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZG9fcGFnZV9ta3dyaXRlKHN0cnVjdCB2 bV9mYXVsdCAqdm1mKQogCXJldCA9IHZtZi0+dm1hLT52bV9vcHMtPnBhZ2VfbWt3cml0ZSh2bWYp OwogCS8qIFJlc3RvcmUgb3JpZ2luYWwgZmxhZ3Mgc28gdGhhdCBjYWxsZXIgaXMgbm90IHN1cnBy aXNlZCAqLwogCXZtZi0+ZmxhZ3MgPSBvbGRfZmxhZ3M7Ci0JaWYgKHVubGlrZWx5KHJldCAmIChW TV9GQVVMVF9FUlJPUiB8IFZNX0ZBVUxUX05PUEFHRSkpKQorCWlmICh1bmxpa2VseShyZXQgJiAo Vk1fRkFVTFRfRVJST1IgfCBWTV9GQVVMVF9OT1BBR0UgfCBWTV9GQVVMVF9SRVRSWSkpKQogCQly ZXR1cm4gcmV0OwogCWlmICh1bmxpa2VseSghKHJldCAmIFZNX0ZBVUxUX0xPQ0tFRCkpKSB7CiAJ CWxvY2tfcGFnZShwYWdlKTsKQEAgLTI1MTUsNyArMjUxNSw3IEBAIHN0YXRpYyB2bV9mYXVsdF90 IHdwX3Bmbl9zaGFyZWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCXB0ZV91bm1hcF91bmxvY2so dm1mLT5wdGUsIHZtZi0+cHRsKTsKIAkJdm1mLT5mbGFncyB8PSBGQVVMVF9GTEFHX01LV1JJVEU7 CiAJCXJldCA9IHZtYS0+dm1fb3BzLT5wZm5fbWt3cml0ZSh2bWYpOwotCQlpZiAocmV0ICYgKFZN X0ZBVUxUX0VSUk9SIHwgVk1fRkFVTFRfTk9QQUdFKSkKKwkJaWYgKHJldCAmIChWTV9GQVVMVF9F UlJPUiB8IFZNX0ZBVUxUX05PUEFHRSB8IFZNX0ZBVUxUX1JFVFJZKSkKIAkJCXJldHVybiByZXQ7 CiAJCXJldHVybiBmaW5pc2hfbWt3cml0ZV9mYXVsdCh2bWYpOwogCX0KQEAgLTI1MzYsNyArMjUz Niw4IEBAIHN0YXRpYyB2bV9mYXVsdF90IHdwX3BhZ2Vfc2hhcmVkKHN0cnVjdCB2bV9mYXVsdCAq dm1mKQogCQlwdGVfdW5tYXBfdW5sb2NrKHZtZi0+cHRlLCB2bWYtPnB0bCk7CiAJCXRtcCA9IGRv X3BhZ2VfbWt3cml0ZSh2bWYpOwogCQlpZiAodW5saWtlbHkoIXRtcCB8fCAodG1wICYKLQkJCQkg ICAgICAoVk1fRkFVTFRfRVJST1IgfCBWTV9GQVVMVF9OT1BBR0UpKSkpIHsKKwkJCQkgICAgICAo Vk1fRkFVTFRfRVJST1IgfCBWTV9GQVVMVF9OT1BBR0UgfAorCQkJCSAgICAgICBWTV9GQVVMVF9S RVRSWSkpKSkgewogCQkJcHV0X3BhZ2Uodm1mLT5wYWdlKTsKIAkJCXJldHVybiB0bXA7CiAJCX0K QEAgLTM2MDEsNyArMzYwMiw4IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRvX3NoYXJlZF9mYXVsdChz dHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJdW5sb2NrX3BhZ2Uodm1mLT5wYWdlKTsKIAkJdG1wID0g ZG9fcGFnZV9ta3dyaXRlKHZtZik7CiAJCWlmICh1bmxpa2VseSghdG1wIHx8Ci0JCQkJKHRtcCAm IChWTV9GQVVMVF9FUlJPUiB8IFZNX0ZBVUxUX05PUEFHRSkpKSkgeworCQkJCSh0bXAgJiAoVk1f RkFVTFRfRVJST1IgfCBWTV9GQVVMVF9OT1BBR0UgfAorCQkJCQlWTV9GQVVMVF9SRVRSWSkpKSkg ewogCQkJcHV0X3BhZ2Uodm1mLT5wYWdlKTsKIAkJCXJldHVybiB0bXA7CiAJCX0KLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs