summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/Kconfig1
-rw-r--r--cmd/Kconfig34
-rw-r--r--include/configs/sandbox.h1
-rw-r--r--scripts/config_whitelist.txt1
4 files changed, 35 insertions, 2 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index a8a13b79f4..c1b47b4eda 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -70,6 +70,7 @@ config SANDBOX
select DM_MMC
imply CMD_HASH
imply CMD_IO
+ imply CMD_IOTRACE
config SH
bool "SuperH architecture"
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 0f54ae35f9..c1e271d329 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -501,6 +501,40 @@ config CMD_IO
checking the state of devices during boot when debugging device
drivers, etc.
+config CMD_IOTRACE
+ bool "iotrace - Support for tracing I/O activity"
+ help
+ Provides an 'iotrace' command which supports recording I/O reads and
+ writes in a trace buffer in memory . It also maintains a checksum
+ of the trace records (even if space is exhausted) so that the
+ sequence of I/O accesses can be verified.
+
+ When debugging drivers it is useful to see what I/O accesses were
+ done and in what order.
+
+ Even if the individual accesses are of little interest it can be
+ useful to verify that the access pattern is consistent each time
+ an operation is performed. In this case a checksum can be used to
+ characterise the operation of a driver. The checksum can be compared
+ across different runs of the operation to verify that the driver is
+ working properly.
+
+ In particular, when performing major refactoring of the driver, where
+ the access pattern should not change, the checksum provides assurance
+ that the refactoring work has not broken the driver.
+
+ This works by sneaking into the io.h heder for an architecture and
+ redirecting I/O accesses through iotrace's tracing mechanism.
+
+ For now no commands are provided to examine the trace buffer. The
+ format is fairly simple, so 'md' is a reasonable substitute.
+
+ Note: The checksum feature is only useful for I/O regions where the
+ contents do not change outside of software control. Where this is not
+ suitable you can fall back to manually comparing the addresses. It
+ might be useful to enhance tracing to only checksum the accesses and
+ not the data read/written.
+
config CMD_LOADB
bool "loadb"
default y
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index be05843de1..905fcd95e9 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -18,7 +18,6 @@
#ifndef CONFIG_SPL_BUILD
#define CONFIG_IO_TRACE
-#define CONFIG_CMD_IOTRACE
#endif
#ifndef CONFIG_TIMER
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 7b9b21b491..5cebf2c0c2 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -383,7 +383,6 @@ CONFIG_CM922T_XA10
CONFIG_CMDLINE_EDITING
CONFIG_CMDLINE_PS_SUPPORT
CONFIG_CMDLINE_TAG
-CONFIG_CMD_IOTRACE
CONFIG_CMD_IRQ
CONFIG_CMD_JFFS2
CONFIG_CMD_KGDB