diff mbox series

[2/2] fsi: core: Add trace events for scan and unregister

Message ID 20230412185602.1592629-3-eajames@linux.ibm.com
State New
Headers show
Series fsi: core: Lock scan mutex for master index removal | expand

Commit Message

Eddie James April 12, 2023, 6:56 p.m. UTC
Add more trace events for the scanning and unregistration
functions for debug purposes.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 drivers/fsi/fsi-core.c     |  4 ++++
 include/trace/events/fsi.h | 31 +++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

Comments

Joel Stanley May 31, 2023, 1:52 a.m. UTC | #1
On Wed, 12 Apr 2023 at 18:56, Eddie James <eajames@linux.ibm.com> wrote:
>
> Add more trace events for the scanning and unregistration
> functions for debug purposes.
>
> Signed-off-by: Eddie James <eajames@linux.ibm.com>

Reviewed-by: Joel Stanley <joel@jms.id.au>

> ---
>  drivers/fsi/fsi-core.c     |  4 ++++
>  include/trace/events/fsi.h | 31 +++++++++++++++++++++++++++++++
>  2 files changed, 35 insertions(+)
>
> diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
> index 18d4d68482d7..2dc119ab073c 100644
> --- a/drivers/fsi/fsi-core.c
> +++ b/drivers/fsi/fsi-core.c
> @@ -1220,6 +1220,7 @@ static int fsi_master_scan(struct fsi_master *master)
>  {
>         int link, rc;
>
> +       trace_fsi_master_scan(master, true);
>         for (link = 0; link < master->n_links; link++) {
>                 rc = fsi_master_link_enable(master, link);
>                 if (rc) {
> @@ -1261,6 +1262,7 @@ static int fsi_master_remove_slave(struct device *dev, void *arg)
>
>  static void fsi_master_unscan(struct fsi_master *master)
>  {
> +       trace_fsi_master_scan(master, false);
>         device_for_each_child(&master->dev, NULL, fsi_master_remove_slave);
>  }
>
> @@ -1355,6 +1357,8 @@ EXPORT_SYMBOL_GPL(fsi_master_register);
>  void fsi_master_unregister(struct fsi_master *master)
>  {
>         mutex_lock(&master->scan_lock);
> +       trace_fsi_master_unregister(master);
> +
>         if (master->idx >= 0) {
>                 ida_simple_remove(&master_ida, master->idx);
>                 master->idx = -1;
> diff --git a/include/trace/events/fsi.h b/include/trace/events/fsi.h
> index c9a72e8432b8..5ff15126ad9d 100644
> --- a/include/trace/events/fsi.h
> +++ b/include/trace/events/fsi.h
> @@ -122,6 +122,37 @@ TRACE_EVENT(fsi_master_break,
>         )
>  );
>
> +TRACE_EVENT(fsi_master_scan,
> +       TP_PROTO(const struct fsi_master *master, bool scan),
> +       TP_ARGS(master, scan),
> +       TP_STRUCT__entry(
> +               __field(int,    master_idx)
> +               __field(int,    n_links)
> +               __field(bool,   scan)
> +       ),
> +       TP_fast_assign(
> +               __entry->master_idx = master->idx;
> +               __entry->n_links = master->n_links;
> +               __entry->scan = scan;
> +       ),
> +       TP_printk("fsi%d (%d links) %s", __entry->master_idx, __entry->n_links,
> +                 __entry->scan ? "scan" : "unscan")
> +);
> +
> +TRACE_EVENT(fsi_master_unregister,
> +       TP_PROTO(const struct fsi_master *master),
> +       TP_ARGS(master),
> +       TP_STRUCT__entry(
> +               __field(int,    master_idx)
> +               __field(int,    n_links)
> +       ),
> +       TP_fast_assign(
> +               __entry->master_idx = master->idx;
> +               __entry->n_links = master->n_links;
> +       ),
> +       TP_printk("fsi%d (%d links)", __entry->master_idx, __entry->n_links)
> +);
> +
>  TRACE_EVENT(fsi_slave_init,
>         TP_PROTO(const struct fsi_slave *slave),
>         TP_ARGS(slave),
> --
> 2.31.1
>
diff mbox series

Patch

diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 18d4d68482d7..2dc119ab073c 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -1220,6 +1220,7 @@  static int fsi_master_scan(struct fsi_master *master)
 {
 	int link, rc;
 
+	trace_fsi_master_scan(master, true);
 	for (link = 0; link < master->n_links; link++) {
 		rc = fsi_master_link_enable(master, link);
 		if (rc) {
@@ -1261,6 +1262,7 @@  static int fsi_master_remove_slave(struct device *dev, void *arg)
 
 static void fsi_master_unscan(struct fsi_master *master)
 {
+	trace_fsi_master_scan(master, false);
 	device_for_each_child(&master->dev, NULL, fsi_master_remove_slave);
 }
 
@@ -1355,6 +1357,8 @@  EXPORT_SYMBOL_GPL(fsi_master_register);
 void fsi_master_unregister(struct fsi_master *master)
 {
 	mutex_lock(&master->scan_lock);
+	trace_fsi_master_unregister(master);
+
 	if (master->idx >= 0) {
 		ida_simple_remove(&master_ida, master->idx);
 		master->idx = -1;
diff --git a/include/trace/events/fsi.h b/include/trace/events/fsi.h
index c9a72e8432b8..5ff15126ad9d 100644
--- a/include/trace/events/fsi.h
+++ b/include/trace/events/fsi.h
@@ -122,6 +122,37 @@  TRACE_EVENT(fsi_master_break,
 	)
 );
 
+TRACE_EVENT(fsi_master_scan,
+	TP_PROTO(const struct fsi_master *master, bool scan),
+	TP_ARGS(master, scan),
+	TP_STRUCT__entry(
+		__field(int,	master_idx)
+		__field(int,	n_links)
+		__field(bool,	scan)
+	),
+	TP_fast_assign(
+		__entry->master_idx = master->idx;
+		__entry->n_links = master->n_links;
+		__entry->scan = scan;
+	),
+	TP_printk("fsi%d (%d links) %s", __entry->master_idx, __entry->n_links,
+		  __entry->scan ? "scan" : "unscan")
+);
+
+TRACE_EVENT(fsi_master_unregister,
+	TP_PROTO(const struct fsi_master *master),
+	TP_ARGS(master),
+	TP_STRUCT__entry(
+		__field(int,	master_idx)
+		__field(int,	n_links)
+	),
+	TP_fast_assign(
+		__entry->master_idx = master->idx;
+		__entry->n_links = master->n_links;
+	),
+	TP_printk("fsi%d (%d links)", __entry->master_idx, __entry->n_links)
+);
+
 TRACE_EVENT(fsi_slave_init,
 	TP_PROTO(const struct fsi_slave *slave),
 	TP_ARGS(slave),