Re: [PATCH v2 2/4] coresight: syscfg: Match feature capabilities separately from device class

From: Amir Ayupov

Date: Sun Oct 25 2026 - 02:22:27 EST


On Wed, 21 Oct 2026 15:39:58 +0100 Leo Yan <leo.yan@xxxxxxx> wrote:

> On Mon, Oct 12, 2026 at 04:05:21PM -0700, Amir Ayupov wrote:
>
> [...]
>
> > --- a/drivers/hwtracing/coresight/coresight-config.h
> > +++ b/drivers/hwtracing/coresight/coresight-config.h
> > @@ -30,6 +30,12 @@
> > #define CS_CFG_MATCH_CLASS_SRC_ALL 0x0001 /* match any source */
> > #define CS_CFG_MATCH_CLASS_SRC_ETM4 0x0002 /* match any ETMv4 device */
>
> It is good to introduce a marco:
>
> #define CS_CFG_MATCH_CLASS_MASK GENMASK_U32(7, 0)
>
> > +/*
> > + * flags defining device capabilities a feature can require. A feature loads on
> > + * a device that matches one of its classes and has all of its capabilities.
> > + */
> > +#define CS_CFG_MATCH_CAP_MASK 0x0000ff00
>
> To make the mask explicitly 32-bit unsigned:
>
> #define CS_CFG_MATCH_CAP_MASK GENMASK_U32(15, 8)
>
Thanks, will apply in v3.

> > +
> > /* flags defining device instance matching - used in config match desc data. */
> > #define CS_CFG_MATCH_INST_ANY 0x80000000 /* any instance of a class */
>
> Not an issue with this patch, but CS_CFG_MATCH_INST_ANY appears to be
> unused and could be removed in a separate cleanup patch.
>
Will drop in a separate patch in v3.

> > diff --git a/drivers/hwtracing/coresight/coresight-syscfg.c b/drivers/hwtracing/coresight/coresight-syscfg.c
> > index a816c22c87bc8..1545d64afec01 100644
> > --- a/drivers/hwtracing/coresight/coresight-syscfg.c
> > +++ b/drivers/hwtracing/coresight/coresight-syscfg.c
> > @@ -172,7 +172,21 @@ cscfg_alloc_csdev_feat(struct coresight_device *csdev, struct cscfg_feature_desc
> > }
> >
> > /* load one feature into one coresight device */
> > +/*
> > + * A feature matches a device that shares one of its class flags and has all of
> > + * the capability flags it requires.
> > + */
> > +static bool cscfg_match_feat_csdev(u32 feat_flags, u32 csdev_flags)
> > +{
> > + u32 caps = feat_flags & CS_CFG_MATCH_CAP_MASK;
> > +
> > + return (feat_flags & csdev_flags & ~CS_CFG_MATCH_CAP_MASK) &&
> > + (csdev_flags & caps) == caps;
>
> For clearer comparison conditions:
>
> /* Class type must be matches */
> if ((feat_flags & CS_CFG_MATCH_CLASS_MASK) !=
> (csdev_flags & CS_CFG_MATCH_CLASS_MASK)
> return false;
>
> /* No required capabilities miss from the device */
> if (feat_flags & ~csdev_flags & CS_CFG_MATCH_CAP_MASK)
> return false;
>
> return true;
>
> Thanks,
> Leo

Yes, that looks cleaner, thanks!

Sent using hkml (https://github.com/sjp38/hackermail)