From patchwork Tue Feb 11 12:43:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Usama Arif X-Patchwork-Id: 13969548 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 A8791C0219D for ; Tue, 11 Feb 2025 12:44:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 30F56280005; Tue, 11 Feb 2025 07:44:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2C140280002; Tue, 11 Feb 2025 07:44:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 139BF280005; Tue, 11 Feb 2025 07:44:50 -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 DE9FE280002 for ; Tue, 11 Feb 2025 07:44:50 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 82B12C1672 for ; Tue, 11 Feb 2025 12:44:50 +0000 (UTC) X-FDA: 83107633140.02.8B42E08 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) by imf17.hostedemail.com (Postfix) with ESMTP id A21B24000A for ; Tue, 11 Feb 2025 12:44:48 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="YZg1ddL/"; spf=pass (imf17.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.180 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=1739277888; 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=7zyxp4qKor0yB6Upvj/J6rwR1h/DvEyqLUMvE/8sgvM=; b=gmfFKuLEjvpWEDBpe52UXa8HPk0MSj1+y9ENhTxS84OGlaJfo97PFthNnrvH/RMpg0T6uW vcb3MKJ6e9PJ2l2pPqbEdtaSKWR7krjBd/jAqXNALI71aTecNL4HdZU/5zYTyapV/2ELJn fe0zGitmPGy7LbFGvTCcw081ylnI4N0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739277888; a=rsa-sha256; cv=none; b=1z7ni4UZkzRpmfH9m4RQ/BxIsnRcJC6QCfRQ33ih/D+v624euy7BNUWRinAZgPjUExxaQW bv9Ze2cJ78NW/wCX7Ikn6uvHLdS7FsjFpZmUimcJyAf5anoK6iGRNzPJc23Binda1hjzMx ktgK82Mnu7o7IzwDKpH3jru3RK/BKbE= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="YZg1ddL/"; spf=pass (imf17.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.180 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-7bcf33f698dso499249585a.2 for ; Tue, 11 Feb 2025 04:44:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739277888; x=1739882688; 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=7zyxp4qKor0yB6Upvj/J6rwR1h/DvEyqLUMvE/8sgvM=; b=YZg1ddL/ahUv9W4m0gBMvWmORIIz8m6MDdttlZPq9UuV3xxuqWgc00ToukdKbT4y7t PQ+Ko2zSs24IL/7HACjlj6Vuh1T/XDdL4bSBv9L0lC0m6bZb7uAJr2EPgbkTy1QCoptL nveQyt+I62gS+e9w99sTEK9MPtSfklqVvNnu3Hp7G90DIH0cDZS8McYnsEUm7JZ97bSd ssvyYoOR6eZLC3FiePIf/DH3Yp1fx3uQw95cFgHamP2P3R9orSMOek83oHAxXqtjAkUa tJCAiRg4d3F3tZp1KrKajCxHpx456EvYHwa5b8T/x1rpfv9jRZnANRagd6/LH1PJmlOI SLsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739277888; x=1739882688; 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=7zyxp4qKor0yB6Upvj/J6rwR1h/DvEyqLUMvE/8sgvM=; b=SWXm7DfNGffEyHfsp3fIrq57wQoxLMnqeg8Lhp8F2jKh9C79WzYaw+EFRnE3+ySXUM jgYRFEYMMwxGy3ZZip4itgrfpFH2LCB0XijoP/bmNWL54RGs5ZkI6L3wzqfHRtXbjgvl w4n7hlYe8ANB1g7AhDRn6PRpup9JPxTM7w0cSC1JiyulQAC0jNJvCabv9qoHwWrrbQoA XtLBykkGX44AjYbWwqf8I/VOfn7yNMhxNVkYIT7CVS8QqKWlCWiCDEJe27+E8l6xMFdh Sa3TxsflWfzP6klpchN+gyOTTB68dN80KsMYC3Djc96UeM1+seKl0dKFOm100epVNOAy gJQA== X-Forwarded-Encrypted: i=1; AJvYcCXblgH06k8wLSGJrRP8AlsF4wnceXqgD0kkPZg0Hfr4bXBkCK6uJFRyh7DPRfbNcknDmtkzOIE7xw==@kvack.org X-Gm-Message-State: AOJu0YyHQ1ytWKKO8PYrJrhY/CltC0eUa52NzDGpt6qA/z6rMPdNkZsW f7l9yZ8d4wy2Gdzo0p8SOSsu1axlFh1Hpo1UTYygELJBOqwIo4R3 X-Gm-Gg: ASbGnctcgpf5/PP9Z9G9MB2N6AuNA3O0qU+vtoau9wBP9MY5PU7Rq918l+HUmnk9AGH kLrIMiuOOB3+XALP06fOPWQqtjL5Q+9q06qDmCYfHAYrE67B1Y0mD3NJDhxMs92OcfgnVbAXgPp kWfzarbiKTVjOgtLNg1cVxge2Xexsf7/hRNI2dnyTEvUyxJ9FoIJqKY/jQuU1WHWmU1Ryoqh3rp VpWGTl5qNd8wBl3axdSuI7+zXXnVkVL6uB2Fs5r8md4EVZ+w/Jy68+EbJSzXeZtJi8sfiJOvpgI IsvP1cpvuOUNsw== X-Google-Smtp-Source: AGHT+IEJTN8x+UN6cPapypXGlWsjEzOvc6OtH8mxzRq/xr3rROZkgpXaGMFGqSd9HYs7jToaBiYx2Q== X-Received: by 2002:a05:620a:2795:b0:7c0:602c:e689 with SMTP id af79cd13be357-7c0602cebd1mr970692185a.16.1739277887826; Tue, 11 Feb 2025 04:44:47 -0800 (PST) Received: from localhost ([2a03:2880:20ff:46::]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c041dec2e9sm663299485a.20.2025.02.11.04.44.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:44:47 -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 v5 2/4] mm/damon/sysfs-schemes: add files for setting damos_filter->sz_range Date: Tue, 11 Feb 2025 12:43:41 +0000 Message-ID: <20250211124437.278873-3-usamaarif642@gmail.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250211124437.278873-1-usamaarif642@gmail.com> References: <20250211124437.278873-1-usamaarif642@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: A21B24000A X-Rspamd-Server: rspam07 X-Stat-Signature: rix7psib6wb58jassgynibom7bjgrsbm X-HE-Tag: 1739277888-36046 X-HE-Meta: U2FsdGVkX1/HVcGmKR6D93RCowDnSOKIm2lhmXCt0LYezYgt1lJU3OqxX3Q8QgqxyGW6kXFLrDb5hXxWc+qV53mrGkF7N2i59BAuWzmRAmNAGNx7mv3ua3vxQWHAtRiOMMTM1itvmwJuxokYZ+vInLF0UbOG9c1o3YCr14w6LoOwpys6QvJwBabz6MP+S/0NKY5gIKmsCD3GrtkHRxqck1Y50ZQz8qNN3CF9ckVzYgHxFLPMSwzSM8Xk2TrvCypB3e3GKRRJF+9/J20Q7aGh+QqO+A65Hd/z811RMIiZ/zBMSRx5nRBMvWrC8VMcHBUyZdtk2nGD8N5cwGwujMlSBBR+PN251RsREflfnNcEKWFDFiqoortcdRr3nKLGf51E7EXZbnhttujcwdq76w6t76VS5SLQzUKak9wPTsFFKugEjh4tU471yKPAcVnUntGq5UtzPdIbtp3ff1uRYNoeOeZB4NF0APmufOTDs6D7WL2j7rQwzZXZkNxv3ICCPYo09NjdNE+ktV1PugQhqKYQHcTej6uw1MnZXvh+bzkfncdXspDqFEUZjn2Kd0Prdar5ea1Sgwex6l9BFiP/9D8iSs226z637dmsYmckJu7OVUwP43rqLV8FSAC/lIfEsPzMKBcZErh0NWm8xhZpdyYjR6FgE1NDxFK5mrllce6Cor95gE9+qiXghUQIA3A0IKov/+E4cBjIEnFKDASc+WAvz+AZJoZIQ09DK7UvPgLp+2yLOSua+TFUBO4UaOuGBubWJiRDuEV67kqLJQpPlbO+n+3nJD1cgWsq9+O6jZWkxvPXflv/4JmmlIFDziwyU23CTpulGHrIi0UV4D0MXaXaeqENFKfIEMUF+XVrPBKa9NLHypRmU9O4wQQMsLbceD9Ct/+LpXNrynjA9mD+sEzHrHsilgUl0JShV0oYdL/9qBRsTZE/ceLT7xmG2/qWe7W7dBAHz47rtzXIOto0B32 LNQVx+qH I1Pvky9K9nK/VnMsefTU8Qt+THA1OAnluYB6/JV4M8V36TjEsBywrhx8USkhIBDbu/BxlMuSa6bt2dMkGwMkIZY3ZWI9CsF4CYP5Ha/uH7xHK0ZzKVp2d6XMXP0TqbCL6nZCF19agtixs7SLctqndSOamNgsnp/cb4BA0x/E5+RliMGyI5KPh36tNSk0QC5TUgfzWQEhrJh4lbyG4smhQay8xb58sI0jETSccn2jqM/wzOY5SL7vNZaliiCcpY5Gl5ufZctKfcHRdmHvzBbsxdDw7aJ0G5PZrq1r3v5WBtFubs5XO5EI03Y2xNlQdpJIe9JgxC2NmWjVF9urF/+M2QaK+Nw120kaserrJ5whF4oMyhp40YI8a2sOEKuXdgOe7Exaq/Z3774mpErFOeVqA9rZztnDqhpJfxF760YiOxRHApG7Y6w7UGrdkoQmhNyQgQ0uCe3MILJKhu4ntN5bdM1f1XOdzX/XpTrSWbgXIL2oSnVkRxZJ0t0ZvFg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000511, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add min and max files for damon filters to let the userspace decide the min/max folio size to operate on. This will be needed to decide what folio sizes to give pa_stat for. Signed-off-by: Usama Arif Reviewed-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 9020bc9befac..881d00bb3a34 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -316,6 +316,7 @@ struct damon_sysfs_scheme_filter { bool allow; char *memcg_path; struct damon_addr_range addr_range; + struct damon_size_range sz_range; int target_idx; }; @@ -474,6 +475,44 @@ static ssize_t addr_end_store(struct kobject *kobj, return err ? err : count; } +static ssize_t min_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_scheme_filter *filter = container_of(kobj, + struct damon_sysfs_scheme_filter, kobj); + + return sysfs_emit(buf, "%lu\n", filter->sz_range.min); +} + +static ssize_t min_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_scheme_filter *filter = container_of(kobj, + struct damon_sysfs_scheme_filter, kobj); + int err = kstrtoul(buf, 0, &filter->sz_range.min); + + return err ? err : count; +} + +static ssize_t max_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_scheme_filter *filter = container_of(kobj, + struct damon_sysfs_scheme_filter, kobj); + + return sysfs_emit(buf, "%lu\n", filter->sz_range.max); +} + +static ssize_t max_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_scheme_filter *filter = container_of(kobj, + struct damon_sysfs_scheme_filter, kobj); + int err = kstrtoul(buf, 0, &filter->sz_range.max); + + return err ? err : count; +} + static ssize_t damon_target_idx_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -520,6 +559,12 @@ static struct kobj_attribute damon_sysfs_scheme_filter_addr_start_attr = static struct kobj_attribute damon_sysfs_scheme_filter_addr_end_attr = __ATTR_RW_MODE(addr_end, 0600); +static struct kobj_attribute damon_sysfs_scheme_filter_min_attr = + __ATTR_RW_MODE(min, 0600); + +static struct kobj_attribute damon_sysfs_scheme_filter_max_attr = + __ATTR_RW_MODE(max, 0600); + static struct kobj_attribute damon_sysfs_scheme_filter_damon_target_idx_attr = __ATTR_RW_MODE(damon_target_idx, 0600); @@ -530,6 +575,8 @@ static struct attribute *damon_sysfs_scheme_filter_attrs[] = { &damon_sysfs_scheme_filter_memcg_path_attr.attr, &damon_sysfs_scheme_filter_addr_start_attr.attr, &damon_sysfs_scheme_filter_addr_end_attr.attr, + &damon_sysfs_scheme_filter_min_attr.attr, + &damon_sysfs_scheme_filter_max_attr.attr, &damon_sysfs_scheme_filter_damon_target_idx_attr.attr, NULL, }; @@ -1954,6 +2001,13 @@ static int damon_sysfs_add_scheme_filters(struct damos *scheme, filter->addr_range = sysfs_filter->addr_range; } else if (filter->type == DAMOS_FILTER_TYPE_TARGET) { filter->target_idx = sysfs_filter->target_idx; + } else if (filter->type == DAMOS_FILTER_TYPE_HUGEPAGE_SIZE) { + if (sysfs_filter->sz_range.min > + sysfs_filter->sz_range.max) { + damos_destroy_filter(filter); + return -EINVAL; + } + filter->sz_range = sysfs_filter->sz_range; } damos_add_filter(scheme, filter);