Re: [RFC PATCH v2.2 01/17] mm/damon/core: introduce DAMON_FILTER_TYPE_PGIDLE_UNSET

SJ Park <[email protected]> Mon, 27 Jul 2026 21:49:58 -0700
Newsgroups dev.linux.lists.damon
Message-ID <[email protected]>
On Tue, 28 Jul 2026 04:23:24 +0000 [email protected] wrote:

> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The newly introduced DAMON_FILTER_TYPE_PGIDLE_UNSET enum is unhandled in the filter matching logic and sysfs interface, leaving the promised functionality completely missing.
> --
> 
> --- Patch [1]: [RFC PATCH v2.2 01/17] mm/damon/core: introduce DAMON_FILTER_TYPE_PGIDLE_UNSET ---
> commit 1ede3c3f87a9caeeb7ad80090cbb84d20b477505
> Author: SJ Park <[email protected]>
> 
> mm/damon/core: introduce DAMON_FILTER_TYPE_PGIDLE_UNSET
>     
> Introduce a new DAMON filter type, pgidle_unset. It will match pages
> that have their PG_Idle flag unset, or the page table accessed bit set.
> 
> > diff --git a/include/linux/damon.h b/include/linux/damon.h
> > index 0c8b7ddef9abb..a8bb9ee6979e3 100644
> > --- a/include/linux/damon.h
> > +++ b/include/linux/damon.h
> > @@ -742,12 +742,14 @@ struct damon_intervals_goal {
> >  /**
> >   * enum damon_filter_type - Type of &struct damon_filter
> >   *
> > - * @DAMON_FILTER_TYPE_ANON:	Anonymous pages.
> > - * @DAMON_FILTER_TYPE_MEMCG:	Specific memcg's pages.
> > + * @DAMON_FILTER_TYPE_ANON:		Anonymous pages.
> > + * @DAMON_FILTER_TYPE_MEMCG:		Specific memcg's pages.
> > + * @DAMON_FILTER_TYPE_PGIDLE_UNSET:	Pgidle is unset.
> >   */
> >  enum damon_filter_type {
> >  	DAMON_FILTER_TYPE_ANON,
> >  	DAMON_FILTER_TYPE_MEMCG,
> > +	DAMON_FILTER_TYPE_PGIDLE_UNSET,
> 
> [Severity: Medium]
> Is the implementation for this new filter type missing from this patch?
> 
> Looking at damon_pa_filter_match() in mm/damon/paddr.c, the switch
> statement evaluating filter types does not appear to handle
> DAMON_FILTER_TYPE_PGIDLE_UNSET. This means it will fall through to the
> default case and fail to implement the promised page matching logic:
> 
> mm/damon/paddr.c:damon_pa_filter_match() {
>     ...
>     switch (filter->type) {
>     case DAMON_FILTER_TYPE_ANON:
>     ...
>     }
> }
> 
> Additionally, it looks like this new filter type is missing from the sysfs 
> name mapping array, damon_sysfs_filter_type_names, in mm/damon/sysfs.c:
> 
> mm/damon/sysfs.c:damon_sysfs_filter_type_names {
>     {
>         .type = DAMON_FILTER_TYPE_ANON,
>         .name = "anon",
>     },
>     ...
> }
> 
> Without this mapping, type_store() will fail with -EINVAL, making it 
> impossible for userspace to configure.
> 
> Will a follow-up patch add the handling logic and sysfs bindings, or should 
> they be included directly in this commit?

A later patch if this series does that.

> 
> >  };
> >  
> >  /**
> 
> -- 
> Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1


Thanks,
SJ