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@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