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 49A8FC77B7C for ; Wed, 2 Jul 2025 20:14:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D83916B007B; Wed, 2 Jul 2025 16:14:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D357A6B00A5; Wed, 2 Jul 2025 16:14:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C23DA8D0001; Wed, 2 Jul 2025 16:14:12 -0400 (EDT) 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 AE6686B007B for ; Wed, 2 Jul 2025 16:14:12 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7C0781D724C for ; Wed, 2 Jul 2025 20:14:12 +0000 (UTC) X-FDA: 83620426344.10.C8CE198 Received: from mail-yw1-f177.google.com (mail-yw1-f177.google.com [209.85.128.177]) by imf11.hostedemail.com (Postfix) with ESMTP id 85A3A40004 for ; Wed, 2 Jul 2025 20:14:10 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nelZ9jNg; spf=pass (imf11.hostedemail.com: domain of bijan311@gmail.com designates 209.85.128.177 as permitted sender) smtp.mailfrom=bijan311@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751487250; 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:dkim-signature; bh=pvXOgWEj8gwTOX4Hs4by3xf7fHgpjkffGomgqbs6dfI=; b=1X8Ag4dN1Yv778XQdjNCSa7JYDMMakYg3wwuaTTmlJhCIRjt5OpLMCD/ncFoFuEHQDZp98 YUkrdTjCd49n0vfQk23wzAe4mquqPqdeMK/3rcsLgb/2L2r7soajXikbcyr6rXWoc1PeNR ILx1aMut0h5RMGQHB39Ne+RZ3fOZYs8= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nelZ9jNg; spf=pass (imf11.hostedemail.com: domain of bijan311@gmail.com designates 209.85.128.177 as permitted sender) smtp.mailfrom=bijan311@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751487250; a=rsa-sha256; cv=none; b=0Xws7chfZQeBzfmFAM8kzU/8uHx0qvnP3+VsYBzjeqSI3xow5iBFH6rqWSdVjju4h8SHsL gv3927PDA5GL3/tOTORztinMg0YVVKrX7vXsKmwxGQ4tpc0IKgbnozizrVj2JVR+zPX2E/ x9c+dQmfStSPkUolYurKz3DCW3eUBtI= Received: by mail-yw1-f177.google.com with SMTP id 00721157ae682-710e344bbf9so49855957b3.2 for ; Wed, 02 Jul 2025 13:14:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751487249; x=1752092049; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pvXOgWEj8gwTOX4Hs4by3xf7fHgpjkffGomgqbs6dfI=; b=nelZ9jNgxrzRzVmaaqr9ZNEQvJ6vTbpp/+OaRl1ftPjJRDVA+c+ptwTC5jc6ux7Ggv sMQpsVx+eyFQuriUr6TmDq/zDzJ2ceT1e0UUTx3Ap4J2FEy/jbQBvdhjBJkuX6YmJU5A vF1/tBR4qV3fZRIBE6a0nmy8xWi25UnQnNYR5TosMXSmkr8ILm+NI3uTtNDHWesqCtdY l4Snn6wcKpXOIaZlkXNSDm1d0ppx1s6aHx0+lPB1e4S+8TVhsZyj1/4ebvOM6O2FUF8C 7M++4jtHPjP3SqRdsAcLwbBU+ZBipSx/NzbygEeUANFUnTOUXtWi4VPy/28e8x+TsiC6 M0UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751487249; x=1752092049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pvXOgWEj8gwTOX4Hs4by3xf7fHgpjkffGomgqbs6dfI=; b=v2t57X7tLV9GW4wwXBNssI8uwbbsWVLwlIyRHFL28A68ZewRF5KJnxRpyzmjAgYL4p uNUL+ovZ+MI84NQthz28phxt9ZtiZ2DRj74eI+YpV37Mu0ynaC1CWp51+3g0lYJbXRk3 xVyMT9VTdtyePkLEUMXqu8l/pTzYSC8Vy/J9AhOPs4KataQwactjpU8WTVRWF7n8MrVY ad3KLtfTmoaVlxXlDCUvOhwbqMgU/GYkZsCARS4nBuA719ia6diHJ5oMjH9NOelbWsgm ac3JnXD1vZ6q6AoxcKSVQpMf/IJdoAquLXnPiQXtc2TqCgfnUt2Rnda8MinrECFQGl27 jT4g== X-Forwarded-Encrypted: i=1; AJvYcCVDcZYmsSb4EBAjf04jh8D45yEegBuS4UAprCrcq2nPU36TEzxoCuHOaN8R2GSSxAzhckzJuct6ug==@kvack.org X-Gm-Message-State: AOJu0Yzp21ZGU9YjozR39YkL52yNXAmB0Qcq7pgy+VJ+47g7z7ba2U3Y uyVuB42uEdxdLJNGTuubofLbhhgsiIfok0sUw9EODNPGSU8Vri5L5WL6 X-Gm-Gg: ASbGnctB9zDpcEXL0djpg93IwhQnbux3dLeukVyH7PhOOhbk2svkeF8+xVGRO7yQ2TO uP653thJgiP+U7ViNDyDo7pM4ZfR4Q67tg7g75OFWr/VX5idotb3t9IpUb4GhrtP3B/uGniaxaU FYbKLAp7wput+H6rlo8BvbgYdCPXxn8MJueVjqdEauX83FDDio+3OBMxsDQ39sRLQmfH28gXGIS WRo801okPhKsgpEi1z7N4q11aTmIe5gd91Nb6yGHDXrPQW7w/yWxVXUXmcnE/Mz9Aw/nW7TL3fe IYQSxDVl3chVcRPoq1QqvU5b9wiwPKoONLHIPmNoZc8UNoxUAWXznPIEZiP+ulQ9o8gVZ1kY+hG yGAq0isc= X-Google-Smtp-Source: AGHT+IEMpagG6TfDMWsd4PaHLbt64WDw3wuuBzpUTGHseeLoF3CNFN3ySWAagT01W26Pujp1VTRWLQ== X-Received: by 2002:a05:690c:7092:b0:709:1529:c24f with SMTP id 00721157ae682-7164d26dba4mr55420177b3.4.1751487249337; Wed, 02 Jul 2025 13:14:09 -0700 (PDT) Received: from bijan-laptop.attlocal.net ([2600:1700:680e:c000:873e:8f35:7cd8:3fe3]) by smtp.gmail.com with ESMTPSA id 00721157ae682-71515cb4347sm26124157b3.83.2025.07.02.13.14.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Jul 2025 13:14:08 -0700 (PDT) From: Bijan Tabatabai To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, joshua.hahnjy@gmail.com, bijantabatab@micron.com, venkataravis@micron.com, emirakhur@micron.com, ajayjoshi@micron.com, vtavarespetr@micron.com Subject: [RFC PATCH v3 02/13] mm/damon/core: add damos->migrate_dests field Date: Wed, 2 Jul 2025 15:13:25 -0500 Message-ID: <20250702201337.5780-3-bijan311@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250702201337.5780-1-bijan311@gmail.com> References: <20250702201337.5780-1-bijan311@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 85A3A40004 X-Stat-Signature: soj5q3zf6boz35h8jybwe1oconpgc7xx X-HE-Tag: 1751487250-956203 X-HE-Meta: U2FsdGVkX18U+ZmM5oQFm7GI63PjV26xnTSpHbd5AgmvK0yi74w/MIOnlKL+2BvTT0xjqZVi+++w4gW4Ax0BgKcHvGctCFUOSvCtPSAtmD8V3V1rtysYU410KH4seqswIJix5/B4k7Cvvhqd05isx3Bbk3/P8fTDPz++/o8Jcy2mUka50t7e5Od+4qA54edspOvVGMxFwYsUkQuBfs1cvaboRYrGnNLfGg9x0Hz+vGkLs3/EcFSHUzGEn15/ODJB5OiOiCgFzOlfQrYDMsA6k/F9ZT54oTw732DtJXT1q04KrU0DD0wmjFNnwYmgOBNPY1DOIqWUjtGXiAHZC77oA8LPxQh04Gxy+ZoJUMbreoOlsXHT4YiyrKdFqDt9Gn08k6BUB//4HDTNUJQnRkWECashePkKsYIcvGzI8YSsx/0MDh95pqqHBVojvSYilYNKXUL4Dh9zePHNX/IF7I1SqbpOPUhqcwPRLnPz94gqMGQwKOAUFV/nHA+fA4ntR+KTaQg2TtsBwKZl6xPTgiAMq8v7bEkofUwfDnpOUOH4LGmHe9fCkVrfGAwVqVLYSGVUMSoMoYNgphla7oMzqphoflKhdagAE+BxxOBtf/rOQuWws3DQWfn/1l3UNxwDfjpXbCzHVWyrbm8NV55WGH2mK/O22xJ81V3XMsfJRGVV8t+kQsl2Wfk13PJFBZLrGPXajQxxfnXEze0H6ritdE72TZH4z2Tuh8SskAEF8IAcpLGc84KNv/6Hx5YbxOivSqt/kMAuXdSi19R2lYGsoRiPQt7NQHUVqxB7DM9vd0H6tIY0EU0mp8yxiiDlRdzW6GYnw3SFuWONx99MyQhw8mrEK4HBX8vqHdBH5vKWAv33hg4R5DhAWL3ns9CrmI8G0BwdNNsfY0gG3HMahnZ1EH9YS7VcMVEDhvxd8f+4S2OsavQVs0OyFUYz2AReRXUQEZp9hzdF4VEBgltjpQveqrJ 9u3ogMpC 7iyIrNYBNbnFcYZSfAaqMepzHT812kM9cU/MtVVJapeRS/DqVxGhwkHsMvAz0Als70NaH8zvDK7ef3t1zUqVMCQ5u+gtqUL8ErIy7ScUSSHnD2vOSBsBfT8wnYBa6eprZkhTuhl4QmNUSLTkguqipewdOjtfwjdvMljl5kaYQEUrXzMQmZBL+fpC0Mapys1/G8WFLF79DfKeyBTb9bMhNA+2+35QsFe3PRCKyCP02gcSa6981oiHsJLIklsWEsqd9IrVio9KmRRF2DkNk/oTe5LGTLT4SzJvhw7BwuCYapSF2ELQ8pbJfwTuRha6Y1OH5cjVXgbtz0EK5bgQZXHz4L9lf2xpihDVHQasPKsF437lAeFtMTYczQbC7EF6I6vplHX0P7w2BwaB/zUJGhwngAbtmh6oAUoOpUU8TN/8yFE13dnx6W1yL2/gCDfPuj1LSt0zCqT0EO6bPpUhOqmk0G9YvGPSkopiYxbEY3mrLlxAEg5LPFc7MwpQinDo1K3KTZ/pTzebHL0CDsnGz5NLcO3yz/eMN1EMvEAOSADwm8+kj5SI5e1tfug2AvVgE6IccReL+8VfG5cqseXQXOtPNks6KJ1HeHMjD/DmvC6fxd9T018Rrar/C7FVEdpS+bRoQBYde6UrTeJW6vIx2Uoug3rmFGfdXJLvPtTK2 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: From: SeongJae Park Add a new field to 'struct damos', namely migrate_dests, to allow DAMON API callers specify multiple migration destination nodes and their weights. Also update 'struct damos' creation and destruction functions accordingly to initialize the new field and free up the API caller-allocated buffers on those, respectively. Signed-off-by: SeongJae Park Signed-off-by: Bijan Tabatabai --- include/linux/damon.h | 13 ++++++++++--- mm/damon/core.c | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 24d387a972dd..6f0b0806236d 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -470,6 +470,7 @@ struct damos_migrate_dests { * @apply_interval_us: The time between applying the @action. * @quota: Control the aggressiveness of this scheme. * @wmarks: Watermarks for automated (in)activation of this scheme. + * @migrate_dests: Destination nodes if @action is "migrate_{hot,cold}". * @target_nid: Destination node if @action is "migrate_{hot,cold}". * @filters: Additional set of &struct damos_filter for &action. * @ops_filters: ops layer handling &struct damos_filter objects list. @@ -488,9 +489,12 @@ struct damos_migrate_dests { * monitoring context are inactive, DAMON stops monitoring either, and just * repeatedly checks the watermarks. * + * @migrate_dests specifies multiple migration target nodes with different + * weights for migrate_hot or migrate_cold actions. @target_nid is ignored if + * this is set. + * * @target_nid is used to set the migration target node for migrate_hot or - * migrate_cold actions, which means it's only meaningful when @action is either - * "migrate_hot" or "migrate_cold". + * migrate_cold actions, and @migrate_dests is unset. * * Before applying the &action to a memory region, &struct damon_operations * implementation could check pages of the region and skip &action to respect @@ -533,7 +537,10 @@ struct damos { struct damos_quota quota; struct damos_watermarks wmarks; union { - int target_nid; + struct { + int target_nid; + struct damos_migrate_dests migrate_dests; + }; }; struct list_head filters; struct list_head ops_filters; diff --git a/mm/damon/core.c b/mm/damon/core.c index bc2e58c1222d..a4c3cfe531df 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -407,6 +407,7 @@ struct damos *damon_new_scheme(struct damos_access_pattern *pattern, scheme->wmarks = *wmarks; scheme->wmarks.activated = true; + scheme->migrate_dests = (struct damos_migrate_dests){}; scheme->target_nid = target_nid; return scheme; @@ -449,6 +450,9 @@ void damon_destroy_scheme(struct damos *s) damos_for_each_filter_safe(f, next, s) damos_destroy_filter(f); + + kfree(s->migrate_dests.node_id_arr); + kfree(s->migrate_dests.weight_arr); damon_del_scheme(s); damon_free_scheme(s); } -- 2.43.5