From patchwork Mon Feb 3 22:55:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Usama Arif X-Patchwork-Id: 13958383 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 DD017C02193 for ; Mon, 3 Feb 2025 22:56:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4CAC56B0083; Mon, 3 Feb 2025 17:56:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 47A4C6B0085; Mon, 3 Feb 2025 17:56:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2A63C6B0088; Mon, 3 Feb 2025 17:56:19 -0500 (EST) 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 08F966B0083 for ; Mon, 3 Feb 2025 17:56:19 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id AC360140410 for ; Mon, 3 Feb 2025 22:56:18 +0000 (UTC) X-FDA: 83080143636.29.FC25791 Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) by imf05.hostedemail.com (Postfix) with ESMTP id CAF0C100007 for ; Mon, 3 Feb 2025 22:56:16 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nKIqIBPy; spf=pass (imf05.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=usamaarif642@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=1738623376; 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=41tMxJUWugj4muQLNlfvYZtegLPJnS/0DzPLe1FwwWo=; b=yXd+pGzCMvKP3Pg2k1/faVZ6i8mFkrOawSoQIMm6FSCINVQoT6RRzovJshsW+vkZ08Am+v eS60JcJ0KHgRUnWPf7h3QLq03mR7JKUN52XiIAMt25LXDv1MqxDtLqEY2KlR6hDpnLGQHO 0sM6ubaxSYqTQ8urrW3btRmpD0baV+k= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738623376; a=rsa-sha256; cv=none; b=jfhXZXYzYRtDQ/hcVaauijj4ikZBxUW7HNh/pVvyCuiq5kHaqSjKOpXx7p80wrZ3Y5cTQM XXHP7cxM0kSCVFyqb1ZnSfQOGwG+jU2hClQRwlYk5zf278aEcOnBIjC+ojgopHVlEKSukr HZtuJGfAS++nf79EADF8ylDDH4iEtWw= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nKIqIBPy; spf=pass (imf05.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-46b1d40abbdso43278311cf.2 for ; Mon, 03 Feb 2025 14:56:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738623376; x=1739228176; 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=41tMxJUWugj4muQLNlfvYZtegLPJnS/0DzPLe1FwwWo=; b=nKIqIBPyoOgtw/6RqtTTZ4iaO+wf37xsUURn8n/14/UdRPC6M491AiwhJTtLrO+NTE nzdLvQQv3KLMP83koBTnLRkOEF5qzLvkXXs+sp4ztwFKVikWdjaQNuPKwc0G5SSOpL9x APONvrMvtW5erVMUzGbAeZ6E0YtgLQKY9akKfudPPNoNRdyT4oKrm4+O5R85GuNoabhZ 1eU3Tx6P1Hi7jsnnxJTJVazrNFlKVzyQcTct9fmNjW33Yi/2ZDMmd3BIymg7kVCEewFZ sMvnjL23NARf0Y8F1lG4ZdWQZQFoM8hQMyee+bGMHdVI/d+ZhyPU4a1hiVhp5OqrZ1CY XnVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738623376; x=1739228176; 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=41tMxJUWugj4muQLNlfvYZtegLPJnS/0DzPLe1FwwWo=; b=jgqHhTDXsles6u7L/uu24HoHYxMdJ4OGt8l9y74R6yCyPV8SPEuQL5mFzggRLYtK4B gLihMkOG7VDVqg6hxpRQ+GJQVXz9WSntZIoRbaPdn029wh8U65cy0Q1zkYtCCaae8Mvh 1XRI8gAiBiiUEIHOSQRL/bnIesAvFHFMaBEgCnAHR8hTstNWdS4YiAPG5f6mdpOp35xS 9AJYP7pNHRjObNsMV8pu7ADBkVGr4WHbbmo7wK58+2q2O1uRGgnL34MpUw79WTZ3gNwV y9PuwzfeUd5ACncokiXbHBRdXv+OioSomA3MMMo4QuIABWAIC9R5po+j1KY3rHQ+6myn FGJQ== X-Forwarded-Encrypted: i=1; AJvYcCWQWp+lUPu1Qaq06KZLOvgM16Pfg0PNF8vdEeLNXTerAg+ptDJ+oSp+uC5Kz/lCY6ax9zvd5KfI0w==@kvack.org X-Gm-Message-State: AOJu0YzMl9lrfk0gpOm3OccmYk2gVrHFy/S+OO7UtqO5LJDRXp8TgNna FybACbiRQ6z38Ri5RrsInp57NUY8vMoygwZsFcjckRbC+eYw475u X-Gm-Gg: ASbGncuUXcthN40mGSC32vSyGke7/skfJziTrK2gPzI1DD1oIPjeFcnboWwyzqeXbMr OueKy7RhzXbBBleQvYwjVepDOX1t+Uqi869yD9VRlOTB1c8QrIvSutypFReC9jJdOgcea5Ou+NL 3tyf3Og9EFnvV2fdhs6G7XiRkcDgxWdxopKSS3eeidLGqLG+9HXpo8WiDI7QcN82XUKznMdsQj4 ywV6cF1FWMH+USL786BSGwqScYtBhZq7jLiaGeX8Wc55BmqyZjLeRqlcUm4FZ8kYUXqlfzz66tj VKW9Ru+Yxg== X-Google-Smtp-Source: AGHT+IHEyMAxtPn4mYYMqnCdQIZdRu7V7ahosAsbjAMTD4Ru1PKvmdma8lTgGBBBhUTzDhEWxaAU/A== X-Received: by 2002:a05:6214:3bca:b0:6d8:9ab7:adcc with SMTP id 6a1803df08f44-6e243c37f22mr385613186d6.22.1738623375949; Mon, 03 Feb 2025 14:56:15 -0800 (PST) Received: from localhost ([2a03:2880:20ff::]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6e42370f364sm538906d6.106.2025.02.03.14.56.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 14:56:15 -0800 (PST) From: Usama Arif To: sj@kernel.org, akpm@linux-foundation.org Cc: damon@lists.linux.dev, linux-mm@kvack.org, hannes@cmpxchg.org, david@redhat.com, kernel-team@meta.com, Usama Arif Subject: [PATCH v4 1/6] mm/damon: have damon_get_folio return folio even for tail pages Date: Mon, 3 Feb 2025 22:55:28 +0000 Message-ID: <20250203225604.44742-2-usamaarif642@gmail.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250203225604.44742-1-usamaarif642@gmail.com> References: <20250203225604.44742-1-usamaarif642@gmail.com> MIME-Version: 1.0 X-Stat-Signature: cuykbzhg4pbz5t1pbywa97rmc9guksdy X-Rspam-User: X-Rspamd-Queue-Id: CAF0C100007 X-Rspamd-Server: rspam03 X-HE-Tag: 1738623376-721100 X-HE-Meta: U2FsdGVkX1/yZhrpBWdFx0STOZfzKTdkMc3wlUSaSuBuSsv4CWNSRlzMbs6AyI5vPO9fL1a8bH31/rcdJ7BuyAA//c38savDodHbybXfFPMDXK8Yq8R4YSZTRe5SODT6pXSyHRGj3z7llbf2TMS2oEkeYBLur/K/Lc7d3cNaMkCgxNurWxTXBfukkpmBUI5r9nJW4d0Je0SRvP5N1+39ju6C/ik5UXA8i8/V6OiP2lKf/MVXJFEOqPbj8KOwv7hCbvZuIolh3d69ByCJ/TlOFVCoHFfg3RYQ5Q2s/MuMUODc+0G71W9j7ib3vIxfWYiS8W8VDZ/BxyE3I+41NvQ9I0x7hZw4kD20UKe+c0KFWoGb0oVbcRQ3ff1GHSQD3ZFtwdYjzUIsqPml/87ZtLVZipR6X0kdzzbxtjL/oUq9ZQst21W/ht1M2IhDnGIkAAGtOsUlt202EL0gpcUsMlzn3xiHcgnyrsQdj39l43a6noSUY1D8NyG23MA5RS4NUtOgkVQCJ9snVWl3DCqPpYvY3S3Yaxcm8EqxSklnfSFCyTcr4vnAEgA0KKjkbOrklAnNRXiAdMyZAn5kZRjC64V8fS3jWyWOMdGgkxZzAqvEynIpcPEgwFuXLDeDfeE8maLiaTx2vJCJcStSKYyl0iOcptl5wCw0rst2UQ1qwapro52BWq9UtyQXhPWmJ1OliEABM7Ca/fM/43AJT40wOPqtf1ylhmbSaX37SaK9ZbQxX5mlwTNQ+cjAN+CuUIYu1jOCiig4UL1NzIORVDHXHd8hC/qrNAhEUBpro7BNyho7hy0cpk+sTCe8+WU9C6IthC/UVSDH+V+Q44asb7Q/nQRdhrsidE162/AcYJLSxUJQVPWGt2JDGgHyuwnvH9Ex1BDfrpPIr5CNgxznSc/nZ6Q8jkWzUYXaz9xh4qLqsWuhCUjFhl1motYo7EQW5QgpdDpa9rUazHHZkzKKuSw+pow 9fTHumsh mGjh/1debjF2ZxQpNgWhPJSDEHcOFEDHskZw4AiLAKzgBk4apf/bwMXnIfWCW3yJdEkaRAj2uqZWMuea0t18puBnBjNQEL3PwWc0qzeidIBZpsmwZ2hnhrKQfm1thfajXzfcrNcKxhqwjIOx5tBr7WB2zMq4j8vi8H7x5zlRp2a9hP62p71v3TzUvJ1uU8QJ/tcRhatqo8kGaSVVKJPO3JKGQaqvdXX24BR+QJYvlQsFqM9BJAVYWfZuDGaOH4uwSTOjmW1BQlhdPyxMVe5mDdvDG5bHMPCvexmHeXKTr+T1TnoKXXnrbcGomnZPoiUXh70ac3Qstha8FP2fSnZX0MzssKM3DzMu21HUtyO8azFHB9hskxV3B305MwXSTbApkcSQTSQx/DLKu3mgCYO4B5j1XwQ7TB0E9hifMIcvj+9uvQx9VBgiQU9/zyJBSVVU1Aaic4HufFROH6O/cYW9y5VYQHJCW2qy+R4VVjp7xfLWG8jxxDHDwHDYauAL0dMzropqvkjBp+Bw+E8mJQig4D22FsIWTB1eaB6halmgXULnVRziaHCGsWz/A7Wsux/B8Qxz9XklRIwvZhn5n0+T1bDJDwGI1bTwXLimz7xNfKuLGfrMcJNXo+7a5U2ETJAU2n1eqRJ8wUptvyYKR9yNOXE5HPfoMiMft0Z3FbxhGVvfelnKyM+4BXXbj+RMTHkLXRuPBD/11alf6Wg8DJ5KlkAFCNxELuIkXMfhgkUR3sd8KLQ+6IcJ93yxthe67TmP1n4pUJkk0flIuKr+R6iff4+mL+lkZSIxWYVIjp5kY45ipPOHXHgd9HbU9Y30UD1hyF+wmaQWEDtDnzL94a2n+q0keT6ndQE2ezQ5IBUnPVdTV3fHQPojWmWahFDhRd+j1a5hGlK0KJQVO9Ps0DkJeB3LUklHmctCTVL0R2d81Gws08lYE4JGTlP++TuUsBwaIX6u9LFVeJocdulcmZHtj+EQM1TOe id//ZwQl 4HVJGn1EpvUIqGyZOQfVBwogmoAjSpDv/aTu/Hlx7OaTnaM8/FNs5lq5420jCqbWYw67HYW4XHCNnjcftoTFBsRjitXTOcnXc7CMUgfH6ENaemr3wb/XSDjCqDlLDwhe X-Bogosity: Ham, tests=bogofilter, spamicity=0.001366, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This effectively adds support for large folios in damon for paddr, as damon_pa_mkold/young won't get a null folio from this function and won't ignore it, hence access will be checked and reported. This also means that larger folios will be considered for different DAMOS actions like pageout, prioritization and migration. As these DAMOS actions will consider larger folios, iterate through the region at folio_size and not PAGE_SIZE intervals. This should not have an affect on vaddr, as damon_young_pmd_entry considers pmd entries. Signed-off-by: Usama Arif Reviewed-by: SeongJae Park --- mm/damon/ops-common.c | 2 +- mm/damon/paddr.c | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index d25d99cb5f2b..d511be201c4c 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -24,7 +24,7 @@ struct folio *damon_get_folio(unsigned long pfn) struct page *page = pfn_to_online_page(pfn); struct folio *folio; - if (!page || PageTail(page)) + if (!page) return NULL; folio = page_folio(page); diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index 0f9ae14f884d..0fb61f6ddb8d 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -266,11 +266,14 @@ static unsigned long damon_pa_pageout(struct damon_region *r, struct damos *s, damos_add_filter(s, filter); } - for (addr = r->ar.start; addr < r->ar.end; addr += PAGE_SIZE) { + addr = r->ar.start; + while (addr < r->ar.end) { struct folio *folio = damon_get_folio(PHYS_PFN(addr)); - if (!folio) + if (!folio) { + addr += PAGE_SIZE; continue; + } if (damos_pa_filter_out(s, folio)) goto put_folio; @@ -286,6 +289,7 @@ static unsigned long damon_pa_pageout(struct damon_region *r, struct damos *s, else list_add(&folio->lru, &folio_list); put_folio: + addr += folio_size(folio); folio_put(folio); } if (install_young_filter) @@ -301,11 +305,14 @@ static inline unsigned long damon_pa_mark_accessed_or_deactivate( { unsigned long addr, applied = 0; - for (addr = r->ar.start; addr < r->ar.end; addr += PAGE_SIZE) { + addr = r->ar.start; + while (addr < r->ar.end) { struct folio *folio = damon_get_folio(PHYS_PFN(addr)); - if (!folio) + if (!folio) { + addr += PAGE_SIZE; continue; + } if (damos_pa_filter_out(s, folio)) goto put_folio; @@ -318,6 +325,7 @@ static inline unsigned long damon_pa_mark_accessed_or_deactivate( folio_deactivate(folio); applied += folio_nr_pages(folio); put_folio: + addr += folio_size(folio); folio_put(folio); } return applied * PAGE_SIZE; @@ -464,11 +472,14 @@ static unsigned long damon_pa_migrate(struct damon_region *r, struct damos *s, unsigned long addr, applied; LIST_HEAD(folio_list); - for (addr = r->ar.start; addr < r->ar.end; addr += PAGE_SIZE) { + addr = r->ar.start; + while (addr < r->ar.end) { struct folio *folio = damon_get_folio(PHYS_PFN(addr)); - if (!folio) + if (!folio) { + addr += PAGE_SIZE; continue; + } if (damos_pa_filter_out(s, folio)) goto put_folio; @@ -479,6 +490,7 @@ static unsigned long damon_pa_migrate(struct damon_region *r, struct damos *s, goto put_folio; list_add(&folio->lru, &folio_list); put_folio: + addr += folio_size(folio); folio_put(folio); } applied = damon_pa_migrate_pages(&folio_list, s->target_nid);