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 14146EB64D9 for ; Mon, 19 Jun 2023 03:56:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4BAA58D0002; Sun, 18 Jun 2023 23:56:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 46A8C8D0001; Sun, 18 Jun 2023 23:56:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3323D8D0002; Sun, 18 Jun 2023 23:56:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 2437D8D0001 for ; Sun, 18 Jun 2023 23:56:21 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id CE75FA0369 for ; Mon, 19 Jun 2023 03:56:20 +0000 (UTC) X-FDA: 80918134920.22.1B0E24B Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by imf05.hostedemail.com (Postfix) with ESMTP id A9BFF100006 for ; Mon, 19 Jun 2023 03:56:18 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmx.de header.s=s31663417 header.b=tHEzjmtG; spf=pass (imf05.hostedemail.com: domain of deller@gmx.de designates 212.227.17.20 as permitted sender) smtp.mailfrom=deller@gmx.de; dmarc=pass (policy=none) header.from=gmx.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687146978; 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:dkim-signature; bh=ybipv5TgKhYNVSnh7hAvYwTzjw4lwgzmdBzfB8BW3mk=; b=xSay4R3yNwqz8Mf4cA/bKprz0MTjBEK7rD9nmRBEVUVYHxQnhgeGmGSGzMA16DfB/gpFEi NH8pNdFUVyCrRMvDeGik4vA7NLY3JdHZ41d9SUUtUTcgbE8bTSaOVQVGqnOJ/4Dkd+oQtM ASJEbrfl6iNXcTDgbEZPFoeB01ackyk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687146978; a=rsa-sha256; cv=none; b=6dQjadmnYa6wTLXSPpSd2SBBaDVE9sybI/dzaZeGyZhLVZY0r3Xd6h59TdVeV3ErRCG30q BMIHiIKrS6ppJtfHKI96K4MxTucSRGRWfwZa3FVJHHH6BrBJsapxQK3jdzcHNz/AlUGNFL EE1Q+N98F1N2xPO8s2gWLqOmK/CkgWM= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmx.de header.s=s31663417 header.b=tHEzjmtG; spf=pass (imf05.hostedemail.com: domain of deller@gmx.de designates 212.227.17.20 as permitted sender) smtp.mailfrom=deller@gmx.de; dmarc=pass (policy=none) header.from=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1687146949; x=1687751749; i=deller@gmx.de; bh=2fndrLIH+tdYpXaN3a+B2+gpkPc6UJVTkZbYPRfVVB8=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=tHEzjmtG0VENHAd2DsNX0VdgvhB3svy7eaGOu9NFOvFGhn1vMbEvw1DJ+6Ro8SfR+zYO8Jk oQyuTgSliiEbg8vZLpHgVzlyXTGg39KCzCetFU2QY1sIGcgFZePrwHb9ybGVXL+myxIM7zyFW vutzWxYp5k3P7CbcRS0bdRBQ3OV2xelDwHz+H2/Evbu2z8c/2sLPc4ox6wVqaIps6PKmnyug3 Uh162w8Lsy86g+eUKl1+1tWZwxCjWi6j5hYhUWVVAHRKRfHvDjtn4aElpEf0t4RvU0/z6Fz8/ PwGLztv0XjhmK7HYbqINh4rNCYiEBBtnOqKRgIMD0/NnASTKw8BA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.20.60] ([94.134.148.114]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1My36N-1ptYsd3hol-00zXMS; Mon, 19 Jun 2023 05:55:49 +0200 Message-ID: <2f5a3805-b7a5-1c45-e5a4-e273ea289ba6@gmx.de> Date: Mon, 19 Jun 2023 05:55:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v2 08/23] parisc: add pte_unmap() to balance get_ptep() Content-Language: en-US To: Hugh Dickins , Andrew Morton Cc: Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Qi Zheng , Peter Zijlstra , Russell King , Catalin Marinas , Will Deacon , Geert Uytterhoeven , Greg Ungerer , Michal Simek , Thomas Bogendoerfer , John David Anglin , "Aneesh Kumar K.V" , Michael Ellerman , Alexandre Ghiti , Palmer Dabbelt , Heiko Carstens , Christian Borntraeger , Claudio Imbrenda , Alexander Gordeev , John Paul Adrian Glaubitz , "David S. Miller" , Chris Zankel , Max Filippov , x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-ia64@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <653369-95ef-acd2-d6ea-e95f5a997493@google.com> From: Helge Deller In-Reply-To: <653369-95ef-acd2-d6ea-e95f5a997493@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:E3xdg5CpQcjOoKW8Y56OwqWPK69wZz6OC3pXUq5sC4koD4vx6TE 8yx7mlAVEcBGQCbXtdVKp5UUdnr/61/KwgdLsdsCeafoXWrwMUBr6cWiQIGAUgINT3sBkXj YUQ+i02IXhG0ZBE1C7Dv9zl3aVQVXzwfFiVekkVC97MGOBsK+OwPv4gKZzvDYcrI9sx6vlb RKMhNKB17Raa0wGb+9IJg== UI-OutboundReport: notjunk:1;M01:P0:f2v0q5B++HE=;Da2Hd/q80C0hblRDasa115R7ipH ITP+kxg7e8qZRipjLb6CGqyHPdG/Zhb8pEJIpXAWFU3ar1yt+BeqPp25z1tD2fgQoomDBafSI T2JI0cHyhX9oBPPhCH37HzO5OqjXai1apVVEetq9P184N6g33p3cSDDZYP4I6GoLDN9DvQEFu QGd3zrkWkqEmZ6Vad/7T9wzoz6Iy73Cj+YnQUayxP/WmDRLwi5RNxp1O83PFQIH+w3CKE1EWO 23kOMxcrgAD7YqjQU4alZc4K1Phuaj4FBExhBg+66ocbKtD9nfb6PZRuchNLX/Q5VmxOlBfea +unhX9xz0F4yej82C9a9Ahzf2WFmqaqduJ4GfxBBVMpA2OodPCXovgqDmB1veKiq8vZA6X5yk wU+Jcnh+QmfWXd/xL82C8EjAYdwJcDg+eEk6he/T2BpLkdrJqvUsbwmL1s6vm3h2xfZdv9HjP HDqKexAwIHyONgbwbztyEJNTMjILHQtvalYaPHd4cLJWdj/f+xdGeWpPd11qIZv0pNRC6RmzG BMRyfjmCQkvWDZio/DHwSQ9i0PRIQ+8+VjmSj1b6Y6CsaT5/J9RXXe4kiJxSG4snZdzRGYY2O 4McI1b8tXhq5e63I/ekb0ajHKJ5Bor2QBVqDM68FKmYbJv/bR6oV8WIMMsLewJ2LUtXAfXAbu x/EEjEq7JGtus66za+aX5Yazu6PYy0EIzEn+QO1Pnloxqaq1TITSpEEXtzuFrLPYbW8qHKqNl aMzyEK7bpqATAUqTeGQYGs5kvHwxHgsW47YV5D9G3+QzisWw4SSUG2zUA0IqSI6i/fK/bZUUg 9s7lXJW9HE6ObKs8Fk2cZGz0H9VAEPLoLgBcumMBsPE0yNFDqFiHwKmbJ24rQM7wtujiIH8eg Du+92nPxZgAKb8/YuRr6Rozc58x213b7vXjIz4uu3TcvqL6TMGK4B5hLfnDu5CfN3qfqxkdKR hKk8rTZjPetTc5al7ev4qbwvKGA= X-Rspamd-Queue-Id: A9BFF100006 X-Rspam-User: X-Stat-Signature: agmadi4q1gf1z1b9y9hegom3ydr8xjrm X-Rspamd-Server: rspam03 X-HE-Tag: 1687146978-32915 X-HE-Meta: U2FsdGVkX19bMq+Pee++DVKyeMnfIEu3WondLEvbAWOBRYi2TLtor3HBk1zDhhik5UhEKEzWWc2pxU+K1qu7FFnDD6Hhy8JamM7noKB605LyHbi7bnQsxBffGgy7UcEJKPrWS+V5UTWJBYLbny5CrIO329nf+YYH+vQRaG8I478UUZQhPfm5DpU6W3smtAeJNnzfE8H+tg+04WZdj1Qu9jd9KKyphD/T83d3IdeGsEU8JMZQcXWnMW/jod01ZCyN7duZsZNskg2FKMib4CRQAgOhXLUrDG/yIZOQO2bmIvQIEepEeZmyNhy8Cftx2CEcVLCzHP18SzZvwgzme5QkmDKnlBDPKpBHannhIjiqyL0UB9p9jL6e0Bpb0iFzCI2BFqBd2i8+Fxktmv6Dn4KQEK+MfxFR4cIjboJlrtkCgsT9jMxLIt2Fgn/dDj+vDZdSjLLBC1AwxgARDK1aS9RipWpSazSjBXsEo9WumciX7uoWSoPls0auPTavhLNk88RHO4P1nr6EoLf2pdDzKy9RSsoBLE6uDPsErGMrnqStjEPtH9Q7TzTdpMioIuIyM+1YSUywWwdZu/h3UQ33boSjObDxTGl2+yeB+V67m9BVQPsyNG/1xPnD8gJax9IHEO+SUbnVGOFCIhyI7GHxHetuVpOVJih2cMwvzfZfz8MrvEpE2/QkU3DkJz/a0LkrQCUIoG/KJL66mRAmpzXo5cpnJo3Jyu0egB4B56pRcrMzG/hmgs/pLzLPcIZINz9liINPDtJD6V+hddCFOzCxzUK4Ff1Aw32Zo2PlWsUaqYY9i9FkcOQZRWUdyYjFDhMBIV+Ng0Op2LmJZnxdrjawwpbo0JyhBoCFeozPWV40itJlhEndS4UXTPYLOI17ZUTunJyB8XDjv2d1F+xOjHrYOYLkvxn00ixOLUXOOHveTcDqOiJL3U78UWGU41GxEf37BfTcp9sB8lR3n9EI4X6rRsq aR9/Eo8q wJtF632cFN4kcM9WwdhCYo0qMSDy3Z0MMfNyeUuPfnpy0lL6BLvJET3jm0tY06WrUl3iX0jJwkYQhFgnG8ZQb3r1IpxTuFnA8k1k1l01C2XgmOn/FtDEoHY0YLeP6Sab891pA/Pbd5Dg1uJFEjffpjYRA79qbZifBLfKUpXH1ViOPH6S0k8Fhamerq/BgC65SqJpKIpwkxXTsKnrrwRkmKb6hg6aO8UKnrLaW5P3X7sWaRKfIA+bVG+9G+7+B17q7uBVdAiTZICVh5IWcOiUU2EQ0MT/KKq0kum2FVxQeksFcUi4= 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 6/8/23 21:18, Hugh Dickins wrote: > To keep balance in future, remember to pte_unmap() after a successful > get_ptep(). And act as if flush_cache_pages() really needs a map there, > to read the pfn before "unmapping", to be sure page table is not removed= . > > Signed-off-by: Hugh Dickins For the parisc parts: Acked-by: Helge Deller # parisc Helge > --- > arch/parisc/kernel/cache.c | 26 +++++++++++++++++++++----- > 1 file changed, 21 insertions(+), 5 deletions(-) > > diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c > index ca4a302d4365..501160250bb7 100644 > --- a/arch/parisc/kernel/cache.c > +++ b/arch/parisc/kernel/cache.c > @@ -426,10 +426,15 @@ void flush_dcache_page(struct page *page) > offset =3D (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT; > addr =3D mpnt->vm_start + offset; > if (parisc_requires_coherency()) { > + bool needs_flush =3D false; > pte_t *ptep; > > ptep =3D get_ptep(mpnt->vm_mm, addr); > - if (ptep && pte_needs_flush(*ptep)) > + if (ptep) { > + needs_flush =3D pte_needs_flush(*ptep); > + pte_unmap(ptep); > + } > + if (needs_flush) > flush_user_cache_page(mpnt, addr); > } else { > /* > @@ -561,14 +566,20 @@ EXPORT_SYMBOL(flush_kernel_dcache_page_addr); > static void flush_cache_page_if_present(struct vm_area_struct *vma, > unsigned long vmaddr, unsigned long pfn) > { > - pte_t *ptep =3D get_ptep(vma->vm_mm, vmaddr); > + bool needs_flush =3D false; > + pte_t *ptep; > > /* > * The pte check is racy and sometimes the flush will trigger > * a non-access TLB miss. Hopefully, the page has already been > * flushed. > */ > - if (ptep && pte_needs_flush(*ptep)) > + ptep =3D get_ptep(vma->vm_mm, vmaddr); > + if (ptep) { > + needs_flush =3D pte_needs_flush(*ptep); > + pte_unmap(ptep); > + } > + if (needs_flush) > flush_cache_page(vma, vmaddr, pfn); > } > > @@ -635,17 +646,22 @@ static void flush_cache_pages(struct vm_area_struc= t *vma, unsigned long start, u > pte_t *ptep; > > for (addr =3D start; addr < end; addr +=3D PAGE_SIZE) { > + bool needs_flush =3D false; > /* > * The vma can contain pages that aren't present. Although > * the pte search is expensive, we need the pte to find the > * page pfn and to check whether the page should be flushed. > */ > ptep =3D get_ptep(vma->vm_mm, addr); > - if (ptep && pte_needs_flush(*ptep)) { > + if (ptep) { > + needs_flush =3D pte_needs_flush(*ptep); > + pfn =3D pte_pfn(*ptep); > + pte_unmap(ptep); > + } > + if (needs_flush) { > if (parisc_requires_coherency()) { > flush_user_cache_page(vma, addr); > } else { > - pfn =3D pte_pfn(*ptep); > if (WARN_ON(!pfn_valid(pfn))) > return; > __flush_cache_page(vma, addr, PFN_PHYS(pfn));