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 81CDEC47DD9 for ; Wed, 27 Mar 2024 12:23:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12B516B0096; Wed, 27 Mar 2024 08:23:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0B5156B009B; Wed, 27 Mar 2024 08:23:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E98E66B009C; Wed, 27 Mar 2024 08:23:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id CA23B6B009A for ; Wed, 27 Mar 2024 08:23:22 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9032FC0CCA for ; Wed, 27 Mar 2024 12:23:22 +0000 (UTC) X-FDA: 81942734244.16.0BB7C16 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf04.hostedemail.com (Postfix) with ESMTP id D76D140014 for ; Wed, 27 Mar 2024 12:23:20 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf04.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711542200; 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; bh=Yx8IjaFCPBMg6rceIVwh9/KVMyFs7hfiBZ+WKeil4aA=; b=JldeoL46cwUpHm4wN4jo84LNV7FPZTbJraceovul18QYsNg/SBcfHrEY/2oNCa/Bivz/gn SXUKUSurwqZOlMYmfW8h+wrTwt38t/K6PI/S0ovRNnuL4vbJr6qVF8XSE8w820MbviKr0I UR/AGJF1C+uiEayV78KWi4BbFnVvOuY= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf04.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711542201; a=rsa-sha256; cv=none; b=lUN3VjLdhAZpyF6xluZbNH+V+M335/qnxR0ygosC5ra1ZNnG0ARI8nKMIf0B27ZbQscXQk /91QmYgjVOYSkoI0b9yTE5nv6vmj59cDvRjq/SJjr4oqPcj7Ko7hD84o7lL2+OBQP+u883 sW99092c3zQVoERTC0Zz2cgoLn1ae6c= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 0CFE461506; Wed, 27 Mar 2024 12:23:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3663BC433C7; Wed, 27 Mar 2024 12:23:15 +0000 (UTC) Date: Wed, 27 Mar 2024 12:23:12 +0000 From: Catalin Marinas To: Barry Song <21cnbao@gmail.com> Cc: will@kernel.org, akpm@linux-foundation.org, hughd@google.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, chrisl@kernel.org, mark.rutland@arm.com, ryan.roberts@arm.com, steven.price@arm.com, david@redhat.com, willy@infradead.org, Barry Song , Kemeng Shi , Anshuman Khandual , Peter Collingbourne , Yosry Ahmed , Peter Xu , Lorenzo Stoakes , "Mike Rapoport (IBM)" , "Aneesh Kumar K.V" , Rick Edgecombe Subject: Re: [PATCH 1/1] arm64: mm: swap: support THP_SWAP on hardware with MTE Message-ID: References: <20240322114136.61386-1-21cnbao@gmail.com> <20240322114136.61386-2-21cnbao@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240322114136.61386-2-21cnbao@gmail.com> X-Rspamd-Queue-Id: D76D140014 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: jydkdtdr543arm5di6mgo8p4wb8e631h X-HE-Tag: 1711542200-359374 X-HE-Meta: U2FsdGVkX1/oU0dj58dmc+1V58bh92AKAFmqRbTyHLMJGMWsY253QJdD2GwO1kd1M22USCnkJjWo+OT/3loAHnSdWzKTZ4lUKVQXczEn27mIhrKIUOsYWxGaUXS4TdcFdIvezvZ7705XK3Lp3LK+Sc+fCXYc1u3FJuYI0FjbV3axviPDfuRXejcFd+Y/YXJ/2cxF+DH3yegdK+sKTZjsfILxkjmkcJCJJw75GhhvshO5ajxgee1w+uim5VL1q0nI61Jii1Ufoi8mt+hE8To+1P7L4pAFAYR9/GjvqTC+YtKtfcpkAbsFv3EOR155ScipQKqsxVV3qQ+Hu8eQJT9j8MJr2WwaIpXzfom9Ifgu+P5rs5mIWDjtyDRCOEMtSi4UHa9VpF6t8t4zg3l/XSgu1B2qeM3UMZdMB4TuJywMBd8wfSbouSUoYLU9K6ffeUE9WFuqLQXEdwqBw8hyX1fA0i9H4E7nweXF27eNXKnR1ewvX4wsY0+c6nkb6WOhjDgNUfpVobdEUWX4t+qG/KrYhF0yQ1CGxP+mQfxKoR9m0UZHCo6j3uH9aCmgt/rchvLmaRAOMNf5gj2FoBNWVHSQZONb9AzN2ybCkKQ9SqYb3Ifwl+9QxH7ZvAU2hqTHOGz/nLLcegAbP6MIh6feYc/vnE+sTT1hoLPO5HcP+wKwNl/sP1acY4NC5kwJRjuHxuRYw5BMlCUhBPQYM2YuOznCSjC+8QYXpdrBa+yxtoC2ahXV3iYFOaLRblVv9P190e+1yy72omrtmVQBwmqakNGskRFGSW7YsVXsv/S7Keu42IHoqgp2V3H+F25ZUCqngHe0ROkuRqMv1+75SyHxCv31t3n+OrBBQTKLuhaqVanyscVQC6YAlyVnl46EL3/bmsn+pmYuPuNRcMbCoSX5UsmFq4POAccx7T2JHK1o3ekA/Lg0Dx6lVZ2Qyb/PwdyPkIDkhHyHCiTZ6Wmt1dyUpi/ szdlbHN3 wbw9py1xl0TFl7z9Qn1KnV+5F5iiMCn5I1+yNPDYX/ZkmyIVwm1rtnQf0L41CSwL4/lvX6EpjX4hjqzX+H+3VWUF6lLM0EXjbcVdOx2E9iA4XPuXfaDbjzXdtZsRkVgPleG27/K0KT4XQ1A75sBsYIiudEkm5aCraTiwSFMXJbhfPO0RKIhY3pCPqmv2goBochzlkWRtRADEHCdvdE8l/8y5tT6UueRYgppmpgz3u7bmiYcicPzUhr2095vCIZbRSx7xiuQofNyE/vaP6o2NlEPXy/unXTf/vDCq0YJgS/yQe/mAZqGbftSsITrPKyrXP/E9a8K0cPN+0Xpr2opekTW6w6t0h0FARalknieu4o7LRDcbY72gaiwgK5WlJFG4tHA7whKHQxq6rS9DISDo/ycH3h9unsK6np3ax15GOBIQHL2ZjYVeO2ysvpVMsNQVqfw5zLdN2/jEYJj4EgtIzDntRA+M1joE2Wj1680BqFTrybnHmLbAHQdgi3PRu0U+Oar7hl9PS/iHty67KLKYvDgM9maGM0dSdsc+yb8Tbqo01s85kEsWBWUV9ql+gOpsNElSVd2VMqoDNXrdp7DA/so0qUUJx6wCcXedMgtziNyHzGbecBBUjAPBoYgZ6CMAGffJQQ3CnbzoVB1AtdgXnrQatFm8s5nW23vItAORprXRf5KjApluonpfIUQCkZTMzC/+/j0JViBCg3W+JyBjK3nWlAtt6J5T5fM8oEg+Lyte5u81Ohlkvo237cfkl6WHKQtzHt8X+PKEFPek= 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 Sat, Mar 23, 2024 at 12:41:36AM +1300, Barry Song wrote: > From: Barry Song > > Commit d0637c505f8a1 ("arm64: enable THP_SWAP for arm64") brings up > THP_SWAP on ARM64, but it doesn't enable THP_SWP on hardware with > MTE as the MTE code works with the assumption tags save/restore is > always handling a folio with only one page. > > The limitation should be removed as more and more ARM64 SoCs have > this feature. Co-existence of MTE and THP_SWAP becomes more and > more important. > > This patch makes MTE tags saving support large folios, then we don't > need to split large folios into base pages for swapping out on ARM64 > SoCs with MTE any more. > > arch_prepare_to_swap() should take folio rather than page as parameter > because we support THP swap-out as a whole. It saves tags for all > pages in a large folio. > > As now we are restoring tags based-on folio, in arch_swap_restore(), > we may increase some extra loops and early-exitings while refaulting > a large folio which is still in swapcache in do_swap_page(). In case > a large folio has nr pages, do_swap_page() will only set the PTE of > the particular page which is causing the page fault. > Thus do_swap_page() runs nr times, and each time, arch_swap_restore() > will loop nr times for those subpages in the folio. So right now the > algorithmic complexity becomes O(nr^2). > > Once we support mapping large folios in do_swap_page(), extra loops > and early-exitings will decrease while not being completely removed > as a large folio might get partially tagged in corner cases such as, > 1. a large folio in swapcache can be partially unmapped, thus, MTE > tags for the unmapped pages will be invalidated; > 2. users might use mprotect() to set MTEs on a part of a large folio. > > arch_thp_swp_supported() is dropped since ARM64 MTE was the only one > who needed it. > > Cc: Catalin Marinas > Cc: Will Deacon > Cc: Ryan Roberts > Cc: Mark Rutland > Cc: David Hildenbrand > Cc: Kemeng Shi > Cc: "Matthew Wilcox (Oracle)" > Cc: Anshuman Khandual > Cc: Peter Collingbourne > Cc: Steven Price > Cc: Yosry Ahmed > Cc: Peter Xu > Cc: Lorenzo Stoakes > Cc: "Mike Rapoport (IBM)" > Cc: Hugh Dickins > CC: "Aneesh Kumar K.V" > Cc: Rick Edgecombe > Signed-off-by: Barry Song > Reviewed-by: Steven Price > Acked-by: Chris Li Acked-by: Catalin Marinas