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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EB51C4345F for ; Wed, 17 Apr 2024 09:30:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AD5926B0098; Wed, 17 Apr 2024 05:30:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A865B6B009B; Wed, 17 Apr 2024 05:30:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94DBC6B009D; Wed, 17 Apr 2024 05:30:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 751396B0098 for ; Wed, 17 Apr 2024 05:30:48 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 3BE90A1EF0 for ; Wed, 17 Apr 2024 09:30:48 +0000 (UTC) X-FDA: 82018504176.24.55264AD Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf05.hostedemail.com (Postfix) with ESMTP id CC6A7100011 for ; Wed, 17 Apr 2024 09:30:45 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; spf=pass (imf05.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713346246; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=81GOx7pyft+jePgpFSu5LahQlApW/A2jvszEsepB+KI=; b=ZduRMwzaX/Pn18DEEhPzE/Dfg5Bma85DlQ5Xw4+EhiUYt1T4B8267VykYZ/SvwkYQ7xOhq hGkNEuH4QhNvBepAfqjZE+yfNytWv3NFT9VA2QqsVG7YEC4Ouod8YEvGKNCtYYl24rPLTX GKZVNWYhXn/iR+FndLsTGBw/I628jpA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713346246; a=rsa-sha256; cv=none; b=AnKtpGk+XoYQ+oAPuLy0pjXhRt99hsI+cqRAVeFRVQB33C/t89RaXwxOCERYxCWTnhOzTs jnpqOSXTI1AaCm+earzLJETTwCs0ImUQHc08VqLBhmuFNDDzDYz2Im5i3pE6AIt2lZeGTV fXD7OzrY0IcKD2nUfXF4MuX3Y01xaHU= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; spf=pass (imf05.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4VKFtf5lpXzwSLf; Wed, 17 Apr 2024 17:27:38 +0800 (CST) Received: from dggpemm100001.china.huawei.com (unknown [7.185.36.93]) by mail.maildlp.com (Postfix) with ESMTPS id D034D18007F; Wed, 17 Apr 2024 17:30:41 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 17 Apr 2024 17:30:41 +0800 Message-ID: Date: Wed, 17 Apr 2024 17:30:40 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm: memory: check userfaultfd_wp() in vmf_orig_pte_uffd_wp() Content-Language: en-US To: Andrew Morton CC: Peter Xu , References: <20240417082359.3413259-1-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: <20240417082359.3413259-1-wangkefeng.wang@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm100001.china.huawei.com (7.185.36.93) X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: CC6A7100011 X-Rspam-User: X-Stat-Signature: q9aajndu8fgp596kp7kiuxfwa1dubydx X-HE-Tag: 1713346245-304425 X-HE-Meta: U2FsdGVkX1+fhCo8JHpTG2f8YwHr1M70tXv7z514YaaRY3K6WKwnFqP4x0E1/wF+NuxbgT8fVuiNsQX/ib9HdnCHTDTUpGANlcB6iFa1vHDhA5nZGXUvkVQJaX7r87CUfjcVRqnWNnDFh3PRTEWL8o2aLTpnH3xCF+63UWjmePEefZ2XWk7Zn0NDXUdN2af3m9LK5WkEM7QGKRGxoyFOwJ6CzuHqpMTrqDOjjPv5L6d1gkLUDsNwIAPpmJyx++wOlPOr4YCMNtfg8GLL5LNZNGTumPnWQOzBM0UbD0zY3eBqFWcBDY+AYtGG6gZ43ED9V++BWeWxNMDkB/qBEVFBI2PlpRdkhhpmBsDumMDt1GhqVTT4IZJ+tHDvF0KuNeYn60TMcyC2xdxZB6vDeol35S3vIbnPacVXwfmK1vgZLOIJn1SQ4Ri9YEQDLCo2tUYKR6X3PPNc5UYUk0mNIFbF6KZNvonw1ePlwFrOhxqo+6pDDe5o5tdriSZX/S+6UrvkG7vrSr9tXzql4J5te0BHDn5vAo2bdzhZ3G309smzJ0MOEJcCa/VMWJwgPfakU1+8L0U6AHDVjdJLlTjVUQhmeiE6cnMzrMgSS+5IBxvWKvu08hg9Qr7eK324/6cc6qUqaDG2HDyC6q4YNkMJcQGI+7X80cq4aT+ibKYNvAbapwBIGtZAdMhD6uzs9Yk0KmCy2cmIx1ulVZNQq9r/7lzwyIyh2OGFsYxQfOIZeaHrXEf14dhL8yEXSjAMA6NV5engkPozVrttiYRmPdvpw5Q2mnqZPVOONq4obcsJjJbYu609gLlKJtOFovy6BAHlsC8jfjCueoTqsKb7bPs9oSsr8CdxlswE9QHGzY8UoAvo7NlxmshmcJ3NmUaagwm9l5Vteya4CdlCxvV2l8lza9h31TH1/+/C/LdAW1X5NxIjTEiP9lxis368e3/sPyxjjKKy4ugjvwZs3Ef0cIR8O+Q Mi6dfi/u br9xF0pTy840rcHdYIffcRaRGofuBR8Ho1NzBo2EtjBW1u1NmMZ+ygu8pozbZRGs+bCdJZljYJSRM7Vn4Q1utcmS8Dj2JVCU8TGg/z31miIq7TBSkI80ParaAdkPDkqRKdhJkR2yhs7DL+4rrdKTutaPaqz6mY8q98RDfMQpf3jksRJJrQWwPrWcScVCb5f9509HLHsyzMGyAgXS/hgTjirFskgFXfCDaKhD9vVSsPkytiBeJcX6mOcX63Q== 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: List-Subscribe: List-Unsubscribe: On 2024/4/17 16:23, Kefeng Wang wrote: > Directly call vmf_orig_pte_uffd_wp() in do_anonymous_page() and > set_pte_range() to save a uffd_wp and add userfaultfd_wp() check > in vmf_orig_pte_uffd_wp() to avoid the unnecessary function calls > in the most sense, lat_pagefault testcase does show improvement > though very small(~1%). > > Signed-off-by: Kefeng Wang > --- > mm/memory.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 5ae2409d3cb9..a6afc96001e6 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -117,6 +117,9 @@ static bool vmf_orig_pte_uffd_wp(struct vm_fault *vmf) if (!IS_ENABLED(CONFIG_PTE_MARKER_UFFD_WP)) return false; Will add config check too, > if (!(vmf->flags & FAULT_FLAG_ORIG_PTE_VALID)) > return false; > > + if (!userfaultfd_wp(vmf->vma)) > + return false; > + but wait for review. > return pte_marker_uffd_wp(vmf->orig_pte); > } > > @@ -4388,7 +4391,6 @@ static struct folio *alloc_anon_folio(struct vm_fault *vmf) > */ > static vm_fault_t do_anonymous_page(struct vm_fault *vmf) > { > - bool uffd_wp = vmf_orig_pte_uffd_wp(vmf); > struct vm_area_struct *vma = vmf->vma; > unsigned long addr = vmf->address; > struct folio *folio; > @@ -4488,7 +4490,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf) > folio_add_new_anon_rmap(folio, vma, addr); > folio_add_lru_vma(folio, vma); > setpte: > - if (uffd_wp) > + if (vmf_orig_pte_uffd_wp(vmf)) > entry = pte_mkuffd_wp(entry); > set_ptes(vma->vm_mm, addr, vmf->pte, entry, nr_pages); > > @@ -4663,7 +4665,6 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio, > struct page *page, unsigned int nr, unsigned long addr) > { > struct vm_area_struct *vma = vmf->vma; > - bool uffd_wp = vmf_orig_pte_uffd_wp(vmf); > bool write = vmf->flags & FAULT_FLAG_WRITE; > bool prefault = in_range(vmf->address, addr, nr * PAGE_SIZE); > pte_t entry; > @@ -4678,7 +4679,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio, > > if (write) > entry = maybe_mkwrite(pte_mkdirty(entry), vma); > - if (unlikely(uffd_wp)) > + if (unlikely(vmf_orig_pte_uffd_wp(vmf))) > entry = pte_mkuffd_wp(entry); > /* copy-on-write page */ > if (write && !(vma->vm_flags & VM_SHARED)) {