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=-5.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 D93D5C0044D for ; Mon, 16 Mar 2020 18:18:03 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B998D20409 for ; Mon, 16 Mar 2020 18:18:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B998D20409 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7A7FD6E49F; Mon, 16 Mar 2020 18:18:03 +0000 (UTC) Received: from verein.lst.de (verein.lst.de [213.95.11.211]) by gabe.freedesktop.org (Postfix) with ESMTPS id D05AD6E210; Mon, 16 Mar 2020 18:13:26 +0000 (UTC) Received: by verein.lst.de (Postfix, from userid 2407) id 63BBC68BFE; Mon, 16 Mar 2020 19:13:24 +0100 (CET) Date: Mon, 16 Mar 2020 19:13:24 +0100 From: Christoph Hellwig To: Jason Gunthorpe Subject: Re: [PATCH hmm 2/8] mm/hmm: don't free the cached pgmap while scanning Message-ID: <20200316181324.GA24533@lst.de> References: <20200311183506.3997-1-jgg@ziepe.ca> <20200311183506.3997-3-jgg@ziepe.ca> <20200316090250.GB12439@lst.de> <20200316180713.GI20941@ziepe.ca> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200316180713.GI20941@ziepe.ca> User-Agent: Mutt/1.5.17 (2007-11-01) X-Mailman-Approved-At: Mon, 16 Mar 2020 18:18:02 +0000 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Philip Yang , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Jerome Glisse , amd-gfx@lists.freedesktop.org, Christoph Hellwig Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" T24gTW9uLCBNYXIgMTYsIDIwMjAgYXQgMDM6MDc6MTNQTSAtMDMwMCwgSmFzb24gR3VudGhvcnBl IHdyb3RlOgo+IEkgY2hvc2UgdGhpcyB0byBiZSBzaW1wbGUgd2l0aG91dCBoYXZpbmcgdG8gZ290 byB1bndpbmQgaXQuCj4gCj4gU28sIGluc3RlYWQgbGlrZSB0aGlzOgoKQXMg0ZVhaWQsIGFuZCBw ZXIgdGhlIHByZXZpb3VzIGRpc2N1c3Npb246ICBJIHRoaW5rIGp1c3QgcmVtb3ZpbmcgdGhlCnBn bWFwIGxvb2t1cCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaGVyZS4gIFNvbWV0aGluZyBsaWtl IHRoaXMgcGF0Y2g6CgpkaWZmIC0tZ2l0IGEvbW0vaG1tLmMgYi9tbS9obW0uYwppbmRleCAzZDEw NDg1YmYzMjMuLjlmMTA0OTgxNWQ0NCAxMDA2NDQKLS0tIGEvbW0vaG1tLmMKKysrIGIvbW0vaG1t LmMKQEAgLTI4LDcgKzI4LDYgQEAKIAogc3RydWN0IGhtbV92bWFfd2FsayB7CiAJc3RydWN0IGht bV9yYW5nZQkqcmFuZ2U7Ci0Jc3RydWN0IGRldl9wYWdlbWFwCSpwZ21hcDsKIAl1bnNpZ25lZCBs b25nCQlsYXN0OwogCXVuc2lnbmVkIGludAkJZmxhZ3M7CiB9OwpAQCAtMTk4LDE1ICsxOTcsOCBA QCBzdGF0aWMgaW50IGhtbV92bWFfaGFuZGxlX3BtZChzdHJ1Y3QgbW1fd2FsayAqd2FsaywgdW5z aWduZWQgbG9uZyBhZGRyLAogCQlyZXR1cm4gaG1tX3ZtYV9mYXVsdChhZGRyLCBlbmQsIGZhdWx0 LCB3cml0ZV9mYXVsdCwgd2Fsayk7CiAKIAlwZm4gPSBwbWRfcGZuKHBtZCkgKyAoKGFkZHIgJiB+ UE1EX01BU0spID4+IFBBR0VfU0hJRlQpOwotCWZvciAoaSA9IDA7IGFkZHIgPCBlbmQ7IGFkZHIg Kz0gUEFHRV9TSVpFLCBpKyssIHBmbisrKSB7Ci0JCWlmIChwbWRfZGV2bWFwKHBtZCkpIHsKLQkJ CWhtbV92bWFfd2Fsay0+cGdtYXAgPSBnZXRfZGV2X3BhZ2VtYXAocGZuLAotCQkJCQkgICAgICBo bW1fdm1hX3dhbGstPnBnbWFwKTsKLQkJCWlmICh1bmxpa2VseSghaG1tX3ZtYV93YWxrLT5wZ21h cCkpCi0JCQkJcmV0dXJuIC1FQlVTWTsKLQkJfQorCWZvciAoaSA9IDA7IGFkZHIgPCBlbmQ7IGFk ZHIgKz0gUEFHRV9TSVpFLCBpKyssIHBmbisrKQogCQlwZm5zW2ldID0gaG1tX2RldmljZV9lbnRy eV9mcm9tX3BmbihyYW5nZSwgcGZuKSB8IGNwdV9mbGFnczsKLQl9CiAJaG1tX3ZtYV93YWxrLT5s YXN0ID0gZW5kOwogCXJldHVybiAwOwogfQpAQCAtMjc3LDE1ICsyNjksNiBAQCBzdGF0aWMgaW50 IGhtbV92bWFfaGFuZGxlX3B0ZShzdHJ1Y3QgbW1fd2FsayAqd2FsaywgdW5zaWduZWQgbG9uZyBh ZGRyLAogCWlmIChmYXVsdCB8fCB3cml0ZV9mYXVsdCkKIAkJZ290byBmYXVsdDsKIAotCWlmIChw dGVfZGV2bWFwKHB0ZSkpIHsKLQkJaG1tX3ZtYV93YWxrLT5wZ21hcCA9IGdldF9kZXZfcGFnZW1h cChwdGVfcGZuKHB0ZSksCi0JCQkJCSAgICAgIGhtbV92bWFfd2Fsay0+cGdtYXApOwotCQlpZiAo dW5saWtlbHkoIWhtbV92bWFfd2Fsay0+cGdtYXApKSB7Ci0JCQlwdGVfdW5tYXAocHRlcCk7Ci0J CQlyZXR1cm4gLUVCVVNZOwotCQl9Ci0JfQotCiAJLyoKIAkgKiBTaW5jZSBlYWNoIGFyY2hpdGVj dHVyZSBkZWZpbmVzIGEgc3RydWN0IHBhZ2UgZm9yIHRoZSB6ZXJvIHBhZ2UsIGp1c3QKIAkgKiBm YWxsIHRocm91Z2ggYW5kIHRyZWF0IGl0IGxpa2UgYSBub3JtYWwgcGFnZS4KQEAgLTQ1NSwxMiAr NDM4LDYgQEAgc3RhdGljIGludCBobW1fdm1hX3dhbGtfcHVkKHB1ZF90ICpwdWRwLCB1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKIAogCQlwZm4gPSBwdWRfcGZuKHB1ZCkg KyAoKGFkZHIgJiB+UFVEX01BU0spID4+IFBBR0VfU0hJRlQpOwogCQlmb3IgKGkgPSAwOyBpIDwg bnBhZ2VzOyArK2ksICsrcGZuKSB7Ci0JCQlobW1fdm1hX3dhbGstPnBnbWFwID0gZ2V0X2Rldl9w YWdlbWFwKHBmbiwKLQkJCQkJICAgICAgaG1tX3ZtYV93YWxrLT5wZ21hcCk7Ci0JCQlpZiAodW5s aWtlbHkoIWhtbV92bWFfd2Fsay0+cGdtYXApKSB7Ci0JCQkJcmV0ID0gLUVCVVNZOwotCQkJCWdv dG8gb3V0X3VubG9jazsKLQkJCX0KIAkJCXBmbnNbaV0gPSBobW1fZGV2aWNlX2VudHJ5X2Zyb21f cGZuKHJhbmdlLCBwZm4pIHwKIAkJCQkgIGNwdV9mbGFnczsKIAkJfQpAQCAtNjE0LDE1ICs1OTEs NiBAQCBsb25nIGhtbV9yYW5nZV9mYXVsdChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwgdW5zaWdu ZWQgaW50IGZsYWdzKQogCQkJcmV0dXJuIC1FQlVTWTsKIAkJcmV0ID0gd2Fsa19wYWdlX3Jhbmdl KG1tLCBobW1fdm1hX3dhbGsubGFzdCwgcmFuZ2UtPmVuZCwKIAkJCQkgICAgICAmaG1tX3dhbGtf b3BzLCAmaG1tX3ZtYV93YWxrKTsKLQkJLyoKLQkJICogQSBwZ21hcCBpcyBrZXB0IGNhY2hlZCBp biB0aGUgaG1tX3ZtYV93YWxrIHRvIGF2b2lkIGV4cGVuc2l2ZQotCQkgKiBzZWFyY2hpbmcgaW4g dGhlIHByb2JhYmx5IGNvbW1vbiBjYXNlIHRoYXQgdGhlIHBnbWFwIGlzIHRoZQotCQkgKiBzYW1l IGZvciB0aGUgZW50aXJlIHJlcXVlc3RlZCByYW5nZS4KLQkJICovCi0JCWlmIChobW1fdm1hX3dh bGsucGdtYXApIHsKLQkJCXB1dF9kZXZfcGFnZW1hcChobW1fdm1hX3dhbGsucGdtYXApOwotCQkJ aG1tX3ZtYV93YWxrLnBnbWFwID0gTlVMTDsKLQkJfQogCX0gd2hpbGUgKHJldCA9PSAtRUJVU1kp OwogCiAJaWYgKHJldCkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg== 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=-5.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 9DD75C18E5B for ; Mon, 16 Mar 2020 18:13:28 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6DD072071C for ; Mon, 16 Mar 2020 18:13:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6DD072071C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D5ED56B0003; Mon, 16 Mar 2020 14:13:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0FE36B0005; Mon, 16 Mar 2020 14:13:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFE116B0007; Mon, 16 Mar 2020 14:13:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0151.hostedemail.com [216.40.44.151]) by kanga.kvack.org (Postfix) with ESMTP id A492B6B0003 for ; Mon, 16 Mar 2020 14:13:27 -0400 (EDT) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 484D54DB6 for ; Mon, 16 Mar 2020 18:13:27 +0000 (UTC) X-FDA: 76602022854.18.fire12_3b322d69ea52c X-HE-Tag: fire12_3b322d69ea52c X-Filterd-Recvd-Size: 3909 Received: from verein.lst.de (verein.lst.de [213.95.11.211]) by imf11.hostedemail.com (Postfix) with ESMTP for ; Mon, 16 Mar 2020 18:13:26 +0000 (UTC) Received: by verein.lst.de (Postfix, from userid 2407) id 63BBC68BFE; Mon, 16 Mar 2020 19:13:24 +0100 (CET) Date: Mon, 16 Mar 2020 19:13:24 +0100 From: Christoph Hellwig To: Jason Gunthorpe Cc: Christoph Hellwig , Jerome Glisse , Ralph Campbell , Felix.Kuehling@amd.com, linux-mm@kvack.org, John Hubbard , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Philip Yang Subject: Re: [PATCH hmm 2/8] mm/hmm: don't free the cached pgmap while scanning Message-ID: <20200316181324.GA24533@lst.de> References: <20200311183506.3997-1-jgg@ziepe.ca> <20200311183506.3997-3-jgg@ziepe.ca> <20200316090250.GB12439@lst.de> <20200316180713.GI20941@ziepe.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200316180713.GI20941@ziepe.ca> User-Agent: Mutt/1.5.17 (2007-11-01) Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Mar 16, 2020 at 03:07:13PM -0300, Jason Gunthorpe wrote: > I chose this to be simple without having to goto unwind it. >=20 > So, instead like this: As =D1=95aid, and per the previous discussion: I think just removing the pgmap lookup is the right thing to do here. Something like this patch: diff --git a/mm/hmm.c b/mm/hmm.c index 3d10485bf323..9f1049815d44 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -28,7 +28,6 @@ =20 struct hmm_vma_walk { struct hmm_range *range; - struct dev_pagemap *pgmap; unsigned long last; unsigned int flags; }; @@ -198,15 +197,8 @@ static int hmm_vma_handle_pmd(struct mm_walk *walk, = unsigned long addr, return hmm_vma_fault(addr, end, fault, write_fault, walk); =20 pfn =3D pmd_pfn(pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT); - for (i =3D 0; addr < end; addr +=3D PAGE_SIZE, i++, pfn++) { - if (pmd_devmap(pmd)) { - hmm_vma_walk->pgmap =3D get_dev_pagemap(pfn, - hmm_vma_walk->pgmap); - if (unlikely(!hmm_vma_walk->pgmap)) - return -EBUSY; - } + for (i =3D 0; addr < end; addr +=3D PAGE_SIZE, i++, pfn++) pfns[i] =3D hmm_device_entry_from_pfn(range, pfn) | cpu_flags; - } hmm_vma_walk->last =3D end; return 0; } @@ -277,15 +269,6 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, = unsigned long addr, if (fault || write_fault) goto fault; =20 - if (pte_devmap(pte)) { - hmm_vma_walk->pgmap =3D get_dev_pagemap(pte_pfn(pte), - hmm_vma_walk->pgmap); - if (unlikely(!hmm_vma_walk->pgmap)) { - pte_unmap(ptep); - return -EBUSY; - } - } - /* * Since each architecture defines a struct page for the zero page, jus= t * fall through and treat it like a normal page. @@ -455,12 +438,6 @@ static int hmm_vma_walk_pud(pud_t *pudp, unsigned lo= ng start, unsigned long end, =20 pfn =3D pud_pfn(pud) + ((addr & ~PUD_MASK) >> PAGE_SHIFT); for (i =3D 0; i < npages; ++i, ++pfn) { - hmm_vma_walk->pgmap =3D get_dev_pagemap(pfn, - hmm_vma_walk->pgmap); - if (unlikely(!hmm_vma_walk->pgmap)) { - ret =3D -EBUSY; - goto out_unlock; - } pfns[i] =3D hmm_device_entry_from_pfn(range, pfn) | cpu_flags; } @@ -614,15 +591,6 @@ long hmm_range_fault(struct hmm_range *range, unsign= ed int flags) return -EBUSY; ret =3D walk_page_range(mm, hmm_vma_walk.last, range->end, &hmm_walk_ops, &hmm_vma_walk); - /* - * A pgmap is kept cached in the hmm_vma_walk to avoid expensive - * searching in the probably common case that the pgmap is the - * same for the entire requested range. - */ - if (hmm_vma_walk.pgmap) { - put_dev_pagemap(hmm_vma_walk.pgmap); - hmm_vma_walk.pgmap =3D NULL; - } } while (ret =3D=3D -EBUSY); =20 if (ret)