From: Mian Yousaf Kaukab <ykaukab@suse.de>
To: linux-arm-kernel@lists.infradead.org, mathieu.poirier@linaro.org
Cc: linux-kernel@vger.kernel.org, paul.gortmaker@windriver.com,
suzuki.poulose@arm.com, alexander.shishkin@linux.intel.com,
Mian Yousaf Kaukab <ykaukab@suse.de>
Subject: [PATCH RFC 08/15] coresight: tmc-etr: add function to register catu ops
Date: Fri, 17 Jan 2020 15:40:03 +0100 [thread overview]
Message-ID: <20200117144010.11149-9-ykaukab@suse.de> (raw)
In-Reply-To: <20200117144010.11149-1-ykaukab@suse.de>
Make etr_catu_buf_ops static. Instead of directly accessing it in
etr_buf_ops[], add a function to let catu driver register the ops at
runtime. Break circular dependency between tmc-etr and catu drivers.
Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de>
---
drivers/hwtracing/coresight/coresight-catu.c | 4 +++-
drivers/hwtracing/coresight/coresight-catu.h | 2 --
drivers/hwtracing/coresight/coresight-tmc-etr.c | 17 +++++++++++++++--
drivers/hwtracing/coresight/coresight-tmc.h | 3 +++
4 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-catu.c b/drivers/hwtracing/coresight/coresight-catu.c
index 6fc76b776744..6c77ccc04842 100644
--- a/drivers/hwtracing/coresight/coresight-catu.c
+++ b/drivers/hwtracing/coresight/coresight-catu.c
@@ -359,7 +359,7 @@ static int catu_alloc_etr_buf(struct tmc_drvdata *tmc_drvdata,
return 0;
}
-const struct etr_buf_operations etr_catu_buf_ops = {
+static const struct etr_buf_operations etr_catu_buf_ops = {
.alloc = catu_alloc_etr_buf,
.free = catu_free_etr_buf,
.sync = catu_sync_etr_buf,
@@ -559,6 +559,8 @@ static int catu_probe(struct amba_device *adev, const struct amba_id *id)
catu_desc.subtype.helper_subtype = CORESIGHT_DEV_SUBTYPE_HELPER_CATU;
catu_desc.ops = &catu_ops;
+ tmc_etr_set_catu_ops(&etr_catu_buf_ops);
+
drvdata->csdev = coresight_register(&catu_desc);
if (IS_ERR(drvdata->csdev))
ret = PTR_ERR(drvdata->csdev);
diff --git a/drivers/hwtracing/coresight/coresight-catu.h b/drivers/hwtracing/coresight/coresight-catu.h
index 80ceee3c739c..6160c2d75a56 100644
--- a/drivers/hwtracing/coresight/coresight-catu.h
+++ b/drivers/hwtracing/coresight/coresight-catu.h
@@ -108,6 +108,4 @@ static inline bool coresight_is_catu_device(struct coresight_device *csdev)
return true;
}
-extern const struct etr_buf_operations etr_catu_buf_ops;
-
#endif
diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
index 625882bc8b08..5b2a515af1ae 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
@@ -788,10 +788,23 @@ static inline void tmc_etr_disable_catu(struct tmc_drvdata *drvdata)
static const struct etr_buf_operations *etr_buf_ops[] = {
[ETR_MODE_FLAT] = &etr_flat_buf_ops,
[ETR_MODE_ETR_SG] = &etr_sg_buf_ops,
- [ETR_MODE_CATU] = IS_ENABLED(CONFIG_CORESIGHT_CATU)
- ? &etr_catu_buf_ops : NULL,
+ [ETR_MODE_CATU] = NULL,
};
+void tmc_etr_set_catu_ops(const struct etr_buf_operations *catu)
+{
+ etr_buf_ops[ETR_MODE_CATU] = catu;
+}
+EXPORT_SYMBOL_GPL(tmc_etr_set_catu_ops);
+
+void tmc_etr_remove_catu_ops(void)
+{
+ etr_buf_ops[ETR_MODE_CATU] = NULL;
+ /* TODO: cleanup old etr_buf->ops and anything inflight */
+ wmb();
+}
+EXPORT_SYMBOL_GPL(tmc_etr_remove_catu_ops);
+
static inline int tmc_etr_mode_alloc_buf(int mode,
struct tmc_drvdata *drvdata,
struct etr_buf *etr_buf, int node,
diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h
index 71de978575f3..db431e230a40 100644
--- a/drivers/hwtracing/coresight/coresight-tmc.h
+++ b/drivers/hwtracing/coresight/coresight-tmc.h
@@ -325,4 +325,7 @@ tmc_sg_table_buf_size(struct tmc_sg_table *sg_table)
struct coresight_device *tmc_etr_get_catu_device(struct tmc_drvdata *drvdata);
+void tmc_etr_set_catu_ops(const struct etr_buf_operations *catu);
+void tmc_etr_remove_catu_ops(void);
+
#endif
--
2.16.4
next prev parent reply other threads:[~2020-01-17 14:39 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-17 14:39 [PATCH RFC 00/15] coresight: make drivers modular Mian Yousaf Kaukab
2020-01-17 14:39 ` [PATCH RFC 01/15] Revert "drivers/hwtracing: make coresight-* explicitly non-modular" Mian Yousaf Kaukab
2020-01-17 14:39 ` [PATCH RFC 02/15] coresight: remove multiple init calls from funnel driver Mian Yousaf Kaukab
2020-01-17 14:39 ` [PATCH RFC 03/15] coresight: remove multiple init calls from replicator driver Mian Yousaf Kaukab
2020-01-17 14:39 ` [PATCH RFC 04/15] coresight: make API private Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 05/15] coresight: rename coresight.c to coresight-bus.c Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 06/15] coresight: combine bus and PMU init calls Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 07/15] coresight: Makefile: regroup object files Mian Yousaf Kaukab
2020-01-17 14:40 ` Mian Yousaf Kaukab [this message]
2020-01-17 14:40 ` [PATCH RFC 09/15] coresight: etm-perf: remove unnecessary configuration check Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 10/15] coresight: export global symbols Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 11/15] coresight: add coresight prefix to barrier_pkt Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 12/15] coresight: use IS_ENABLED macro for configuration symbols Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 13/15] coresight: Kconfig: make all configurations tristate Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 14/15] arm64: defconfig: enable coresight Mian Yousaf Kaukab
2020-01-17 14:40 ` [PATCH RFC 15/15] arm: config: enable coresight in v5 and v7 defconfigs Mian Yousaf Kaukab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200117144010.11149-9-ykaukab@suse.de \
--to=ykaukab@suse.de \
--cc=alexander.shishkin@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=paul.gortmaker@windriver.com \
--cc=suzuki.poulose@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).