Browse Source

hw/dma: Add a trace log for a description loading failure

Due to a description loading failure, adding a trace log makes observing
the DMA behavior easy.

Signed-off-by: Fea.Wang <fea.wang@sifive.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Frank Chang <frank.chang@sifive.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Fea.Wang 1 year ago
parent
commit
8e25dddaf9
2 changed files with 6 additions and 0 deletions
  1. 3 0
      hw/dma/trace-events
  2. 3 0
      hw/dma/xilinx_axidma.c

+ 3 - 0
hw/dma/trace-events

@@ -44,3 +44,6 @@ pl330_debug_exec_stall(void) "stall of debug instruction not implemented"
 pl330_iomem_write(uint32_t offset, uint32_t value) "addr: 0x%08"PRIx32" data: 0x%08"PRIx32
 pl330_iomem_write(uint32_t offset, uint32_t value) "addr: 0x%08"PRIx32" data: 0x%08"PRIx32
 pl330_iomem_write_clr(int i) "event interrupt lowered %d"
 pl330_iomem_write_clr(int i) "event interrupt lowered %d"
 pl330_iomem_read(uint32_t addr, uint32_t data) "addr: 0x%08"PRIx32" data: 0x%08"PRIx32
 pl330_iomem_read(uint32_t addr, uint32_t data) "addr: 0x%08"PRIx32" data: 0x%08"PRIx32
+
+# xilinx_axidma.c
+xilinx_axidma_loading_desc_fail(uint32_t res) "error:%u"

+ 3 - 0
hw/dma/xilinx_axidma.c

@@ -36,6 +36,7 @@
 #include "sysemu/dma.h"
 #include "sysemu/dma.h"
 #include "hw/stream.h"
 #include "hw/stream.h"
 #include "qom/object.h"
 #include "qom/object.h"
+#include "trace.h"
 
 
 #define D(x)
 #define D(x)
 
 
@@ -201,6 +202,8 @@ static MemTxResult stream_desc_load(struct Stream *s, hwaddr addr)
                                             addr, MEMTXATTRS_UNSPECIFIED,
                                             addr, MEMTXATTRS_UNSPECIFIED,
                                             d, sizeof *d);
                                             d, sizeof *d);
     if (result != MEMTX_OK) {
     if (result != MEMTX_OK) {
+        trace_xilinx_axidma_loading_desc_fail(result);
+
         if (result == MEMTX_DECODE_ERROR) {
         if (result == MEMTX_DECODE_ERROR) {
             s->regs[R_DMASR] |= DMASR_DECERR;
             s->regs[R_DMASR] |= DMASR_DECERR;
         } else {
         } else {