From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 0EAEF212D7C for ; Tue, 19 May 2026 00:55:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779152112; cv=none; b=bxVqyltrPMdE2+uksCrO/xjqbIgXkw4JncK0l7hq//A2DzjTmm1DHG4zZDQeIG/fqWGt8S3sOam4f0bwMgAXQu1lUkfmNzOAsDzbUVs6+JDOEjomvYTLxzOB9J2i6UOTniVlDyIcgv+RidQXfo5tbRPCdSfaW25S3XwCX6Hd32k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779152112; c=relaxed/simple; bh=W58lM0M6pU4Y69trYr8RQio2IsjAQyLht+pJchojtuM=; h=Date:To:From:Subject:Message-Id; b=Z8Mo6azboBQlN3t9YUhn9TocyCDGGsJwUMK9rJeu/wqEZNqWN+o61F07QvblZipV8EpUmogW1acU7oc0Qq9kW54pH7eVcoAH9B47EEiHGWjSSLEjzttxGdHom+wvGSjjl8193uWzauaBYvRpx+zJH7Vxw/5Y0FNlBFjjfu1jS6I= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=Ue1ehSc6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="Ue1ehSc6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9ED09C2BCB7; Tue, 19 May 2026 00:55:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1779152111; bh=W58lM0M6pU4Y69trYr8RQio2IsjAQyLht+pJchojtuM=; h=Date:To:From:Subject:From; b=Ue1ehSc6QRs5KqeZ8CImVKHZdUke+B/89rE/G9Rp0q7wtqeaoryLiV0uKuXCmbJOl 1vK8wpffFLwOslEaFsVJI1P+oCXtemTCKWdEw9vD/HBahu65eWlVf6/HSBYyLu5cMy 2WL0X062PDBydtnVxkaHtwHuYkKXC8H0itwa0lhs= Date: Mon, 18 May 2026 17:55:11 -0700 To: mm-commits@vger.kernel.org,sj@kernel.org,akpm@linux-foundation.org From: Andrew Morton Subject: + mm-damon-core-introduce-damon_filter.patch added to mm-new branch Message-Id: <20260519005511.9ED09C2BCB7@smtp.kernel.org> Precedence: bulk X-Mailing-List: mm-commits@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The patch titled Subject: mm/damon/core: introduce damon_filter has been added to the -mm mm-new branch. Its filename is mm-damon-core-introduce-damon_filter.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-damon-core-introduce-damon_filter.patch This patch will later appear in the mm-new branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Note, mm-new is a provisional staging ground for work-in-progress patches, and acceptance into mm-new is a notification for others take notice and to finish up reviews. Please do not hesitate to respond to review feedback and post updated versions to replace or incrementally fixup patches in mm-new. The mm-new branch of mm.git is not included in linux-next If a few days of testing in mm-new is successful, the patch will me moved into mm.git's mm-unstable branch, which is included in linux-next Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via various branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there most days ------------------------------------------------------ From: SeongJae Park Subject: mm/damon/core: introduce damon_filter Date: Mon, 18 May 2026 16:40:51 -0700 Define a data structure for constructing damon_probe's attributes check, namely damon_filter. It is very similar to damos_filter but works only for monitoring purposes. Also embed that into damon_probe, implement essential handling of the link, with fundamental helpers. Link: https://lore.kernel.org/20260518234119.97569-4-sj@kernel.org Signed-off-by: SeongJae Park Cc: David Hildenbrand Cc: Jonathan Corbet Cc: Liam R. Howlett Cc: Lorenzo Stoakes Cc: "Masami Hiramatsu (Google)" Cc: Mathieu Desnoyers Cc: Michal Hocko Cc: Mike Rapoport Cc: Shuah Khan Cc: Steven Rostedt Cc: Suren Baghdasaryan Cc: Vlastimil Babka Signed-off-by: Andrew Morton --- include/linux/damon.h | 36 ++++++++++++++++++++++++++++++++++++ mm/damon/core.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) --- a/include/linux/damon.h~mm-damon-core-introduce-damon_filter +++ a/include/linux/damon.h @@ -731,11 +731,37 @@ struct damon_intervals_goal { }; /** + * enum damon_filter_type - Type of &struct damon_filter + * + * @DAMON_FILTER_TYPE_ANON: Anonymous pages. + */ +enum damon_filter_type { + DAMON_FILTER_TYPE_ANON, +}; + +/** + * struct damon_filter - DAMON region filter for &struct damon_probe. + * + * @type: Type of the region. + * @matching: Whether this filter is for the type-matching ones. + * @allow: Whether the @type-@matching ones should pass this filter. + * @list: Siblings list. + */ +struct damon_filter { + enum damon_filter_type type; + bool matching; + bool allow; + struct list_head list; +}; + +/** * struct damon_probe - Data region attribute probe. * + * @filters: Filters for assessing if a given region is for this probe. * @list: Siblings list. */ struct damon_probe { + struct list_head filters; struct list_head list; }; @@ -910,6 +936,12 @@ static inline unsigned long damon_sz_reg return r->ar.end - r->ar.start; } +#define damon_for_each_filter(f, p) \ + list_for_each_entry(f, &(p)->filters, list) + +#define damon_for_each_filter_safe(f, next, p) \ + list_for_each_entry_safe(f, next, &(p)->filters, list) + #define damon_for_each_probe(p, ctx) \ list_for_each_entry(p, &(ctx)->probes, list) @@ -957,6 +989,10 @@ static inline unsigned long damon_sz_reg #ifdef CONFIG_DAMON +struct damon_filter *damon_new_filter(enum damon_filter_type type, + bool matching, bool allow); +void damon_add_filter(struct damon_probe *probe, struct damon_filter *f); + struct damon_probe *damon_new_probe(void); void damon_add_probe(struct damon_ctx *ctx, struct damon_probe *probe); --- a/mm/damon/core.c~mm-damon-core-introduce-damon_filter +++ a/mm/damon/core.c @@ -113,6 +113,31 @@ int damon_select_ops(struct damon_ctx *c return err; } +struct damon_filter *damon_new_filter(enum damon_filter_type type, + bool matching, bool allow) +{ + struct damon_filter *filter; + + filter = kmalloc_obj(*filter); + if (!filter) + return NULL; + filter->type = type; + filter->matching = matching; + filter->allow = allow; + INIT_LIST_HEAD(&filter->list); + return filter; +} + +void damon_add_filter(struct damon_probe *p, struct damon_filter *f) +{ + list_add_tail(&f->list, &p->filters); +} + +static void damon_free_filter(struct damon_filter *f) +{ + kfree(f); +} + struct damon_probe *damon_new_probe(void) { struct damon_probe *p; @@ -120,6 +145,7 @@ struct damon_probe *damon_new_probe(void p = kmalloc_obj(*p); if (!p) return NULL; + INIT_LIST_HEAD(&p->filters); INIT_LIST_HEAD(&p->list); return p; } @@ -136,6 +162,10 @@ static void damon_del_probe(struct damon static void damon_free_probe(struct damon_probe *p) { + struct damon_filter *f, *next; + + damon_for_each_filter_safe(f, next, p) + damon_free_filter(f); kfree(p); } _ Patches currently in -mm which might be from sj@kernel.org are mm-damon-sysfs-schemes-delete-tried-region-in-regions_rmdirs.patch mm-damon-core-make-charge_addr_from-aware-of-end-address-exclusivity.patch mm-damon-core-handle-min_region_sz-remaining-quota-as-empty.patch mm-damon-core-merge-regions-after-applying-damos-schemes.patch mm-damon-core-introduce-failed-region-quota-charge-ratio.patch mm-damon-sysfs-schemes-implement-fail_charge_numdenom-files.patch docs-mm-damon-design-document-fail_charge_numdenom.patch docs-admin-guide-mm-damon-usage-document-fail_charge_numdenom-files.patch docs-abi-damon-document-fail_charge_numdenom.patch mm-damon-tests-core-kunit-test-fail_charge_numdenom-committing.patch selftests-damon-_damon_sysfs-support-failed-region-quota-charge-ratio.patch selftests-damon-drgn_dump_damon_status-support-failed-region-quota-charge-ratio.patch selftests-damon-sysfspy-test-failed-region-quota-charge-ratio.patch docs-mm-damon-maintainer-profile-add-ai-review-usage-guideline.patch mm-damon-core-introduce-damon_ctx-paused.patch mm-damon-sysfs-add-pause-file-under-context-dir.patch docs-mm-damon-design-update-for-context-pause-resume-feature.patch docs-admin-guide-mm-damon-usage-update-for-pause-file.patch docs-abi-damon-update-for-pause-sysfs-file.patch mm-damon-tests-core-kunit-test-pause-commitment.patch selftests-damon-_damon_sysfs-support-pause-file-staging.patch selftests-damon-drgn_dump_damon_status-dump-pause.patch selftests-damon-sysfspy-check-pause-on-assert_ctx_committed.patch selftests-damon-sysfspy-pause-damon-before-dumping-status.patch mm-damon-introduce-damon_set_region_system_rams_default.patch mm-damon-reclaim-cover-all-system-rams.patch mm-damon-lru_sort-cover-all-system-rams.patch mm-damon-core-remove-damon_set_region_biggest_system_ram_default.patch mm-damon-stat-use-damon_set_region_system_rams_default.patch docs-admin-guide-mm-damon-reclaim-update-for-entire-memory-monitoring.patch docs-admin-guide-mm-damon-lru_sort-update-for-entire-memory-monitoring.patch docs-admin-guide-mm-damon-usage-mark-scheme-filters-sysfs-dir-as-deprecated.patch docs-abi-damon-mark-schemes-s-filters-deprecated.patch mm-damon-reclaim-add-autotune_monitoring_intervals-parameter.patch docs-admin-guide-mm-damon-reclaim-update-for-autotune_monitoring_intervals.patch mm-damon-stat-add-a-parameter-for-reading-kdamond-pid.patch docs-admin-guide-mm-damon-stat-document-kdamond_pid-parameter.patch mm-damon-core-introduce-struct-damon_probe.patch mm-damon-core-embed-damon_probe-objects-in-damon_ctx.patch mm-damon-core-introduce-damon_filter.patch mm-damon-core-commit-probes.patch mm-damon-core-introduce-damon_region-probe_hits.patch mm-damon-core-introduce-damon_ops-apply_probes.patch mm-damon-core-do-data-attributes-monitoring.patch mm-damon-paddr-support-data-attributes-monitoring.patch mm-damon-sysfs-implement-probes-dir.patch mm-damon-sysfs-implement-probe-dir.patch mm-damon-sysfs-implement-filters-directory.patch mm-damon-sysfs-implement-filter-dir.patch mm-damon-sysfs-implement-filter-dir-files.patch mm-damon-sysfs-setup-probes-on-damon-core-api-parameters.patch mm-damon-sysfs-schemes-implement-tried_regions-r-probes.patch mm-damon-sysfs-schemes-implement-probe-dir.patch mm-damon-sysfs-schemes-implement-probe-hits-file.patch mm-damon-trace-probe_hits.patch selftests-damon-sysfssh-test-probes-dir.patch docs-mm-damon-design-document-data-attributes-monitoring.patch docs-admin-guide-mm-damon-usage-document-data-attributes-monitoring.patch mm-damon-core-introduce-damon_filter_type_memcg.patch mm-damon-paddr-support-damon_filter_type_memcg.patch mm-damon-sysfs-add-filters-f-path-file.patch mm-damon-sysfs-schemes-move-memcg_path_to_id-to-sysfs-common.patch mm-damon-sysfs-setup-damon_filter-memcg_id-from-path.patch docs-mm-damon-design-update-for-memcg-damon-filter.patch docs-admin-guide-mm-damon-usage-update-for-memcg-damon-filter.patch