From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.221.44 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793007926; b=v3u7Ta9L7+2q16TfskLrLzbnLZFVZpnGy4oOwd0zUtOqLapt6SsVzALpdJEiDDm5EGr2 CfYUtIAPp+S2XVCf4y18oex+u/Qwl9n3Vus4Tc0gSNrIxzqfRD5ceSocPgKg1pxdctLpw HfxxXmdM2CV/1TV9a+w6piT5ntM0SG8NnASr6J+LBGBbi8k37i5OUiDWNvfpXC/AteMsz Z4eVE7ArXFoseKvHbQ73AcgJ6GYQrICbvjosLMmRBpLn3KNVxKBYdkeFQfgI9xdWAkJit In11JQK3a2IJuXPNn+Wp7CqY7LDR24nzs+i1rfPyq6KjdBobhCm7VDvTNzI4zK1qD5g== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793007926; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: Message-ID:Date:MIME-Version:User-Agent:Subject:To:Cc:References: Content-Language:From:In-Reply-To:Content-Type: Content-Transfer-Encoding; bh=OxqCDFNDcVrCibYsLviO4SvUbmAgApQDj/6HsjdxJ9k=; b=duqD0mLDxcEkKysqG127PAWJwZ84O8MVKixoE7kW+8JqxK0Fa4Pa98Hf5kZhiNv0lYvp XdLQ/SYEtZ/xg/qcd0SF28ob5egAOevmBXw2U5ZGwwmjLzJxqdq18k3M3LbzPnpZazl99 tHWQXJL44aP2kVfQKaXlSe4jLGvJEvl7gDEnQA3r2fTKpFwyfMxz6KmgrVoVZ7aTk7d2C JjmqDMms/wgRvGW9JTo6ZGsJd3LqrVomEx3wYhC8Nmzv34y1T684s3YjxV7rwAv8b2yE4 fOxn9CkRF2XEmcybSW65hLs5Do8h4ior1vmPV8vauLONlueNgLQs9kXTH9/hZhRgy+Q== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ow3ZlImR; arc=none smtp.remote-ip=209.85.221.44 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0212E606A321 for ; Mon, 26 Oct 2026 09:45:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 0212E606A321 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ow3ZlImR Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-48bbb06e746so1376330f8f.3 for ; Mon, 26 Oct 2026 02:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1793007924; x=1793612724; darn=vger.kernel.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OxqCDFNDcVrCibYsLviO4SvUbmAgApQDj/6HsjdxJ9k=; b=ow3ZlImRoLAIEZneKyfcOu3h6HDCLEChKMiLYOtQqK2HRydILGjO+5CaDdGGn/ToaE PYpyKaIGca/z/yv0rXB0ZK9LmFCc88nBbKAUIhn3P7ZycFuyqgkREWuydPabsd6KBM4V Fkyfah/yPOPOwODiaeGY99ymFoVGGacrgDfDSDV6cvwUYQ4sSlsF/ZQY8r3NaiWr45/R DjYOLvBAkMYrw08wIpzj31JCf+H4V/Mq4seZzf0dIAlHcI6pjcs4rjN3St3ayxBsRql4 oC2CibQXa/oGWHfEZvR4LFlLvMMXkdRacCkPFqQDMUfxrfKuToYGVU6CkBdBXRuPY7bK ucgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793007924; x=1793612724; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OxqCDFNDcVrCibYsLviO4SvUbmAgApQDj/6HsjdxJ9k=; b=JQdOc9VBoIHQUa2Px6lR+H4vgGoZdPISafHYEvi2G+02x9iBTtZ/zEZHyj8tXMrwAF coRTW1URefM4mtqR+VkaSpzWNzsDHGib9P20v0JetKwESUuxRu/gYXwkeEbkUYjazhKd tBbVHQjtgLJfj0WK5uenQdq32nlvVvBff1M/FcKwyfqeklnpmgwpmCo8V4GVq9kuW0i+ VTZuh2GfX/SPIL0TpGwqJJbosKwNwNKAdOhonaSIhd+vmyT1TDMRa75IIdsIDL9X1nZL AMBnKaBjyTULM+ljVRbopH2KmkDcYgTAV0Idj5c+/6RoVywh5xwx3JTrIVjMJEgGZoY3 JM3A== X-Forwarded-Encrypted: i=1; AKwUvBzXFRI98kHc2IhQH74cQMkp/b155hdUNPDEZjuHrbpeBBiXPCGK98r3HhnABy7rI9l3yW/nPehs3gU=@vger.kernel.org X-Gm-Message-State: AFq9FYJ2nyKoufgPjuLQOIEJVGMnGETJwerd5ynCcHxTJ40z5JLXrEbY qCI/m1MsLGyb0KXZN6ok4yO/DOHfF2JrayIs3b5H8FcrRXIz/4iYIf+ehrTyMM8y/Gg= X-Gm-Gg: AYBFou3PvTXo1n8cv57wqsQqdnUeW/0FMwAXpCC/p+kJ0thlKrGren6IRQlqJscqpgF FnFT7KB/OUkjwOFNRzeh3Qyzff7+NteHI+XG/xlC/KZre8Tf2dQ+ByLN+lUzQc20aQ+UkntKF3d +0baMUgpair8ILevH+36POP8FZ86FIgJ06nfOiT6nrXALqtr62Sk3gxgYRxF9sPFFPBpmqYAqzK /nm7lyyMcTqJgjW3O+w7GZsTdlvCXE5/RXxeHKP1QiFsZUkUd362nZyD273J5aliQoPM7yHU9JY u2Z0oBcwQCKgGWjuzSY8fwZewPavpm3Ui+8v1vu1MoVoiLRw+1IP0Be0UDWhao2ZXYTn98VTq15 CH/qv0k/g0gBNNBpA8lUWayx7yHgfRS2HcmMSmIJVYG0puJbMfGItTveH36Q4QPfMGpxC0u0Dxn M/HwF6i4o+ekCefwKdR2i/W3lxfm5w1dmCJXKiDTsDAiu9SUaDOrQPhVs4gm/It2aFhppJPvJoq MKxb3sUJT4XDG8nwz3y3oF1w8XF2DKKgJXjm9gBGZwq1Xlm3a8aie2a4om8 X-Received: by 2002:a5d:4fd0:0:b0:48a:f59f:8b70 with SMTP id ffacd0b85a97d-48e3eb9fc55mr7288327f8f.46.1793007924239; Mon, 26 Oct 2026 02:45:24 -0700 (PDT) Received: from [192.168.1.3] ([37.18.141.193]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48e3ebc3c5bsm16044979f8f.9.2026.10.26.02.45.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Oct 2026 02:45:23 -0700 (PDT) Message-ID: Date: Mon, 26 Oct 2026 09:45:22 +0000 X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 3/7] coresight: syscfg: Match feature capabilities separately from device class To: Amir Ayupov Cc: Will Deacon , Mark Rutland , Greg Kroah-Hartman , Jonathan Corbet , Mathieu Poirier , Randy Dunlap , Shuah Khan , Daniel Pereira , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Leo Yan , Suzuki K Poulose , Mike Leach , Alexander Shishkin References: <6fd94860b3c13c0ddc1a5184d5d9331edc27d9f0.1792989860.git.aaupov@fb.com> Content-Language: en-US From: James Clark In-Reply-To: <6fd94860b3c13c0ddc1a5184d5d9331edc27d9f0.1792989860.git.aaupov@fb.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 26/10/2026 05:48, Amir Ayupov wrote: > A feature loads on a device when the two share any match flag. That works > for device classes, where a feature wants any one of them, but not for > capabilities a device may or may not have: a feature that sets a class > and a capability would still load on a device of that class without the > capability. > > Split the match flags into CS_CFG_MATCH_CLASS_MASK for device classes and > CS_CFG_MATCH_CAP_MASK for capabilities. A feature now loads on a device > that shares one of its classes and has all of its capabilities. Check > this once in cscfg_load_feat_csdev(), which both the feature and the > device registration paths call. No capability flags are defined yet, so > matching is unchanged. > > Assisted-by: Devmate:Opus-5.5 > Signed-off-by: Amir Ayupov > --- > .../hwtracing/coresight/coresight-config.h | 8 ++++ > .../hwtracing/coresight/coresight-syscfg.c | 37 +++++++++++++------ > 2 files changed, 34 insertions(+), 11 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-config.h b/drivers/hwtracing/coresight/coresight-config.h > index ae6295e308131..f04e73b91d9a6 100644 > --- a/drivers/hwtracing/coresight/coresight-config.h > +++ b/drivers/hwtracing/coresight/coresight-config.h > @@ -7,6 +7,7 @@ > #ifndef _CORESIGHT_CORESIGHT_CONFIG_H > #define _CORESIGHT_CORESIGHT_CONFIG_H > > +#include > #include > #include > #include > @@ -30,6 +31,13 @@ > */ > #define CS_CFG_MATCH_CLASS_SRC_ALL 0x0001 /* match any source */ > #define CS_CFG_MATCH_CLASS_SRC_ETM4 0x0002 /* match any ETMv4 device */ > +#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 GENMASK_U32(15, 8) > > /* flags defining device instance matching - used in config match desc data. */ > #define CS_CFG_MATCH_INST_ANY 0x80000000 /* any instance of a class */ > diff --git a/drivers/hwtracing/coresight/coresight-syscfg.c b/drivers/hwtracing/coresight/coresight-syscfg.c > index a816c22c87bc8..3ee104e94a4cd 100644 > --- a/drivers/hwtracing/coresight/coresight-syscfg.c > +++ b/drivers/hwtracing/coresight/coresight-syscfg.c > @@ -171,8 +171,22 @@ cscfg_alloc_csdev_feat(struct coresight_device *csdev, struct cscfg_feature_desc > return feat_csdev; > } > > -/* load one feature into one coresight device */ > +static bool cscfg_match_feat_csdev(u32 feat_flags, u32 csdev_flags) > +{ > + /* The device must be in one of the feature's classes */ > + if (!(feat_flags & csdev_flags & CS_CFG_MATCH_CLASS_MASK)) > + return false; > + > + /* The device must have every capability the feature requires */ > + if (feat_flags & ~csdev_flags & CS_CFG_MATCH_CAP_MASK) > + return false; > + > + return true; > +} > + > +/* Load the feature into the device if it matches, otherwise skip it. */ > static int cscfg_load_feat_csdev(struct coresight_device *csdev, > + u32 match_flags, > struct cscfg_feature_desc *feat_desc, > struct cscfg_csdev_feat_ops *ops) > { > @@ -183,6 +197,9 @@ static int cscfg_load_feat_csdev(struct coresight_device *csdev, > if (!ops->load_feat) > return -EINVAL; > > + if (!cscfg_match_feat_csdev(feat_desc->match_flags, match_flags)) > + return 0; > + > feat_csdev = cscfg_alloc_csdev_feat(csdev, feat_desc); > if (!feat_csdev) > return -ENOMEM; > @@ -212,11 +229,11 @@ static int cscfg_add_feat_to_csdevs(struct cscfg_feature_desc *feat_desc) > int err; > > list_for_each_entry(csdev_item, &cscfg_mgr->csdev_desc_list, item) { > - if (csdev_item->match_flags & feat_desc->match_flags) { > - err = cscfg_load_feat_csdev(csdev_item->csdev, feat_desc, &csdev_item->ops); > - if (err) > - return err; > - } > + err = cscfg_load_feat_csdev(csdev_item->csdev, > + csdev_item->match_flags, feat_desc, > + &csdev_item->ops); > + if (err) > + return err; > } > return 0; > } > @@ -739,11 +756,9 @@ static int cscfg_add_feats_csdev(struct coresight_device *csdev, > return -EINVAL; > > list_for_each_entry(feat_desc, &cscfg_mgr->feat_desc_list, item) { > - if (feat_desc->match_flags & match_flags) { > - err = cscfg_load_feat_csdev(csdev, feat_desc, ops); > - if (err) > - break; > - } > + err = cscfg_load_feat_csdev(csdev, match_flags, feat_desc, ops); > + if (err) > + break; > } > return err; > } Reviewed-by: James Clark