diff options
-rw-r--r-- | arch/Kconfig | 1 | ||||
-rw-r--r-- | cmd/Kconfig | 34 | ||||
-rw-r--r-- | include/configs/sandbox.h | 1 | ||||
-rw-r--r-- | scripts/config_whitelist.txt | 1 |
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 |