On 18/03/2025 16:21, James Clark wrote:
The self hosted claim tag will be reset on device probe in a later commit. We'll want to do this before coresight_register() is called so won't have a coresight_device and have to use cs_access instead.
Also make them public and create locked and unlocked versions for later use.
Signed-off-by: James Clark james.clark@linaro.org
minor nit:
The restructuring looks a bit confusing. Could we start with :
coresight_{set,clear}_self_claim_tag_unlocked in Patch 1. Rather than rename what we renamed in patch 1 again here.
drivers/hwtracing/coresight/coresight-core.c | 17 +++++++++++++---- include/linux/coresight.h | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c index 3f1c996d668a..9ff601e2415a 100644 --- a/drivers/hwtracing/coresight/coresight-core.c +++ b/drivers/hwtracing/coresight/coresight-core.c @@ -151,12 +151,21 @@ static inline void coresight_set_self_claim_tag(struct coresight_device *csdev) isb(); } -static inline void coresight_clear_self_claim_tag(struct coresight_device *csdev) +void coresight_clear_self_claim_tag(struct csdev_access *csa) {
- csdev_access_relaxed_write32(&csdev->access, CORESIGHT_CLAIM_SELF_HOSTED,
- CS_UNLOCK(csa->base);
This looks to be hard coding MMIO based access ? Should we abstract it based on the csdev_access_** ?
Suzuki
- coresight_clear_self_claim_tag_unlocked(csa);
- CS_LOCK(csa->base);
+} +EXPORT_SYMBOL_GPL(coresight_clear_self_claim_tag);
+void coresight_clear_self_claim_tag_unlocked(struct csdev_access *csa) +{
- csdev_access_relaxed_write32(csa, CORESIGHT_CLAIM_SELF_HOSTED, CORESIGHT_CLAIMCLR); isb(); }
+EXPORT_SYMBOL_GPL(coresight_clear_self_claim_tag_unlocked); /*
- coresight_claim_device_unlocked : Claim the device for self-hosted usage
@@ -180,7 +189,7 @@ int coresight_claim_device_unlocked(struct coresight_device *csdev) if (coresight_is_claimed_self_hosted(csdev)) return 0; /* There was a race setting the tag, clean up and fail */
- coresight_clear_self_claim_tag(csdev);
- coresight_clear_self_claim_tag_unlocked(&csdev->access); return -EBUSY; } EXPORT_SYMBOL_GPL(coresight_claim_device_unlocked);
@@ -211,7 +220,7 @@ void coresight_disclaim_device_unlocked(struct coresight_device *csdev) return; if (coresight_is_claimed_self_hosted(csdev))
coresight_clear_self_claim_tag(csdev);
else /*coresight_clear_self_claim_tag_unlocked(&csdev->access);
- The external agent may have not honoured our claim
diff --git a/include/linux/coresight.h b/include/linux/coresight.h index d79a242b271d..00134a80d358 100644 --- a/include/linux/coresight.h +++ b/include/linux/coresight.h @@ -685,7 +685,8 @@ extern int coresight_timeout_action(struct csdev_access *csa, u32 offset, extern int coresight_claim_device(struct coresight_device *csdev); extern int coresight_claim_device_unlocked(struct coresight_device *csdev);
+void coresight_clear_self_claim_tag(struct csdev_access *csa); +void coresight_clear_self_claim_tag_unlocked(struct csdev_access *csa); extern void coresight_disclaim_device(struct coresight_device *csdev); extern void coresight_disclaim_device_unlocked(struct coresight_device *csdev); extern char *coresight_alloc_device_name(struct coresight_dev_list *devs,