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 19DB4C54E76 for ; Sun, 19 Nov 2023 16:58:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9B5356B02F5; Sun, 19 Nov 2023 11:58:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9654E6B0340; Sun, 19 Nov 2023 11:58:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7DF286B0342; Sun, 19 Nov 2023 11:58:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6D3246B02F5 for ; Sun, 19 Nov 2023 11:58:03 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 42E71B5488 for ; Sun, 19 Nov 2023 16:58:03 +0000 (UTC) X-FDA: 81475311246.24.CE4BB65 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf23.hostedemail.com (Postfix) with ESMTP id 942FD14000E for ; Sun, 19 Nov 2023 16:58:01 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of alexandru.elisei@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=alexandru.elisei@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700413081; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+1rAM19kbPSmYc48M7CprvlSzWhYTshcutfqz8bVKhU=; b=VaEHLLr/V7m6ubVdJbFzTimrM2cA+kzV7nvU2Y1huQPWJEWLWQRwemHVO8zs2w60GvC0uX 0StgOVHyHL+P1t+yEcEwX5o7FnC8xNdMBQrftcs9Di4DM9NP05yQxnOwsP7NWyuJAHKekZ bYGuS2Ot7jn28xHVKWb/41UhVRlBNFs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700413081; a=rsa-sha256; cv=none; b=l/ePjjB86Q96yks+7yCUTVY2L5EFx81RYHgEm8MwvcujOnQMM6ydemh3T67buTfKlPPR4j UQ5hIYvxfNdzct3pbeEpQO/rSnN4HHZao7lf7mUj6JeBKEahBGM9WOUB5IOuGr4+HQy+it GE0HJsdMP3QIjcx4UZBgHCIeBgxeDcc= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of alexandru.elisei@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=alexandru.elisei@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CD2BD1007; Sun, 19 Nov 2023 08:58:46 -0800 (PST) Received: from e121798.cable.virginm.net (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9ACFC3F6C4; Sun, 19 Nov 2023 08:57:55 -0800 (PST) From: Alexandru Elisei To: catalin.marinas@arm.com, will@kernel.org, oliver.upton@linux.dev, maz@kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, arnd@arndb.de, akpm@linux-foundation.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, mhiramat@kernel.org, rppt@kernel.org, hughd@google.com Cc: pcc@google.com, steven.price@arm.com, anshuman.khandual@arm.com, vincenzo.frascino@arm.com, david@redhat.com, eugenis@google.com, kcc@google.com, hyesoo.yu@samsung.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH RFC v2 04/27] mm: migrate/mempolicy: Add hook to modify migration target gfp Date: Sun, 19 Nov 2023 16:56:58 +0000 Message-Id: <20231119165721.9849-5-alexandru.elisei@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231119165721.9849-1-alexandru.elisei@arm.com> References: <20231119165721.9849-1-alexandru.elisei@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: eoj1z4n8xfxbrjqtcz6wmxkbsa3itezm X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 942FD14000E X-Rspam-User: X-HE-Tag: 1700413081-977175 X-HE-Meta: U2FsdGVkX19/hydaP5K2CoMGj+M+4yK5JktgmAzmaZUZAzOa6dCI+jT7k39l4QKN/6iatkdz8imTFH7V9LV8dU4tQ5OEf4o1JDLd1piAJ9lf89EjGexEZfFqbPo8NUn0hqDwItqf8A35lNjsjwuHmHJq/yp7an0ABjBcbt0v7J1luLlkElR+bVJdLd/FfAg0cwty705GhqoEP5Jhg5PmPTx5NbJCQb2EusFwXETXGIoYypXw8nNI1EiJ1cWkUSAYnJQ9YphhlBWqLIzP4AtcYzNbfA5G/NJYsxDDOKt+3opLDnGAYfAVG4BH20BMGeYuLD/y4ZYaAGrXrndZNJ25abrr0+aPCw7OeBZSaKkNnngwwsbAvFm3rgyjAcTa4dnrmxRuzljdqFWUAbF85MCMLLGezv/fzBp04VsIVZHTxov2R4F9mzuZL7G32l2HrNBQBFSA3cbuEIH3fraqHYICJBlwinSEzU8a12PU9cNyo3Wfzsj1JCMEP3pp9nrmdQ308YMCAeGm4wb8EU3jKkeBJiDRnKc/MpSMkxlxiFsf3PupycCd5uGEYpM0umbmAoBa9sYRPIVQ5rCDklR93jCv4woicokXlO2hiS3afLsp5kJaHf4Zi8b+kHJ/kOGZ0k2NN9wkjR9U9ip3GyjFFwDaDD+g0ALTmo1PCyLifXm38JNsjB+N8FvRIv8BS3klMzXmuRUGxZ+B5ldRo1zYO5p2JB2NnIhj5rMoUj87EmdTA8TOLqeuBdr6mes3dgV71GmxBsb6aQi6c8ySBXFEOVOa3HtOoqTzmaGZmDqK7QklFpfZYlkg8DWRDLTHpo9y4OgJf6S6XRz+ltrtoxwAzzZA394jKv8pbnrKQ6LMpEojZxV/AvMysZBlSed5wuSO9cdV4kWHnJkeKJriK5IPd2E1mLrHkaEh2sUk8ZxrD0G8gjU8i/LThUHjOxMGnCuRbpNTatbIOPqTg03WNudZZ2m wPEW21Gu gDfO8F+B9zXMJ5auIYbWcVZahXSu1ZDZHWoNF/P+/DiSXMhT+mBhDmxPuOAcXTMGGUOQ8DTtTsLqa/kXagnqLpcP3I1egwoB4XPQH92hSWN6IUCpNZAUQkOK0yg8Jn7CHtgEumjwezYURR/8ABehpBjbFypsSuSd6GYG4 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: It might be desirable for an architecture to modify the gfp flags used to allocate the destination page for migration based on the page that it is being replaced. For example, if an architectures has metadata associated with a page (like arm64, when the memory tagging extension is implemented), it can request that the destination page similarly has storage for tags already allocated. No functional change. Signed-off-by: Alexandru Elisei --- include/linux/migrate.h | 4 ++++ mm/mempolicy.c | 2 ++ mm/migrate.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/include/linux/migrate.h b/include/linux/migrate.h index 2ce13e8a309b..0acef592043c 100644 --- a/include/linux/migrate.h +++ b/include/linux/migrate.h @@ -60,6 +60,10 @@ struct movable_operations { /* Defined in mm/debug.c: */ extern const char *migrate_reason_names[MR_TYPES]; +#ifndef arch_migration_target_gfp +#define arch_migration_target_gfp(src, gfp) 0 +#endif + #ifdef CONFIG_MIGRATION void putback_movable_pages(struct list_head *l); diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 10a590ee1c89..50bc43ab50d6 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1182,6 +1182,7 @@ static struct folio *alloc_migration_target_by_mpol(struct folio *src, h = folio_hstate(src); gfp = htlb_alloc_mask(h); + gfp |= arch_migration_target_gfp(src, gfp); nodemask = policy_nodemask(gfp, pol, ilx, &nid); return alloc_hugetlb_folio_nodemask(h, nid, nodemask, gfp); } @@ -1190,6 +1191,7 @@ static struct folio *alloc_migration_target_by_mpol(struct folio *src, gfp = GFP_TRANSHUGE; else gfp = GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL | __GFP_COMP; + gfp |= arch_migration_target_gfp(src, gfp); page = alloc_pages_mpol(gfp, order, pol, ilx, nid); return page_rmappable_folio(page); diff --git a/mm/migrate.c b/mm/migrate.c index 35a88334bb3c..dd25ab69e3de 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2016,6 +2016,7 @@ struct folio *alloc_migration_target(struct folio *src, unsigned long private) struct hstate *h = folio_hstate(src); gfp_mask = htlb_modify_alloc_mask(h, gfp_mask); + gfp_mask |= arch_migration_target_gfp(src, gfp); return alloc_hugetlb_folio_nodemask(h, nid, mtc->nmask, gfp_mask); } @@ -2032,6 +2033,7 @@ struct folio *alloc_migration_target(struct folio *src, unsigned long private) zidx = zone_idx(folio_zone(src)); if (is_highmem_idx(zidx) || zidx == ZONE_MOVABLE) gfp_mask |= __GFP_HIGHMEM; + gfp_mask |= arch_migration_target_gfp(src, gfp); return __folio_alloc(gfp_mask, order, nid, mtc->nmask); } @@ -2500,6 +2502,7 @@ static struct folio *alloc_misplaced_dst_folio(struct folio *src, __GFP_NOWARN; gfp &= ~__GFP_RECLAIM; } + gfp |= arch_migration_target_gfp(src, gfp); return __folio_alloc_node(gfp, order, nid); } -- 2.42.1