aboutsummaryrefslogtreecommitdiff
path: root/hw/sd
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <philmd@linaro.org>2024-06-19 20:26:47 +0200
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2024-07-02 09:19:20 +0200
commitc159de66f29f7f0e6f7739d8722b54e0cb3cb971 (patch)
treefea671bf4ae8c2292ec65b363b975bcb94b4fd00 /hw/sd
parent702ff29c8ff397e6f3aa7e46f30f9ccdd74fb492 (diff)
downloadqemu-c159de66f29f7f0e6f7739d8722b54e0cb3cb971.zip
qemu-c159de66f29f7f0e6f7739d8722b54e0cb3cb971.tar.gz
qemu-c159de66f29f7f0e6f7739d8722b54e0cb3cb971.tar.bz2
hw/sd/sdcard: Trace block offset in READ/WRITE data accesses
Useful to detect out of bound accesses. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Cédric Le Goater <clg@redhat.com> Tested-by: Cédric Le Goater <clg@redhat.com> Message-Id: <20240628070216.92609-5-philmd@linaro.org>
Diffstat (limited to 'hw/sd')
-rw-r--r--hw/sd/sd.c4
-rw-r--r--hw/sd/trace-events4
2 files changed, 4 insertions, 4 deletions
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index aa011fc..bed5966 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1917,7 +1917,7 @@ void sd_write_byte(SDState *sd, uint8_t value)
trace_sdcard_write_data(sd_proto(sd)->name,
sd->last_cmd_name,
- sd->current_cmd, value);
+ sd->current_cmd, sd->data_offset, value);
switch (sd->current_cmd) {
case 24: /* CMD24: WRITE_SINGLE_BLOCK */
sd->data[sd->data_offset ++] = value;
@@ -2073,7 +2073,7 @@ uint8_t sd_read_byte(SDState *sd)
trace_sdcard_read_data(sd_proto(sd)->name,
sd->last_cmd_name,
- sd->current_cmd, io_len);
+ sd->current_cmd, sd->data_offset, io_len);
switch (sd->current_cmd) {
case 6: /* CMD6: SWITCH_FUNCTION */
ret = sd->data[sd->data_offset ++];
diff --git a/hw/sd/trace-events b/hw/sd/trace-events
index 724365e..0eee98a 100644
--- a/hw/sd/trace-events
+++ b/hw/sd/trace-events
@@ -52,8 +52,8 @@ sdcard_lock(void) ""
sdcard_unlock(void) ""
sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
-sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint8_t value) "%s %20s/ CMD%02d value 0x%02x"
-sdcard_read_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t length) "%s %20s/ CMD%02d len %" PRIu32
+sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint8_t value) "%s %20s/ CMD%02d ofs %"PRIu32" value 0x%02x"
+sdcard_read_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint32_t length) "%s %20s/ CMD%02d ofs %"PRIu32" len %" PRIu32
sdcard_set_voltage(uint16_t millivolts) "%u mV"
# pxa2xx_mmci.c