From patchwork Wed Apr 16 04:25:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 14053151 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 BEEB6C369BA for ; Wed, 16 Apr 2025 04:26:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 422636B0254; Wed, 16 Apr 2025 00:26:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 387AB6B0256; Wed, 16 Apr 2025 00:26:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 18B2928000E; Wed, 16 Apr 2025 00:26:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CFDCD6B0254 for ; Wed, 16 Apr 2025 00:26:04 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 5C2DD81DB8 for ; Wed, 16 Apr 2025 04:26:06 +0000 (UTC) X-FDA: 83338619532.09.9F7203C Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf25.hostedemail.com (Postfix) with ESMTP id C4B31A000C for ; Wed, 16 Apr 2025 04:26:04 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=s0ZGTJC5; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744777564; 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=3TOP/4VxCCpi1d0mjWrFDdxJRKOncCNUsGYNgRaQ0OA=; b=Z/WZuV/mnJN+gExKyXb8kD+P3PaAyJ47obnCeOn0DPPycBaN7NdCgcKDuavAGcs0Yn3mKc 3aR0vaTXYpPUnD5R3JtpyYgZBuv/1pxEJ70+zwRg5uSEwj7Si04cwlhNQO1X2T7fniyxCn w4mw9rHexKem1RLnblO7ykAfqcEL62Y= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=s0ZGTJC5; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744777564; a=rsa-sha256; cv=none; b=3RKyt2uzehK0SNh9hzLKi95SAY+cJyBCZ50VV+OwrT0RqKeGYmLGLhmvRL8ezUwfaRtIKr XVOlJneg8ixuAxD1ofp1Y9UFvJU54UvRmmBQBoRfoOyafVl4YzybQPbNLZSFsvLIQbPxKN CjhvrkKTJ/THITFaAQQM50WKyh9Lgn0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id E1D64A4A8B3; Wed, 16 Apr 2025 04:20:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4794C4CEEA; Wed, 16 Apr 2025 04:26:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744777564; bh=VVcSdVBTKKi06qwTl9rWSnXUumWlw7dYXO3OAlE/vPw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s0ZGTJC5AzEa0qRAeIbadf2/M4vCz6O0N4ey7KSAHYfBZUJzSAb6ty7X0H6b124i/ xc0gdbjgNzDVrwtg7TmFQiw4/5Cb/owsg+o8qW8MXn8uyLV1jpJCXDwX0yV0S7ld6O amiIlfqX702lSDXcUqUX7w3w1p//t/TKcLwKOVfB88sRuOi6eZpnRYH56HDkC2JS5P K6GTVV6rL1oqUcMjywOB/l3GDiMkjn5hxIQASwozEdIeHc1CIaAe+UJDxKSZnnbaUz yurHm4e4rAeklyUz1zqDoEDbxCkoOyFlaU1d8PlP42eaopCzr33uowyaEW0kD/gQgw HrAnmbR6MBwgQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Ze Zuo , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 07/10] mm/damon/sysfs: implement addr_unit file under context dir Date: Tue, 15 Apr 2025 21:25:48 -0700 Message-Id: <20250416042551.158131-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250416042551.158131-1-sj@kernel.org> References: <20250416042551.158131-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C4B31A000C X-Stat-Signature: ea8cf7oy5gko11tq4hygshqp7usb18dp X-HE-Tag: 1744777564-262070 X-HE-Meta: U2FsdGVkX19UKgbw0TdpU+qH+FOZD9PcvGgCR2ZrOtyOOo7LXTBBJ5Anj1VVNi0P00FLjae6MCjviLPLnPJvaKPbG+LEGWCHbmVJ4rpbD0dBgvl0LzVlJcqHHfk8/aRLd8Oh5cvTzhDk49lo+O6/1byiSosa9H1WE49pcvGH0rreDkCiTTt0i3BUSAeNxp1VXlgMhIA8egHPLieEPW5jZ5h80VaY7PPfdic1ZWl4QSUqIMRGabUGbi77wOd5SsESQCwPPWb9J/aKhrVYao83ItgyHyRnvR/H65A+Wj5A9ZrK4Ast57DJQTxVpYFrJw3x3zmvOtUpNfPKJSxFMNoCKh1pdX6EkXU05uxZb84EjnANDT9dKa46IsCl4W6jygInPjrIlGb68N0evMWX5+SOb69U9+Jhvwjjzfp85gIaOzws+g6fkGpYyY+LEILPKMq2Q/TkgeU3SSKIOxO80Z5FyWf/RObfgrcAmbWkLIHjPFKVJmO1Kob6LcuycA/NMOCPWZCR6FlR6brxk9+NpfOh4i/D1XdUc/KB8PW44YFCq3ToOBcn+BuSNNW+FFmVYIWbiPA/x+/ZvEtbVr0/egK1E9zIo4e8YrT4t/YUFbVweZuqx1X9Lz1Hh6ggOZiswZdWSJgvVt05m3K5CT85Z8NeIQOoxju7iwMmM4K9MGSBik5ZWGXy0InfcRFdxjhdT8dJQoaZTtztF8moQcchJgBEOFkiEzs0IRcJODOxC3JDIKH74/2wuLKIhIa6gm01T5VnEMOtMsOUGwgEeEamzbIrlFBW3T+El3jG7NnaaS7hwq8NikIxHS9rKx4pbSNZ/8Lh/X4UAOace5qxJAboGm27l0i4Tc4uowOQM7XY3EniHi0/al1KYE+wibsKa7EvwFxz9h4r/9Cend00JShclMEe4dsWbeVw6/7gf1ShjoKn6auIrkIgJ/eY8rWHjSmtNY0SYJah4UP6U5fDDFphUry ZPzIBDk9 O+4HXgSMf99QA8/TDp3D43zKCvKO6+cadcL0WfKPn3YV7HWndj7DOXVjsS38kLcWwIPF1ik3JkTMeAKU8C4Y/+4ZVeonyB9lLXaTxLKXn4qn7UTvH8LQ4EvljRMToGXxVSax6AF7inngEM7D+H0pX2RJ/1AxENBVMUZuJA4l3CBoFfoDSlJCVWf0bsx1nD9hJ/KupyDVHyx5Y/Y+a1XWhjFPAysZQ8s8UNFPDDZEiRYBIsLTd12LXXWjislHFp26sOXC3r6dF19deR7pyq2qOEtgUTA== 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: Only DAMON kernel API callers can use addr_unit parameter. Implement a sysfs file to let DAMON sysfs ABI users use it. Signed-off-by: SeongJae Park --- mm/damon/sysfs.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index 1af6aff35d84..ebd7cfa235b0 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -821,6 +821,7 @@ static const char * const damon_sysfs_ops_strs[] = { struct damon_sysfs_context { struct kobject kobj; enum damon_ops_id ops_id; + unsigned long addr_unit; struct damon_sysfs_attrs *attrs; struct damon_sysfs_targets *targets; struct damon_sysfs_schemes *schemes; @@ -836,6 +837,7 @@ static struct damon_sysfs_context *damon_sysfs_context_alloc( return NULL; context->kobj = (struct kobject){}; context->ops_id = ops_id; + context->addr_unit = 1; return context; } @@ -971,6 +973,25 @@ static ssize_t operations_store(struct kobject *kobj, return -EINVAL; } +static ssize_t addr_unit_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_context *context = container_of(kobj, + struct damon_sysfs_context, kobj); + + return sysfs_emit(buf, "%lu\n", context->addr_unit); +} + +static ssize_t addr_unit_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_context *context = container_of(kobj, + struct damon_sysfs_context, kobj); + int err = kstrtoul(buf, 0, &context->addr_unit); + + return err ? err : count; +} + static void damon_sysfs_context_release(struct kobject *kobj) { kfree(container_of(kobj, struct damon_sysfs_context, kobj)); @@ -982,9 +1003,13 @@ static struct kobj_attribute damon_sysfs_context_avail_operations_attr = static struct kobj_attribute damon_sysfs_context_operations_attr = __ATTR_RW_MODE(operations, 0600); +static struct kobj_attribute damon_sysfs_context_addr_unit_attr = + __ATTR_RW_MODE(addr_unit, 0600); + static struct attribute *damon_sysfs_context_attrs[] = { &damon_sysfs_context_avail_operations_attr.attr, &damon_sysfs_context_operations_attr.attr, + &damon_sysfs_context_addr_unit_attr.attr, NULL, }; ATTRIBUTE_GROUPS(damon_sysfs_context); @@ -1414,6 +1439,7 @@ static int damon_sysfs_apply_inputs(struct damon_ctx *ctx, err = damon_select_ops(ctx, sys_ctx->ops_id); if (err) return err; + ctx->addr_unit = sys_ctx->addr_unit; err = damon_sysfs_set_attrs(ctx, sys_ctx->attrs); if (err) return err;