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 D80B6C021AD for ; Tue, 18 Feb 2025 16:20:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5A572280150; Tue, 18 Feb 2025 11:20:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5551328014F; Tue, 18 Feb 2025 11:20:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3F5F4280150; Tue, 18 Feb 2025 11:20:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 20EC528014F for ; Tue, 18 Feb 2025 11:20:45 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0156B45B7B for ; Tue, 18 Feb 2025 16:20:43 +0000 (UTC) X-FDA: 83133578808.14.71006AE Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf20.hostedemail.com (Postfix) with ESMTP id 576B21C0017 for ; Tue, 18 Feb 2025 16:20:41 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Cq837tT1; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf20.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739895641; a=rsa-sha256; cv=none; b=zO7U47VM5Rxh5dYEHgza6Ma1pJXQEPIOIDg9ptkjMmL1OK+e50FUqYw7+iGPWZbDtZKDyr XedOmYSMMbsJi/tyfBcuqfJLROh3czQUhsJkk5z4XVvyEO79PMHoUQuJfcIIkKxbrMTQ/i G2YrrRmnFmqqdtPk2LxIkMDFQDTHr4M= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Cq837tT1; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf20.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739895641; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=psCROh/u4XmmWnXZwEf+kEObSVmJ4+iZ2KgCVphV0Bc=; b=WCvyC5hr0rH+bOSOCL4PugR1SDW8L7VD3TQeToJMFMDtVjtcBZbWsLBkVbMS6JVzIREWaV EvCjCX3freZReeBz5jk9dXYTtbx0xkVob5SRunK+R4x9IXweg8LGr/NyyhsKXTmkrAg2C/ Jw2QkIw88GydtTRmMP9PvDYi/W3axLA= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51IG934F009895; Tue, 18 Feb 2025 16:20:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=pp1; bh=psCROh/u4XmmWnXZwEf+kEObSVmJ4+ iZ2KgCVphV0Bc=; b=Cq837tT1QEabHYlI9JkZ6FlnIMYHMyZWQHN+crU7BS2D7P EeImSs1ujqHvOsE9vgr1xvUMk9PbhHEbJdgMfpSQbu2TmqdxEj6lO1eSYViHbW5Y Xiom5hy7LO4i/BqYFt38C9nlWQJhP8VYuXnZAAKW1nIlOoPPEco27JwBgxv9ffR3 NlIOfJv+iYVaEUrwQ1lMgkTJpvp+ngQ+8ipeGn0JF2qrJKa4yO5fecVy7mLOu5tE LEkHqfi1P0grKaZmha+Wt8mRFcyvPUJQLMOoTmXGw98I+fKkd7X21LFbm52G85pL 2EPK0W1SQKJqqFC3oyXyG7bg6P7OIjZtHX2MOnWA== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44vnwpjhpq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Feb 2025 16:20:33 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51IEEF6P013325; Tue, 18 Feb 2025 16:20:32 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44u7fkkuum-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Feb 2025 16:20:32 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51IGKV6B9109868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Feb 2025 16:20:31 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1775420043; Tue, 18 Feb 2025 16:20:31 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7297520040; Tue, 18 Feb 2025 16:20:30 +0000 (GMT) Received: from li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com (unknown [9.171.88.119]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 18 Feb 2025 16:20:30 +0000 (GMT) Date: Tue, 18 Feb 2025 17:20:28 +0100 From: Alexander Gordeev To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, linux-arch@vger.kernel.org, x86@kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-um@lists.infradead.org Subject: Re: [PATCH 1/7] mm: Set the pte dirty if the folio is already dirty Message-ID: References: <20250217190836.435039-1-willy@infradead.org> <20250217190836.435039-2-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250217190836.435039-2-willy@infradead.org> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: KfuzgK7HnCFLppKRBSZ3W5dKc20FQNnF X-Proofpoint-ORIG-GUID: KfuzgK7HnCFLppKRBSZ3W5dKc20FQNnF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-18_07,2025-02-18_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 mlxlogscore=290 impostorscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 mlxscore=0 adultscore=0 suspectscore=0 bulkscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502180116 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 576B21C0017 X-Stat-Signature: 4efzpd966zhihti6qf35mtkxuyxzwmqz X-Rspam-User: X-HE-Tag: 1739895641-577193 X-HE-Meta: U2FsdGVkX1/D75PEEDKFizqYUw/BUxDu7dzAJ0kwdxk1Bs4NZT5y8guPVhvd7H8t3jeGsep0Zh1eksjDyK931E5LPpi7ie+wnQxG2K3R1bJX4f2D4XHYGXsnUb+SlEm1uZmk0dEZQYhTlHeZ7usOJUcPw0znKcHWv65+BN92hipg5N13J/z7mPIRyYZK23MbRzBaC4nyJY/lUfmf/ma0iS3QDiL1wYPpNgyAcdqjQAw0P+M1bvPIee8pPVCLXctqupIONJ/cS/e6p1LyhsMxkXbhFGPJpJBGrcCJdeY0i3qVc/r0kN6CK0OM0DjmuLcZefMDXEkSFnmYbAFZBFOAkz7UD7Y08A0FHFNumIXMTP+RguxvX5wC8Xoxsg8ondANulhSg7AiAn314UxrdVe7Ms4k0NFzDcGIJzkvb0QToY27fLnvNRw7Gq5veuYwOs4YbtddAZGnAAJN9ZYiLbToS+MiNuC2rmwd39WcmIsT07H6glE+mfolkTGVMGOtX7cn0lCfj4hY9z5bpb5qn94aEV02WxG8yRRqiQtgoFqLjNE6RR7Pv+/WeYQRemyIEwRPbypOujphSJiE2cSEDmy2oBna3/MGBBfDMNCAbIBV2ecjU4yLCxRBrNqtqgRWMnUMCxdOcowjK6vUDHLjrnLewU+4pd6Olz4TS7917g2EN45GOixW+JmgBxRIa0jqPx24FugV7NNtZNY9Ksc73laRvb4L0FUke45Y6H6+rg5gh8ZxHRCHlo9QWZXlyjmhaLpEGWUyvQMonJe4b6nQwSiKsDj5mCQUJEI+r3N07jVXqdyQksmi2vuokw/ZiHvqK9NL7UfH/wG+LMZf5DqDPznHNQnZ44yYLN33SijzyhuIFfqkoa+nI2jVlbe2cigWHM4h4QvXPkKIGG9IppZu938bVYFusnh4txaAn9KFjzc50vlOWiILeGsBsrNgonICVDqeuam/6TBG04AsAU4KJgo Xa4I1nY5 065pFWFc7le3BcbuEufVuaVLDQN+mJNOp1FYbTCC7pzMO3FszFmi70Arhq30T5F/PK3WtJ53vW5mRbnoZ/jcvzIMAsszCABxaq3ZBSnN4qs6+bm6gbC0VtCAHz1RND2LQ469xvNUDjk/QH/F390uoQU7glB8H2MddIoM9vJTIAf7nRY80IEsJV7EubgokkVp7d1JVP5aaQ6DBSFa9dgLSThxJhsyr0lSUByjQzDb2tZPPo4P+i2WaPr0X0UcPzmp91kfruqy//bufvAg38qAbFFVqKDRTcoODJr12s1Nr6EkBhGaDlOPi7ryeqS16ju89+aM5+hblwy9XqVIjacHYg0tIc5yS+Db63U1SktWLAUEuOR5Wa71n5TDAdIgH+mECQcX3 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 Mon, Feb 17, 2025 at 07:08:28PM +0000, Matthew Wilcox (Oracle) wrote: Hi Matthew, > If the first access to a folio is a read that is then followed by a > write, we can save a page fault. s390 implemented this in their > mk_pte() in commit abf09bed3cce ("s390/mm: implement software dirty > bits"), but other architectures can also benefit from this. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > arch/s390/include/asm/pgtable.h | 7 +------ > mm/memory.c | 2 ++ > 2 files changed, 3 insertions(+), 6 deletions(-) > > diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h > index 3ca5af4cfe43..3ee495b5171e 100644 > --- a/arch/s390/include/asm/pgtable.h > +++ b/arch/s390/include/asm/pgtable.h > @@ -1451,12 +1451,7 @@ static inline pte_t mk_pte_phys(unsigned long physpage, pgprot_t pgprot) > > static inline pte_t mk_pte(struct page *page, pgprot_t pgprot) > { > - unsigned long physpage = page_to_phys(page); > - pte_t __pte = mk_pte_phys(physpage, pgprot); > - > - if (pte_write(__pte) && PageDirty(page)) > - __pte = pte_mkdirty(__pte); > - return __pte; > + return mk_pte_phys(page_to_phys(page), pgprot); > } With the above the implicit dirtifying of hugetlb PTEs (as result of mk_huge_pte() -> mk_pte()) in make_huge_pte() is removed: static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page, bool try_mkwrite) { ... if (try_mkwrite && (vma->vm_flags & VM_WRITE)) { entry = huge_pte_mkwrite(huge_pte_mkdirty(mk_huge_pte(page, vma->vm_page_prot))); } else { entry = huge_pte_wrprotect(mk_huge_pte(page, vma->vm_page_prot)); } ... } What is your take on this? > #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) > diff --git a/mm/memory.c b/mm/memory.c > index 539c0f7c6d54..4330560eee55 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -5124,6 +5124,8 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio, > > if (write) > entry = maybe_mkwrite(pte_mkdirty(entry), vma); > + else if (pte_write(entry) && folio_test_dirty(folio)) > + entry = pte_mkdirty(entry); > if (unlikely(vmf_orig_pte_uffd_wp(vmf))) > entry = pte_mkuffd_wp(entry); > /* copy-on-write page */ Thanks!