From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54B4F481672; Tue, 1 Sep 2026 13:25:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788269121; cv=none; b=diE3SUUSnNhrTk6qh8qz2MJ+es1mSqfg4v9kQgYYsQy0+RvcimNQxg2fooX2ncpJoOfxQaRgJB7P7ozol0YMwUhNp9hMSJgxEYYQ5COdZAnu0THJjgdNaJBtd7DfEwvBKvG4Sg14NzjLC/3yyMUTuthtnMI5CJm1yTO2/X4yU9A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788269121; c=relaxed/simple; bh=06waheRfHqNc7mcKh7ywEIPTWg9mPbPV97QZH8Bf2HY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PEH6sntUyLkeadIuU6c0GsMG3dntX23HealPIKbHUQXqIZX9ZG0nrW+SxlUBpalT9Vvzk9JVJ+V9Q6nzU3rC4EGPwzptL8n+TF3cJSYZVB2pfcMpY9tbqE6zGacMIDLmJw2kQCo/Qz2eSg2W7023LUNFHMqXI4NV+y5g8MRTuZk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JOrgW759; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JOrgW759" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1947A1F00ADF; Tue, 1 Sep 2026 13:25:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788269119; bh=RE/sPFQsqSQVWahZ4M/8PaRhoZGY65XXC3Wknf+xORI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JOrgW759azzFRbCRSQfSWrETMw2/DvnImVwwQq6h7O2cc9TC3SYnMItZw7jLXx3zl XhE0YDqOhCDH6OsKpjyqfV3Ei+aqYRM/ZvDzwSyAYysHUd/BNXqb9rPm4tOYIGkmf9 md+h1oGZhkmpWViTgdDnFpts8QjPpZ9oW0ieyAS/T9D+wyH584q9Ij8WQ2TD5nUeem YN+UH7zUFecWC3749zaTVmhNPycX2Gx0vjAsZurrWOFzCIEcVKoDq7wSaSyDInXLs1 75vuKYEHX9HYdhuX2oL30p4o02G9Nvw6TnhO47cmvTT6uBsKMeMHXheoVzxzEj+dnN SOi1RVwA/VdbQ== From: SJ Park To: Andrew Morton Cc: SJ Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v1.1 13/17] mm/damon/sysfs: pass preps to DAMON core Date: Tue, 1 Sep 2026 06:25:00 -0700 Message-ID: <20260901132506.99243-14-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260901132506.99243-1-sj@kernel.org> References: <20260901132506.99243-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit DAMON sysfs interface provides the files for setting DAMON probe preps. But the underlying code is not really passing the user-set values to DAMON core. Pass those. Signed-off-by: SJ Park --- mm/damon/sysfs.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index 1ecf194f71ddb..7ec14f48d157a 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -812,7 +812,10 @@ static ssize_t prep_action_store(struct kobject *kobj, action_name = &damon_sysfs_prep_action_names[i]; if (sysfs_streq(buf, action_name->name)) { + if (!mutex_trylock(&damon_sysfs_lock)) + return -EBUSY; prep->action = action_name->action; + mutex_unlock(&damon_sysfs_lock); ret = count; break; } @@ -2176,6 +2179,23 @@ static int damon_sysfs_set_attrs(struct damon_ctx *ctx, return damon_set_attrs(ctx, &attrs); } +static int damon_sysfs_set_preps(struct damon_probe *probe, + struct damon_sysfs_preps *sys_preps) +{ + int i; + + for (i = 0; i < sys_preps->nr; i++) { + struct damon_sysfs_prep *sys_prep = sys_preps->preps_arr[i]; + struct damon_prep *prep; + + prep = damon_new_prep(sys_prep->action); + if (!prep) + return -ENOMEM; + damon_add_prep(probe, prep); + } + return 0; +} + static int damon_sysfs_set_filters(struct damon_probe *probe, struct damon_sysfs_filters *sys_filters) { @@ -2211,7 +2231,15 @@ static int damon_sysfs_set_probe(struct damon_probe *probe, struct damon_sysfs_probe *sys_probe) { struct damon_sysfs_filters *sys_filters; + struct damon_sysfs_preps *sys_preps; + int err; + sys_preps = sys_probe->preps; + if (sys_preps) { + err = damon_sysfs_set_preps(probe, sys_preps); + if (err) + return err; + } sys_filters = sys_probe->filters; if (!sys_filters) return 0; -- 2.47.3