[PATCH v2 5/6] coresight: Add format attribute for setting the timestamp interval

Leo Yan leo.yan at arm.com
Wed Oct 1 06:28:15 PDT 2025


On Wed, Oct 01, 2025 at 01:40:37PM +0100, James Clark wrote:

[...]

> > > @@ -103,6 +111,9 @@ static struct attribute *etm_config_formats_attr[] = {
> > >   	&format_attr_configid.attr,
> > >   	&format_attr_branch_broadcast.attr,
> > >   	&format_attr_cc_threshold.attr,
> > > +#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
> > > +	&format_attr_ts_level.attr,
> > > +#endif
> > 
> > By using .visible() callback for attrs, we can improve a bit code
> > without spreading "#ifdef IS_ENABLED()" in this file. E.g.,
> > 
> >     static umode_t format_attr_is_visible(struct kobject *kobj,
> >                                     struct attribute *attr, int n)
> >     {
> >          struct device *dev = kobj_to_dev(kobj);
> > 
> >          if (attr == &format_attr_ts_level.attr &&
> > 	    !IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X))
> >                  return 0;
> > 
> >          return attr->mode;
> >     }
> > 
> > Otherwise, LGTM:
> > 
> > Reviewed-by: Leo Yan <leo.yan at arm.com>
> > 
> 
> Unfortunately that won't work because you'd have to always include
> coresight-etm4x.h. This file is compiled for both arm32 and arm64 so it
> would break the arm32 build.
> 
> I could define the TTR_CFG_FLD_ts_level_* stuff somewhere else but then it
> becomes messier than just doing the #ifdefs here.

ATTR_CFG_FLD_ts_level_* is only used in coresight-etm4x-core.c, it is not
used in coresight-etm-perf.c. Thus, we don't need to include
coresight-etm4x.h in coresight-etm-perf.c. Do I miss anything?

A similiar case is the attr 'cc_threshold' is only used by ETMv4, it is
exported always. It is not bad for me to always expose these attrs but
in the are ignored in the ETMv3 driver - so we even don't need to
bother adding .visible() callback.

Thanks,
Leo



More information about the linux-arm-kernel mailing list