linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Add trace events for SD registers.
@ 2019-04-16 18:32 Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 1/4] mmc: core: Add trace event for SD SCR response Raul E Rangel
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Raul E Rangel @ 2019-04-16 18:32 UTC (permalink / raw)
  To: linux-mmc, linux-trace-devel
  Cc: djkurtz, zwisler, Raul E Rangel, Steven Rostedt, hongjiefang,
	Jennifer Dahm, Ingo Molnar, linux-kernel, Shawn Lin,
	Kyle Roeschley, Avri Altman, Simon Horman, Ulf Hansson

I am not able to make a single event class for all these registers. They
all have different struct sizes and different printf formats.

Thanks for the reviews!

Changes in v2:
- Made trace_sd_scr print out flags.
- Add BUILD_BUG_ON to make sure tracing stays in sync with structs.
- memcpy using sizeof(__entry->raw)

Raul E Rangel (4):
  mmc: core: Add trace event for SD SCR response
  mmc: core: Add trace event for SD SSR response
  mmc: core: Add trace event for SD OCR response
  mmc: core: Add trace event for CSD response

 drivers/mmc/core/mmc.c     |   4 +
 drivers/mmc/core/sd.c      |  10 ++
 drivers/mmc/core/sd_ops.c  |   6 ++
 include/trace/events/mmc.h | 204 +++++++++++++++++++++++++++++++++++++
 4 files changed, 224 insertions(+)

-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/4] mmc: core: Add trace event for SD SCR response
  2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
@ 2019-04-16 18:32 ` Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 2/4] mmc: core: Add trace event for SD SSR response Raul E Rangel
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Raul E Rangel @ 2019-04-16 18:32 UTC (permalink / raw)
  To: linux-mmc, linux-trace-devel
  Cc: djkurtz, zwisler, Raul E Rangel, Steven Rostedt, hongjiefang,
	Ingo Molnar, linux-kernel, Shawn Lin, Kyle Roeschley,
	Avri Altman, Ulf Hansson

Example:
sd_scr: mmc0: version: 2, spec3: 1, width: [1-BIT | 4-BIT], cmds: [], raw: {0x2b58000,0x0} */

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
---

 drivers/mmc/core/sd.c      |  6 +++++
 include/trace/events/mmc.h | 51 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+)

diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 265e1aeeb9d8..f1772972d6a3 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -21,6 +21,8 @@
 #include <linux/mmc/mmc.h>
 #include <linux/mmc/sd.h>
 
+#include <trace/events/mmc.h>
+
 #include "core.h"
 #include "card.h"
 #include "host.h"
@@ -200,6 +202,7 @@ static int mmc_decode_scr(struct mmc_card *card)
 	if (scr_struct != 0) {
 		pr_err("%s: unrecognised SCR structure version %d\n",
 			mmc_hostname(card->host), scr_struct);
+		trace_sd_scr(card, NULL);
 		return -EINVAL;
 	}
 
@@ -221,6 +224,9 @@ static int mmc_decode_scr(struct mmc_card *card)
 
 	if (scr->sda_spec3)
 		scr->cmds = UNSTUFF_BITS(resp, 32, 2);
+
+	trace_sd_scr(card, scr);
+
 	return 0;
 }
 
diff --git a/include/trace/events/mmc.h b/include/trace/events/mmc.h
index 7b706ff21335..9761d3db16db 100644
--- a/include/trace/events/mmc.h
+++ b/include/trace/events/mmc.h
@@ -10,6 +10,57 @@
 #include <linux/mmc/host.h>
 #include <linux/tracepoint.h>
 
+#define SD_SCR_WIDTH_FLAGS		\
+	{SD_SCR_BUS_WIDTH_1, "1-BIT"},	\
+	{SD_SCR_BUS_WIDTH_4, "4-BIT"}
+
+#define SD_SCR_CMD_FLAGS		\
+	{SD_SCR_CMD20_SUPPORT, "CMD20"},\
+	{SD_SCR_CMD23_SUPPORT, "CMD23"}
+
+TRACE_EVENT(sd_scr,
+
+	TP_PROTO(struct mmc_card *card, struct sd_scr *scr),
+
+	TP_ARGS(card, scr),
+
+	TP_STRUCT__entry(
+		__array(u32,			raw,	2)
+		__field(unsigned char,		sda_vsn)
+		__field(unsigned char,		sda_spec3)
+		__field(unsigned char,		bus_widths)
+		__field(unsigned char,		cmds)
+		__string(name,			mmc_hostname(card->host))
+	),
+
+	TP_fast_assign(
+		BUILD_BUG_ON(sizeof(card->raw_scr) != sizeof(__entry->raw));
+		memcpy(__entry->raw, card->raw_scr, sizeof(__entry->raw));
+		if (scr) {
+			__entry->sda_vsn = scr->sda_vsn;
+			__entry->sda_spec3 = scr->sda_spec3;
+			__entry->bus_widths = scr->bus_widths;
+			__entry->cmds = scr->cmds;
+		} else {
+			__entry->sda_vsn = 0;
+			__entry->sda_spec3 = 0;
+			__entry->bus_widths = 0;
+			__entry->cmds = 0;
+		}
+		__assign_str(name, mmc_hostname(card->host));
+	),
+
+	TP_printk("%s: version: %d, spec3: %d, width: [%s], cmds: [%s], "
+		  "raw: %s",
+		  __get_str(name),
+		  __entry->sda_vsn,
+		  __entry->sda_spec3,
+		  __print_flags(__entry->bus_widths, " | ", SD_SCR_WIDTH_FLAGS),
+		  __print_flags(__entry->cmds, " | ", SD_SCR_CMD_FLAGS),
+		  __print_array(__entry->raw, 2, sizeof(u32))
+	)
+);
+
 TRACE_EVENT(mmc_request_start,
 
 	TP_PROTO(struct mmc_host *host, struct mmc_request *mrq),
-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/4] mmc: core: Add trace event for SD SSR response
  2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 1/4] mmc: core: Add trace event for SD SCR response Raul E Rangel
@ 2019-04-16 18:32 ` Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 3/4] mmc: core: Add trace event for SD OCR response Raul E Rangel
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Raul E Rangel @ 2019-04-16 18:32 UTC (permalink / raw)
  To: linux-mmc, linux-trace-devel
  Cc: djkurtz, zwisler, Raul E Rangel, Steven Rostedt, hongjiefang,
	Ingo Molnar, linux-kernel, Kyle Roeschley, Avri Altman,
	Ulf Hansson

Example:
sd_ssr: mmc0: au: 8192, erase time: 0, erase offset: 0x0, raw: {0x0,0x3000000,0x1019000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
---

 drivers/mmc/core/sd.c      |  2 ++
 include/trace/events/mmc.h | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index f1772972d6a3..908c3087cdcd 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -292,6 +292,8 @@ static int mmc_read_ssr(struct mmc_card *card)
 	card->erase_arg = (card->scr.sda_specx && discard_support) ?
 			    SD_DISCARD_ARG : SD_ERASE_ARG;
 
+	trace_sd_ssr(card);
+
 	return 0;
 }
 
diff --git a/include/trace/events/mmc.h b/include/trace/events/mmc.h
index 9761d3db16db..463cf318d762 100644
--- a/include/trace/events/mmc.h
+++ b/include/trace/events/mmc.h
@@ -61,6 +61,38 @@ TRACE_EVENT(sd_scr,
 	)
 );
 
+TRACE_EVENT(sd_ssr,
+
+	TP_PROTO(struct mmc_card *card),
+
+	TP_ARGS(card),
+
+	TP_STRUCT__entry(
+		__array(u32,			raw,	16)
+		__field(unsigned int,		au)
+		__field(unsigned int,		erase_timeout)
+		__field(unsigned int,		erase_offset)
+		__string(name,			mmc_hostname(card->host))
+	),
+
+	TP_fast_assign(
+		BUILD_BUG_ON(sizeof(card->raw_ssr) != sizeof(__entry->raw));
+		memcpy(__entry->raw, card->raw_ssr, sizeof(__entry->raw));
+		__entry->au = card->ssr.au;
+		__entry->erase_timeout = card->ssr.erase_timeout;
+		__entry->erase_offset = card->ssr.erase_offset;
+		__assign_str(name, mmc_hostname(card->host));
+	),
+
+	TP_printk("%s: au: %d, erase time: %d, erase offset: %#x, raw: %s",
+		  __get_str(name),
+		  __entry->au,
+		  __entry->erase_timeout,
+		  __entry->erase_offset,
+		  __print_array(__entry->raw, 16, sizeof(u32))
+	)
+);
+
 TRACE_EVENT(mmc_request_start,
 
 	TP_PROTO(struct mmc_host *host, struct mmc_request *mrq),
-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/4] mmc: core: Add trace event for SD OCR response
  2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 1/4] mmc: core: Add trace event for SD SCR response Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 2/4] mmc: core: Add trace event for SD SSR response Raul E Rangel
@ 2019-04-16 18:32 ` Raul E Rangel
  2019-04-16 18:32 ` [PATCH v2 4/4] mmc: core: Add trace event for CSD response Raul E Rangel
  2019-04-23  6:29 ` [PATCH v2 0/4] Add trace events for SD registers Ulf Hansson
  4 siblings, 0 replies; 8+ messages in thread
From: Raul E Rangel @ 2019-04-16 18:32 UTC (permalink / raw)
  To: linux-mmc, linux-trace-devel
  Cc: djkurtz, zwisler, Raul E Rangel, Steven Rostedt, Ingo Molnar,
	linux-kernel, Ulf Hansson

Example:
sd_ocr_request: mmc0: 0x0 []
sd_ocr_request: mmc0: 0x51200000 [SDHC or SDXC Supported (HCS) | Maximum Performance (XPC) | Switch to 1.8V (S18R) | 3.3 ~ 3.4]
sd_ocr_response: mmc0: 0xff8000 [2.7 ~ 2.8 | 2.8 ~ 2.9 | 2.9 ~ 3.0 | 3.0 ~ 3.1 | 3.1 ~ 3.2 | 3.2 ~ 3.3 | 3.3 ~ 3.4 | 3.4 ~ 3.5 | 3.5 ~ 3.6]

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
---

 drivers/mmc/core/sd_ops.c  |  6 +++
 include/trace/events/mmc.h | 92 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 98 insertions(+)

diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c
index 0bb0b8419016..4cf0f040f896 100644
--- a/drivers/mmc/core/sd_ops.c
+++ b/drivers/mmc/core/sd_ops.c
@@ -19,6 +19,8 @@
 #include <linux/mmc/mmc.h>
 #include <linux/mmc/sd.h>
 
+#include <trace/events/mmc.h>
+
 #include "core.h"
 #include "sd_ops.h"
 
@@ -130,11 +132,15 @@ int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)
 		cmd.arg = ocr;
 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R3 | MMC_CMD_BCR;
 
+	trace_sd_ocr_request(host, ocr);
+
 	for (i = 100; i; i--) {
 		err = mmc_wait_for_app_cmd(host, NULL, &cmd);
 		if (err)
 			break;
 
+		trace_sd_ocr_response(host, cmd.resp[0]);
+
 		/* if we're just probing, do a single pass */
 		if (ocr == 0)
 			break;
diff --git a/include/trace/events/mmc.h b/include/trace/events/mmc.h
index 463cf318d762..8d97810221cd 100644
--- a/include/trace/events/mmc.h
+++ b/include/trace/events/mmc.h
@@ -10,6 +10,98 @@
 #include <linux/mmc/host.h>
 #include <linux/tracepoint.h>
 
+
+#define SD_OCR_REQUEST \
+	{SD_OCR_CCS, "SDHC or SDXC Supported (HCS)"}, \
+	{SD_OCR_XPC, "Maximum Performance (XPC)"}, \
+	{SD_ROCR_S18A, "Switch to 1.8V (S18R)"}, \
+	{MMC_VDD_165_195, "1.65 - 1.95"}, \
+	{MMC_VDD_20_21, "2.0 ~ 2.1"}, \
+	{MMC_VDD_21_22, "2.1 ~ 2.2"}, \
+	{MMC_VDD_22_23, "2.2 ~ 2.3"}, \
+	{MMC_VDD_23_24, "2.3 ~ 2.4"}, \
+	{MMC_VDD_24_25, "2.4 ~ 2.5"}, \
+	{MMC_VDD_25_26, "2.5 ~ 2.6"}, \
+	{MMC_VDD_26_27, "2.6 ~ 2.7"}, \
+	{MMC_VDD_27_28, "2.7 ~ 2.8"}, \
+	{MMC_VDD_28_29, "2.8 ~ 2.9"}, \
+	{MMC_VDD_29_30, "2.9 ~ 3.0"}, \
+	{MMC_VDD_30_31, "3.0 ~ 3.1"}, \
+	{MMC_VDD_31_32, "3.1 ~ 3.2"}, \
+	{MMC_VDD_32_33, "3.2 ~ 3.3"}, \
+	{MMC_VDD_33_34, "3.3 ~ 3.4"}, \
+	{MMC_VDD_34_35, "3.4 ~ 3.5"}, \
+	{MMC_VDD_35_36, "3.5 ~ 3.6"} \
+
+TRACE_EVENT(sd_ocr_request,
+
+	TP_PROTO(struct mmc_host *host, u32 ocr),
+
+	TP_ARGS(host, ocr),
+
+	TP_STRUCT__entry(
+		__field(u32,			ocr)
+		__string(name,			mmc_hostname(host))
+	),
+
+	TP_fast_assign(
+		__entry->ocr = ocr;
+		__assign_str(name, mmc_hostname(host));
+	),
+
+	TP_printk("%s: %#x [%s]",
+		  __get_str(name),
+		  __entry->ocr,
+		  __print_flags(__entry->ocr, " | ", SD_OCR_REQUEST)
+	)
+);
+
+#define SD_OCR_RESPONSE \
+	{MMC_CARD_BUSY, "Ready"}, \
+	{SD_OCR_CCS, "SDHC or SDXC (CCS)"}, \
+	{(1<<29), "UHS-II Card"}, \
+	{SD_ROCR_S18A, "1.8V Accepted (S18A)"}, \
+	{MMC_VDD_165_195, "1.65 - 1.95"}, \
+	{MMC_VDD_20_21, "2.0 ~ 2.1"}, \
+	{MMC_VDD_21_22, "2.1 ~ 2.2"}, \
+	{MMC_VDD_22_23, "2.2 ~ 2.3"}, \
+	{MMC_VDD_23_24, "2.3 ~ 2.4"}, \
+	{MMC_VDD_24_25, "2.4 ~ 2.5"}, \
+	{MMC_VDD_25_26, "2.5 ~ 2.6"}, \
+	{MMC_VDD_26_27, "2.6 ~ 2.7"}, \
+	{MMC_VDD_27_28, "2.7 ~ 2.8"}, \
+	{MMC_VDD_28_29, "2.8 ~ 2.9"}, \
+	{MMC_VDD_29_30, "2.9 ~ 3.0"}, \
+	{MMC_VDD_30_31, "3.0 ~ 3.1"}, \
+	{MMC_VDD_31_32, "3.1 ~ 3.2"}, \
+	{MMC_VDD_32_33, "3.2 ~ 3.3"}, \
+	{MMC_VDD_33_34, "3.3 ~ 3.4"}, \
+	{MMC_VDD_34_35, "3.4 ~ 3.5"}, \
+	{MMC_VDD_35_36, "3.5 ~ 3.6"}
+
+TRACE_EVENT(sd_ocr_response,
+
+	TP_PROTO(struct mmc_host *host, u32 ocr),
+
+	TP_ARGS(host, ocr),
+
+	TP_STRUCT__entry(
+		__field(u32,			ocr)
+		__string(name,			mmc_hostname(host))
+	),
+
+	TP_fast_assign(
+		__entry->ocr = ocr;
+		__assign_str(name, mmc_hostname(host));
+	),
+
+	TP_printk("%s: %#x [%s]",
+		  __get_str(name),
+		  __entry->ocr,
+		  __print_flags(__entry->ocr, " | ", SD_OCR_RESPONSE)
+	)
+);
+
 #define SD_SCR_WIDTH_FLAGS		\
 	{SD_SCR_BUS_WIDTH_1, "1-BIT"},	\
 	{SD_SCR_BUS_WIDTH_4, "4-BIT"}
-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 4/4] mmc: core: Add trace event for CSD response
  2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
                   ` (2 preceding siblings ...)
  2019-04-16 18:32 ` [PATCH v2 3/4] mmc: core: Add trace event for SD OCR response Raul E Rangel
@ 2019-04-16 18:32 ` Raul E Rangel
  2019-04-23  6:29 ` [PATCH v2 0/4] Add trace events for SD registers Ulf Hansson
  4 siblings, 0 replies; 8+ messages in thread
From: Raul E Rangel @ 2019-04-16 18:32 UTC (permalink / raw)
  To: linux-mmc, linux-trace-devel
  Cc: djkurtz, zwisler, Raul E Rangel, Steven Rostedt, hongjiefang,
	Jennifer Dahm, linux-kernel, Shawn Lin, Kyle Roeschley,
	Ingo Molnar, Avri Altman, Ulf Hansson, Simon Horman

Example:
mmc_csd: mmc0: struct: 0, cmdclass: 0x5b5, raw: {0x400e0032,0x5b590000,0x3b4b7f80,0xa404000}

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
---

 drivers/mmc/core/mmc.c     |  4 ++++
 drivers/mmc/core/sd.c      |  2 ++
 include/trace/events/mmc.h | 29 +++++++++++++++++++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 3e786ba204c3..46ce894f7c03 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -20,6 +20,8 @@
 #include <linux/mmc/card.h>
 #include <linux/mmc/mmc.h>
 
+#include <trace/events/mmc.h>
+
 #include "core.h"
 #include "card.h"
 #include "host.h"
@@ -182,6 +184,8 @@ static int mmc_decode_csd(struct mmc_card *card)
 		csd->erase_size <<= csd->write_blkbits - 9;
 	}
 
+	trace_mmc_csd(card);
+
 	return 0;
 }
 
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 908c3087cdcd..3b2e09fa72c5 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -183,6 +183,8 @@ static int mmc_decode_csd(struct mmc_card *card)
 
 	card->erase_size = csd->erase_size;
 
+	trace_mmc_csd(card);
+
 	return 0;
 }
 
diff --git a/include/trace/events/mmc.h b/include/trace/events/mmc.h
index 8d97810221cd..46fd918bcae3 100644
--- a/include/trace/events/mmc.h
+++ b/include/trace/events/mmc.h
@@ -185,6 +185,35 @@ TRACE_EVENT(sd_ssr,
 	)
 );
 
+TRACE_EVENT(mmc_csd,
+
+	TP_PROTO(struct mmc_card *card),
+
+	TP_ARGS(card),
+
+	TP_STRUCT__entry(
+		__array(u32,			raw,	4)
+		__field(unsigned char,		structure)
+		__field(unsigned short,		cmdclass)
+		__string(name,			mmc_hostname(card->host))
+	),
+
+	TP_fast_assign(
+		BUILD_BUG_ON(sizeof(card->raw_csd) != sizeof(__entry->raw));
+		memcpy(__entry->raw, card->raw_csd, sizeof(__entry->raw));
+		__entry->structure = card->csd.structure;
+		__entry->cmdclass = card->csd.cmdclass;
+		__assign_str(name, mmc_hostname(card->host));
+	),
+
+	TP_printk("%s: struct: %d, cmdclass: %#x, raw: %s",
+		  __get_str(name),
+		  __entry->structure,
+		  __entry->cmdclass,
+		  __print_array(__entry->raw, 4, sizeof(u32))
+	)
+);
+
 TRACE_EVENT(mmc_request_start,
 
 	TP_PROTO(struct mmc_host *host, struct mmc_request *mrq),
-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/4] Add trace events for SD registers.
  2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
                   ` (3 preceding siblings ...)
  2019-04-16 18:32 ` [PATCH v2 4/4] mmc: core: Add trace event for CSD response Raul E Rangel
@ 2019-04-23  6:29 ` Ulf Hansson
  2019-04-24 15:31   ` Raul Rangel
  4 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2019-04-23  6:29 UTC (permalink / raw)
  To: Raul E Rangel
  Cc: linux-mmc, linux-trace-devel, Daniel Kurtz, zwisler,
	Steven Rostedt, hongjiefang, Jennifer Dahm, Ingo Molnar,
	Linux Kernel Mailing List, Shawn Lin, Kyle Roeschley,
	Avri Altman, Simon Horman

On Tue, 16 Apr 2019 at 20:33, Raul E Rangel <rrangel@chromium.org> wrote:
>
> I am not able to make a single event class for all these registers. They
> all have different struct sizes and different printf formats.
>
> Thanks for the reviews!
>
> Changes in v2:
> - Made trace_sd_scr print out flags.
> - Add BUILD_BUG_ON to make sure tracing stays in sync with structs.
> - memcpy using sizeof(__entry->raw)
>
> Raul E Rangel (4):
>   mmc: core: Add trace event for SD SCR response
>   mmc: core: Add trace event for SD SSR response
>   mmc: core: Add trace event for SD OCR response
>   mmc: core: Add trace event for CSD response
>
>  drivers/mmc/core/mmc.c     |   4 +
>  drivers/mmc/core/sd.c      |  10 ++
>  drivers/mmc/core/sd_ops.c  |   6 ++
>  include/trace/events/mmc.h | 204 +++++++++++++++++++++++++++++++++++++
>  4 files changed, 224 insertions(+)
>
> --
> 2.21.0.392.gf8f6787159e-goog
>

Why do you need this? We already have these card registers reflected
though sysfs files, isn't that sufficient?

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/4] Add trace events for SD registers.
  2019-04-23  6:29 ` [PATCH v2 0/4] Add trace events for SD registers Ulf Hansson
@ 2019-04-24 15:31   ` Raul Rangel
  2019-04-29  9:57     ` Ulf Hansson
  0 siblings, 1 reply; 8+ messages in thread
From: Raul Rangel @ 2019-04-24 15:31 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: linux-mmc, linux-trace-devel, Daniel Kurtz, zwisler,
	Steven Rostedt, hongjiefang, Jennifer Dahm, Ingo Molnar,
	Linux Kernel Mailing List, Shawn Lin, Kyle Roeschley,
	Avri Altman, Simon Horman, Raul Rangel

On Tue, Apr 23, 2019 at 08:29:15AM +0200, Ulf Hansson wrote:
> On Tue, 16 Apr 2019 at 20:33, Raul E Rangel <rrangel@chromium.org> wrote:
> >
> > I am not able to make a single event class for all these registers. They
> > all have different struct sizes and different printf formats.
> >
> > Thanks for the reviews!
> >
> > Changes in v2:
> > - Made trace_sd_scr print out flags.
> > - Add BUILD_BUG_ON to make sure tracing stays in sync with structs.
> > - memcpy using sizeof(__entry->raw)
> >
> > Raul E Rangel (4):
> >   mmc: core: Add trace event for SD SCR response
> >   mmc: core: Add trace event for SD SSR response
> >   mmc: core: Add trace event for SD OCR response
> >   mmc: core: Add trace event for CSD response
> >
> >  drivers/mmc/core/mmc.c     |   4 +
> >  drivers/mmc/core/sd.c      |  10 ++
> >  drivers/mmc/core/sd_ops.c  |   6 ++
> >  include/trace/events/mmc.h | 204 +++++++++++++++++++++++++++++++++++++
> >  4 files changed, 224 insertions(+)
> >
> > --
> > 2.21.0.392.gf8f6787159e-goog
> >
> 
> Why do you need this? We already have these card registers reflected
> though sysfs files, isn't that sufficient?
> 
I was not actually aware that the registers were exposed via sysfs. I
was debugging a problem where the host controller was returning all
zeros when reading from the card. I wasn't aware that it was returning
all zeros until I added tracing. It made it quite easy to diagnose the
problem by just diffing the two traces.

Also if the card fails to mount because the data is invalid, the
registers would not be exposed via sysfs. So tracing makes gives us an
easy way to debug these types of failures.

Thanks,
Raul
> Kind regards
> Uffe

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/4] Add trace events for SD registers.
  2019-04-24 15:31   ` Raul Rangel
@ 2019-04-29  9:57     ` Ulf Hansson
  0 siblings, 0 replies; 8+ messages in thread
From: Ulf Hansson @ 2019-04-29  9:57 UTC (permalink / raw)
  To: Raul Rangel
  Cc: linux-mmc, linux-trace-devel, Daniel Kurtz, zwisler,
	Steven Rostedt, hongjiefang, Jennifer Dahm, Ingo Molnar,
	Linux Kernel Mailing List, Shawn Lin, Kyle Roeschley,
	Avri Altman, Simon Horman

On Wed, 24 Apr 2019 at 17:31, Raul Rangel <rrangel@chromium.org> wrote:
>
> On Tue, Apr 23, 2019 at 08:29:15AM +0200, Ulf Hansson wrote:
> > On Tue, 16 Apr 2019 at 20:33, Raul E Rangel <rrangel@chromium.org> wrote:
> > >
> > > I am not able to make a single event class for all these registers. They
> > > all have different struct sizes and different printf formats.
> > >
> > > Thanks for the reviews!
> > >
> > > Changes in v2:
> > > - Made trace_sd_scr print out flags.
> > > - Add BUILD_BUG_ON to make sure tracing stays in sync with structs.
> > > - memcpy using sizeof(__entry->raw)
> > >
> > > Raul E Rangel (4):
> > >   mmc: core: Add trace event for SD SCR response
> > >   mmc: core: Add trace event for SD SSR response
> > >   mmc: core: Add trace event for SD OCR response
> > >   mmc: core: Add trace event for CSD response
> > >
> > >  drivers/mmc/core/mmc.c     |   4 +
> > >  drivers/mmc/core/sd.c      |  10 ++
> > >  drivers/mmc/core/sd_ops.c  |   6 ++
> > >  include/trace/events/mmc.h | 204 +++++++++++++++++++++++++++++++++++++
> > >  4 files changed, 224 insertions(+)
> > >
> > > --
> > > 2.21.0.392.gf8f6787159e-goog
> > >
> >
> > Why do you need this? We already have these card registers reflected
> > though sysfs files, isn't that sufficient?
> >
> I was not actually aware that the registers were exposed via sysfs. I
> was debugging a problem where the host controller was returning all
> zeros when reading from the card. I wasn't aware that it was returning
> all zeros until I added tracing. It made it quite easy to diagnose the
> problem by just diffing the two traces.

This sounds like a quite an unusual problem, and I don't think having
the buffers printed via tracing is worth it.

Moreover, we already have tracing per command/request (but don't print
the buffers), that should cover most of error cases during init, don't
you think?

[...]

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-04-29  9:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-16 18:32 [PATCH v2 0/4] Add trace events for SD registers Raul E Rangel
2019-04-16 18:32 ` [PATCH v2 1/4] mmc: core: Add trace event for SD SCR response Raul E Rangel
2019-04-16 18:32 ` [PATCH v2 2/4] mmc: core: Add trace event for SD SSR response Raul E Rangel
2019-04-16 18:32 ` [PATCH v2 3/4] mmc: core: Add trace event for SD OCR response Raul E Rangel
2019-04-16 18:32 ` [PATCH v2 4/4] mmc: core: Add trace event for CSD response Raul E Rangel
2019-04-23  6:29 ` [PATCH v2 0/4] Add trace events for SD registers Ulf Hansson
2019-04-24 15:31   ` Raul Rangel
2019-04-29  9:57     ` Ulf Hansson

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).