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 1F4CDC83F1A for ; Sun, 20 Jul 2025 17:17:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C3F06B0096; Sun, 20 Jul 2025 13:17:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 64D4B6B0099; Sun, 20 Jul 2025 13:17:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 477D36B009B; Sun, 20 Jul 2025 13:17:06 -0400 (EDT) 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 2EDEB6B0096 for ; Sun, 20 Jul 2025 13:17:06 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id F26511DAB14 for ; Sun, 20 Jul 2025 17:17:05 +0000 (UTC) X-FDA: 83685298410.14.579B91C Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf25.hostedemail.com (Postfix) with ESMTP id 44DD7A0007 for ; Sun, 20 Jul 2025 17:17:04 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=UidaZlLp; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1753031824; a=rsa-sha256; cv=none; b=0YaLiinwpXTEbMZ+sbxZrFfRZLPyrVTzRYZf2BuN/w0RiSE15i8eUmVSy1oSXKPhZeF82X ui70UciJcjvDIX91RoG5ZCMEN1MxPuIRUIeyFee9gwakvDTzZghNL4dn1A0ZLsR8Z+J5cZ vuKw4v22hmPF+nsfJ74iy+z51PLmUYE= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=UidaZlLp; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1753031824; 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=GOqetbfKBEIcZ15S/YlYxuX5zno96/paw0WQHtWXc98=; b=5Aii4oaoW/uBpnnLgCdsj2sAQBTfm4b/x8f5voHBXBKy04kCoawjySmLDqugma4XL19lLc 4eLSxlxReUbxkAEwyoD+wtG5K/G24kW74eatvkngOmXYmZ9tNsCY2Qbf2LAjA9MKTZiCRG gGzltvEAt9SuL0bwFzboJqui7C/RVDc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 5B4F445C7F; Sun, 20 Jul 2025 17:17:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 16DD4C4CEFA; Sun, 20 Jul 2025 17:17:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031823; bh=XSthd9dlhJIV6ssLC4htorYpexWz5dqyUITsYAj+758=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UidaZlLpAzxjA5v4RJcPbgi8JyTetTkgF1Gu4yNcVvzQTFtrqVCxriwR7VA8wIAwn jFcaxzpuLy6oPpi6vvRKyxuneu69NtlaDdp6lL7awJhA88N3AWcsFskM40emcbh3HQ p8w+vRb0QVUjHrgTU5RuXbwif1saOfXbvrYahk+poJoPkoY5N3GbuZ/VSnyCf/9OLB 2tGiUrJoN3AvGh97FJ2UYxUWERjQ3ACGpbdZbzCV18y0SRox0fBXWVIQs5TlIKaH7S g348XUe2X19eJfw988sb41pj0YSnOVDJz4dWhd9c+YCgQTyKyaFvOS0LphfQn9mN+c uUzFeulNteHCw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 06/22] selftests/damon/_damon_sysfs: support DAMOS action dests setup Date: Sun, 20 Jul 2025 10:16:36 -0700 Message-Id: <20250720171652.92309-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 44DD7A0007 X-Stat-Signature: 3j4cbfhkhjgqse4ehqyog3w3ryymwh38 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1753031824-865470 X-HE-Meta: U2FsdGVkX19bZVUQc0wzvy16pikbCaXu/yD90A3rL+Tc5hoZP9E//ZJXpyHRm321FspS+Ne8OF6lNGbXhGv/44zV0PoGQFBUHak2I3RJrOsixY0T7xIEFSCZcUP7EmxHq2X1X+A0fVlJjcInADKs9GD9dsjYN6NmgY8Lnlqe+MLVhP3zJm/gGAMFKDpR5kYYo1Oc3ZbfzMua1RqbrJS6CgnhNWbLNFcOcYe2GVAHTCddbK6sua7156b2w5buk/54LVIYQ6Zj0p/89EyQGAFgCnF7keEkAImDFAw9jkWI8I4mLIgaL8GZeCeBbxKNjc9Zx//JBIetkn+bVBrPq4muffWSIk9Mds3f7SsueteWjbcSQ1yOgzpSClVJs8GgZEKjnqoTEelUAQH60iJvJPockCguEImF0kzB3wuEo3JWLBZJRhuiBxGDSogdgcbC4QyDGedxbqKsO8Sn968rtRgOEH9UVAlpDEERj2m18alXncgefqIhbUKJIvgbPrTZ08IEi7oerA6jSgi6hEPa4s6HIqT2ylQsos6BjFfDeG/v6Q+wtaXrFBd8+h2n4n9Dpaxh0UagSbqqzTQMjjfto9PnM9VLEmp276ZDj9sgHIn1JymM55db3CrvHWxMgCD5t5cKwEUhJR1PPXQDIPgb2DTY+vRewSffQwhBuRd53urvATTpFGhHp2AUPhDvnAodRSdpxtzTBaudWG+mlNkx7eBk2Rdkla+pxpAfRRKOeiNAjKbPbjqEPnhqppis1d/QW3fYWdH+mJjdGOXxk6mihw5EMvmxy1RkjYdCy2wzBUpVJ5ZU/5bFDv6qRw3NpRHsZ56X1ZZDxBNQAWjB05dWSS4CQs1wtxah4gq+42Hvljisedm0X7dwF/Dnn8zOzSHPUV6HiLwIngZkJC7smWMhcvNYEvsGGs0mMMHLKu/E2TVq50r6qyjJppLOlKng6uMYwLphAS9xsFL0+3a8cIK4+yz DPHyAtMN kg0cfSRwDcSDHnGDmnYwX5HVvATrliIDui//2OjUsYEVMrnL2Clu6qwHP6DqAerqIjcryqFdX0pXycS5MkI2BJjRbhVUF0K9qnUfn5BBtpU9jc2Z8RL6H/sVChz7qjoUPNYQVt9Z0CCgSLB7ksaetsg4Azx3inPz37uHFv6A+NQ+NFsl1qpTMRNCZs/jvezUkq03FZ95uIza3jaMrKy+tUVYownrhhchTXXXoa1HrXje+U5+fPIg7gih7mslqVv3A9f1GACWpD70Jhslo1wrDV+BGUA== 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: _damon_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS action destinations setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/selftests/damon/_damon_sysfs.py index 23de9202b4e3..2d95ab564885 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -319,6 +319,52 @@ class DamosFilters: return err return None +class DamosDest: + id = None + weight = None + idx = None + dests = None # owner dests + + def __init__(self, id=0, weight=0): + self.id = id + self.weight = weight + + def sysfs_dir(self): + return os.path.join(self.dests.sysfs_dir(), '%d' % self.idx) + + def stage(self): + err = write_file(os.path.join(self.sysfs_dir(), 'id'), self.id) + if err is not None: + return err + err = write_file(os.path.join(self.sysfs_dir(), 'weight'), self.weight) + if err is not None: + return err + return None + +class DamosDests: + dests = None + scheme = None # owner scheme + + def __init__(self, dests=[]): + self.dests = dests + for idx, dest in enumerate(self.dests): + dest.idx = idx + dest.dests = self + + def sysfs_dir(self): + return os.path.join(self.scheme.sysfs_dir(), 'dests') + + def stage(self): + err = write_file(os.path.join(self.sysfs_dir(), 'nr_dests'), + len(self.dests)) + if err is not None: + return err + for dest in self.dests: + err = dest.stage() + if err is not None: + return err + return None + class DamosStats: nr_tried = None sz_tried = None @@ -349,6 +395,7 @@ class Damos: ops_filters = None filters = None apply_interval_us = None + dests = None idx = None context = None tried_bytes = None @@ -358,7 +405,7 @@ class Damos: def __init__(self, action='stat', access_pattern=DamosAccessPattern(), quota=DamosQuota(), watermarks=DamosWatermarks(), core_filters=[], ops_filters=[], filters=[], - apply_interval_us=0): + dests=DamosDests(), apply_interval_us=0): self.action = action self.access_pattern = access_pattern self.access_pattern.scheme = self @@ -376,6 +423,9 @@ class Damos: self.filters = DamosFilters(name='filters', filters=filters) self.filters.scheme = self + self.dests = dests + self.dests.scheme = self + self.apply_interval_us = apply_interval_us def sysfs_dir(self): @@ -412,6 +462,10 @@ class Damos: if err is not None: return err + err = self.dests.stage() + if err is not None: + return err + class DamonTarget: pid = None # todo: Support target regions if test is made -- 2.39.5