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 BFFBBC001B0 for ; Wed, 16 Aug 2023 11:44:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DD2F900005; Wed, 16 Aug 2023 07:44:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28C528D0001; Wed, 16 Aug 2023 07:44:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 153D6900005; Wed, 16 Aug 2023 07:44:53 -0400 (EDT) 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 06A688D0001 for ; Wed, 16 Aug 2023 07:44:53 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C1544A0F36 for ; Wed, 16 Aug 2023 11:44:52 +0000 (UTC) X-FDA: 81129786024.23.8C2667D Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by imf04.hostedemail.com (Postfix) with ESMTP id A9D7C4001F for ; Wed, 16 Aug 2023 11:44:48 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=LRe0ntnl; dmarc=pass (policy=none) header.from=samsung.com; spf=pass (imf04.hostedemail.com: domain of da.gomez@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=da.gomez@samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692186289; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=ybP/u9jD3e17xx+5UrgeaaroBvLgdMV/sJVwSUP79EE=; b=16+V4pIg1IvYqGf0fUgCCmIJbcXXxkgQOvx5//n7c2dsm1CtHoAaNk5NUbIl2/5vYu0btt AfEzdQRTgdQuCTYykd48ZR4AxKs42wcWII1xv8vFboxlgftXXtp/9ZKtKOVuE2l3MnvDtT Tzlb2AJPtDHUbmidDqoT5dqcPYyf3NM= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=LRe0ntnl; dmarc=pass (policy=none) header.from=samsung.com; spf=pass (imf04.hostedemail.com: domain of da.gomez@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=da.gomez@samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692186289; a=rsa-sha256; cv=none; b=zEZKTcCymhCwLHoycWyucw68hrQNkcputF2F1N+A6d2m1GRobYZG+IZ2WUsLtEcnZp5qk3 R+4y53vB+tqAIiBNEg56na3F1qKrY4WQGyyTwDr2P2MFBmH3RVs9NTMJLYbTWAmEwoV0aa 9VHrjBXd7pCDJ7YqWOksEIN8kbI0mhc= Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20230816114445euoutp01830bbb88164edb6d6a0758197bf72cb3~72nYlyXLa1589715897euoutp01O for ; Wed, 16 Aug 2023 11:44:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20230816114445euoutp01830bbb88164edb6d6a0758197bf72cb3~72nYlyXLa1589715897euoutp01O DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1692186286; bh=ybP/u9jD3e17xx+5UrgeaaroBvLgdMV/sJVwSUP79EE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=LRe0ntnlR7AW5LTvIRLVgOZm4Pq0+Rj2fDkKg6YBww3E4az/qucnvgkdns3tv0iih T2C/t9d+bXnFwFU0bRH6Q247j9yCdNFqG56TbQDSVZ5DNVb9/nE8zL8qqF9D3DzENx l7or3nts7lsGOZgEquJMysoiO11PWFTzn17M4ayQ= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20230816114445eucas1p1080f6e8f332f6d04388749a0023474af~72nYOt-vb3120331203eucas1p1Z; Wed, 16 Aug 2023 11:44:45 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 86.6D.42423.DA6BCD46; Wed, 16 Aug 2023 12:44:45 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20230816114444eucas1p10af08143378ae52fcc3694158265d7ab~72nXm7Nn10491904919eucas1p1e; Wed, 16 Aug 2023 11:44:44 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20230816114444eusmtrp2de454619f9385fbe7fe1f9e936ac4dcb~72nXmQ9uF1142111421eusmtrp2q; Wed, 16 Aug 2023 11:44:44 +0000 (GMT) X-AuditID: cbfec7f2-a51ff7000002a5b7-f1-64dcb6adaf00 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id C1.73.10549.CA6BCD46; Wed, 16 Aug 2023 12:44:44 +0100 (BST) Received: from CAMSVWEXC01.scsc.local (unknown [106.1.227.71]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20230816114444eusmtip27edfb6c0aaadef540a9af7b73bfe0924~72nXZvqjZ2443724437eusmtip2e; Wed, 16 Aug 2023 11:44:44 +0000 (GMT) Received: from CAMSVWEXC02.scsc.local (2002:6a01:e348::6a01:e348) by CAMSVWEXC01.scsc.local (2002:6a01:e347::6a01:e347) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Aug 2023 12:44:43 +0100 Received: from CAMSVWEXC02.scsc.local ([::1]) by CAMSVWEXC02.scsc.local ([fe80::3c08:6c51:fa0a:6384%13]) with mapi id 15.00.1497.012; Wed, 16 Aug 2023 12:44:43 +0100 From: Daniel Gomez To: Yin Fengwei , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" , "akpm@linux-foundation.org" , "willy@infradead.org" , "vishal.moola@gmail.com" , "wangkefeng.wang@huawei.com" , "minchan@kernel.org" , "yuzhao@google.com" , "david@redhat.com" , "ryan.roberts@arm.com" , "shy828301@gmail.com" Subject: Re: [PATCH v2 3/3] madvise:madvise_free_pte_range(): don't use mapcount() against large folio for sharing check Thread-Topic: [PATCH v2 3/3] madvise:madvise_free_pte_range(): don't use mapcount() against large folio for sharing check Thread-Index: AQHZz3vpurV86lSwc0Wr64w4rsIXva/r8T+AgADNGgA= Date: Wed, 16 Aug 2023 11:44:43 +0000 Message-ID: In-Reply-To: <2bfa1931-1fc6-5d6f-cba1-c7a9eb8a279a@intel.com> Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [106.110.32.67] Content-Type: text/plain; charset="us-ascii" Content-ID: <654ECA4FAD1BA543B8F2043D1DBB903F@scsc.local> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGKsWRmVeSWpSXmKPExsWy7djP87prt91JMdj4VM5izvo1bBZf1/9i trhy+g2TxeVdc9gs7q35z2qx7Ot7doue3VMZLRacWAwkNj5itFi/7warRePn+4wWv38A1b2b 8IXVgddjzbw1jB47Z91l91iwqdSj5chbVo/NK7Q8Fu95yeSxaVUnm8emT5PYPU7M+M3i8X7f VTaPz5vkArijuGxSUnMyy1KL9O0SuDJ+r1jIWvBesWLGn3tsDYw3pboYOTgkBEwkGo4JdDFy cQgJrGCUWL3/ExuE84VRomPtOijnM6NE690/TF2MnGAdk869YIVILGeUaP68mAWu6uKxNkYI 5wyjxNPzMMNWMkq8XTiTBaSfTUBTYt/JTewgCRGBZlaJA9M/gCWEBaokVmw7yAhylohAtcTV bdUgYREBK4kXk+azgYRZBFQlds2QAwnzCvhKPPg5C6yTU8BWYv206WA2o4CsxKOVv9hBbGYB cYlbT+ZDnS0osWj2HmYIW0zi366HbBC2jsTZ608YIWwDia1L97FA2IoSHcduskHM0ZFYsPsT lG0psfjBOVYIW1ti2cLXzBD3CEqcnPkEHBISAgu5JA79bGKGhLCLxIVroRAzhSVeHd/CDmHL SPzfOZ9pAqP2LCSnzkKybhaSdbOQrJuFZN0CRtZVjOKppcW56anFhnmp5XrFibnFpXnpesn5 uZsYgUnx9L/jn3Ywzn31Ue8QIxMH4yFGCQ5mJRHeHt5bKUK8KYmVValF+fFFpTmpxYcYpTlY lMR5tW1PJgsJpCeWpGanphakFsFkmTg4pRqYXJhZLNK5X35e/iptde1vQXM7i5P3fi+f8kF0 M0/YtG3F6z50evgw5jfx8tXw5B2MaD1ZqyruMfnV3EM38gU+en9dpBjvsT9R9ckf5k3TeS9N N6ud/qlNPM1ETm6v6gbjYLNV2pnvKuP3iStk/mLO7+7d9vfL3BPzlaoknP01X5iUv5xgPW/V J/vpSRoz2uW9v4g0N374zWpr/l/phq/gWdODl8z7LEobd/6cyiL2oN1aRvTPwjeHKh/ZHrvy goFndWG9u/Vq+cfrds97XF60Y0mogOerFd81dy4Q+HF5/rqqN57CUUt3V3J1mc3g9/8xs2ar eeN1M5cGhznt3R0sDR8zPCTuMNb1RH2UVnRVYinOSDTUYi4qTgQA5TVPt/kDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKKsWRmVeSWpSXmKPExsVy+t/xe7prtt1JMbjaaWQxZ/0aNouv638x W1w5/YbJ4vKuOWwW99b8Z7VY9vU9u0XP7qmMFgtOLAYSGx8xWqzfd4PVovHzfUaL3z+A6t5N +MLqwOuxZt4aRo+ds+6yeyzYVOrRcuQtq8fmFVoei/e8ZPLYtKqTzWPTp0nsHidm/GbxeL/v KpvH501yAdxRejZF+aUlqQoZ+cUltkrRhhZGeoaWFnpGJpZ6hsbmsVZGpkr6djYpqTmZZalF +nYJehm/VyxkLXivWDHjzz22BsabUl2MnBwSAiYSk869YO1i5OIQEljKKHH78A0miISMxMYv V1khbGGJP9e62CCKPjJK3NtwjwnCOcMosfb6FnYIZyWjxIZ/n8Ha2QQ0Jfad3ASWEBFoZpU4 MP0DC0hCWKBKYsW2g4wgtohAtcT94ydYIGwriReT5gPt4OBgEVCV2DVDDiTMK+Ar8eDnLBaI BbuYJKZ//ckMkuAUsJVYP206WC+jgKzEo5W/2EFsZgFxiVtP5kP9ICCxZM95ZghbVOLl439Q /+hInL3+hBHCNpDYunQfC4StKNFx7CYbxBwdiQW7P0HZlhKLH5xjhbC1JZYtfM0McZygxMmZ T1gmMErPQrJ6FpL2WUjaZyFpn4WkfQEj6ypGkdTS4tz03GJDveLE3OLSvHS95PzcTYzA9Lbt 2M/NOxjnvfqod4iRiYPxEKMEB7OSCG8P760UId6UxMqq1KL8+KLSnNTiQ4ymwLCbyCwlmpwP TLB5JfGGZgamhiZmlgamlmbGSuK8ngUdiUIC6YklqdmpqQWpRTB9TBycUg1Ms/0M119k/TJ9 zdIfJqtjdH/5pR6aKrRiw5MNvmvkHffs74/1dLcydjJaUtp79wfLr2/+AY3Jol3HKyND9e/M yhNVajz+Yd+U7jPO+yIEp80rVrROXHrlpcibgJJgtjgVs0KFqpNbp8iwbj12qjTn2/OTSzVm RMpcOhz+qMlU/4zsi9ITy48+f5Rb+MpYML3rYVqWgUXM5Es6Sy8nzVi+9NHK7Dzj9gU1y26e XXmp/txNwazpFb5B1xbuUmL+9uhPrPmlh1eS3MtVdQMOf2BcdstoGnta6pQ0pn971l/Ksq7n bN37deFL1v/Ks5ZM77A7mH3u14oZkw9c5Pxy/K5u9pu4WuOmahtL7cAS5/nCakosxRmJhlrM RcWJAAbJdML4AwAA X-CMS-MailID: 20230816114444eucas1p10af08143378ae52fcc3694158265d7ab X-Msg-Generator: CA X-RootMTR: 20230815132509eucas1p1b34b2852a9c4efe743c8da82867c4cc3 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20230815132509eucas1p1b34b2852a9c4efe743c8da82867c4cc3 References: <20230808020917.2230692-1-fengwei.yin@intel.com> <20230808020917.2230692-4-fengwei.yin@intel.com> <4jvrmdpyteny5vaqmcrctzrovap2oy2zuukybbhfqyqbbb5xmy@ufgxufss2ngw> <2bfa1931-1fc6-5d6f-cba1-c7a9eb8a279a@intel.com> X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A9D7C4001F X-Stat-Signature: xc9zctrmygw3hc1f7ptp6qmnrb84yygh X-HE-Tag: 1692186288-76133 X-HE-Meta: U2FsdGVkX1/bOZZvWDKAZ3ubOpWAEWjOadNIA5aGOrwwpzPPMEtw/81GgnDmqjJwUrAnTwT39yZeQj0d9MGqAgm+scy4hY9KUWfLJJGmJ4DyavfO5vrlFmIiY3+yJE349032ZRwlHqP486qLSr/zfIzaX4EcvmtkJ7+udpnRL3wj4lJZI6+utB3WBadfpvS3U9a9wLAzMfkDkKEN9Oj/Iz+MFlqy4jKNWa0ECfj6eChDqChL0kt+T7tsLEZitkBviuIRUM5hM1vX/ZyEiD4GrQ8zoMeAaAjQkaFaEFlWrWSG2DKPHQSTUYmrVNKZELfkL/SCILUeLiSDrpi0AjC283bKGL1H1MSuu66ayOWboKd4NUeI0SGBX/CH6+JKNCD/wDaq5saykoGXAIb7yx3LADWO+4Op21lRVYPYM4kjxKsjia1ORZj4YHgkAIAqS3XXZHbKFrHC8xFhQv8QRvie1V2cKxAXKkm4u2AnOb5IPyRw6CgkwxQ7OERDQPV/nmqk2n9468vGlxo2whDQjvFBvloDMGod35PVksAxD6bdafiwT0m9IbppoPah3h3m2l5qAk/n+57Tt900UOfTSOcVq6twqeg/cRjDAq35jPZpzUPniH5Es5Sk/ssWwgXewYY7sQkO4ZW4kuZd2uJjS6Kjndfn09DmE4Bc+BUW+76SbWQUlMYppe6XU2505E/1l4KFPArxsiTcej1nBwziV8joBkAtN7Q+/rr9uisMGt0ool41UooIsO+a1cZzeZccVeEziQpYnqdpJWIGRpEx8YAqn4kKzUCnXaojeGyY48C/WYvhuiCf0L5GNecFT3dy6PmOQOjqMaYiM584eatc6NTmDE81OOS/Xg2YfnDa22th/L+eWEN6HdBqu8loGdCg3gsnvt3nN5d/tD6nuDVa+a8Gg3BZIiysEg1ntUdffabjzBm+CARdqoxLoQm8aQdpZo/1+SDancW15ERKJGM1KuT kiiWYGQX 3sz9GAGRgJehwkEredIEkIyPVCZHD8S8qh2hnNw0YFUk/8y8fBGjZdZWh2ihihqWvuLFBR2Mmu6i2EvrOyKf0Od3Cmfe3BNM03aR+d6Xl5SF3Oqov2C7iq7g2pp1uV/HF9F73Y1Brith8wKttAPbZb2278IdkNKgjrebDKN49tr13aKOnnS0kGjhUyGvaRq8z533k1sgZk96pKZStZlO+f9Q/LGGePsxWGJm6gaHQ5D4gHapt7ppUDPMGf1AMRlzOlURWb5mKYD5dNA30cdExrRow7w== 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 Wed, Aug 16, 2023 at 07:30:35AM +0800, Yin Fengwei wrote: > > > On 8/15/23 21:25, Daniel Gomez wrote: > > Hi Yin, > > On Tue, Aug 08, 2023 at 10:09:17AM +0800, Yin Fengwei wrote: > >> Commit 98b211d6415f ("madvise: convert madvise_free_pte_range() to use= a > >> folio") replaced the page_mapcount() with folio_mapcount() to check > >> whether the folio is shared by other mapping. > >> > >> It's not correct for large folios. folio_mapcount() returns the total > >> mapcount of large folio which is not suitable to detect whether the fo= lio > >> is shared. > >> > >> Use folio_estimated_sharers() which returns a estimated number of shar= es. > >> That means it's not 100% correct. It should be OK for madvise case her= e. > > > > I'm trying to understand why it should be ok for madvise this change, s= o > > I hope it's okay to ask you few questions. > > > > folio_mapcount() calculates the total maps for all the subpages of a > > folio. However, the folio_estimated_sharers does it only for the first > > subpage making it not true for large folios. Then, wouldn't this change > > drop support for large folios? > I saw David explained this very well in another mail. > > > > > Seems like folio_entire_mapcount() is not accurate either because of it > > does not inclue PTE-mapped sub-pages which I think we need here. Hence, > > the folio_mapcount(). Could this be something missing in the test side? > > > > I tried to replicate the setup with CONFIG_TRANSPARENT_HUGEPAGE but > > seems like I'm not able to do it: > > > > ./cow > > # [INFO] detected THP size: 2048 KiB > > # [INFO] detected hugetlb size: 2048 KiB > > # [INFO] detected hugetlb size: 1048576 KiB > > # [INFO] huge zeropage is enabled > > TAP version 13 > > 1..166 > > # [INFO] Anonymous memory tests in private mappings > > # [RUN] Basic COW after fork() ... with base page > > not ok 1 MADV_NOHUGEPAGE failed > > # [RUN] Basic COW after fork() ... with swapped out base page > > not ok 2 MADV_NOHUGEPAGE failed > > # [RUN] Basic COW after fork() ... with THP > > not ok 3 MADV_HUGEPAGE failed > > # [RUN] Basic COW after fork() ... with swapped-out THP > > not ok 4 MADV_HUGEPAGE failed > > # [RUN] Basic COW after fork() ... with PTE-mapped THP > > not ok 5 MADV_HUGEPAGE failed > > # [RUN] Basic COW after fork() ... with swapped-out, PTE-mapped THP > > not ok 6 MADV_HUGEPAGE failed > > ... > Can you post the MADV_PAGEOUT and PTE-mapped THP related testing result? > And I suppose swap need be enabled also for the testing. You may find a dump of the logs in the link below with system information. = Let me know if you find something wrong in my setup or if you need something else. Besides CONFIG_TRANSPARENT_HUGEPAGE, CONFIG_SWAP is also enabled in the ker= nel. https://gitlab.com/-/snippets/2584135 Also, strace reports ENOSYS for MADV_*: madvise(0x7f2912465000, 4096, MADV_NOHUGEPAGE) =3D -1 ENOSYS (Function not = implemented) madvise(0x7f2912000000, 2097152, MADV_HUGEPAGE) =3D -1 ENOSYS (Function not= implemented) > > > Regards > Yin, Fengwei > > > > > > > Daniel > >> > >> User-visible effects is that the THP is skipped when user call madvise= . > >> But the correct behavior is THP should be split and processed then. > >> > >> NOTE: this change is a temporary fix to reduce the user-visible effect= s > >> before the long term fix from David is ready. > >> > >> Fixes: 98b211d6415f ("madvise: convert madvise_free_pte_range() to use= a folio") > >> Cc: stable@vger.kernel.org > >> Signed-off-by: Yin Fengwei > >> Reviewed-by: Yu Zhao > >> Reviewed-by: Ryan Roberts > >> --- > >> mm/madvise.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/mm/madvise.c b/mm/madvise.c > >> index 49af35e2d99a..4dded5d27e7e 100644 > >> --- a/mm/madvise.c > >> +++ b/mm/madvise.c > >> @@ -683,7 +683,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsi= gned long addr, > >> if (folio_test_large(folio)) { > >> int err; > >> > >> - if (folio_mapcount(folio) !=3D 1) > >> + if (folio_estimated_sharers(folio) !=3D 1) > >> break; > >> if (!folio_trylock(folio)) > >> break; > >> -- > >> 2.39.2 > >>=