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>
---
hw/dma/trace-events | 3 +++
hw/dma/xilinx_axidma.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/hw/dma/trace-events b/hw/dma/trace-events
index 3c47df54e4..95db083be4 100644
--- a/hw/dma/trace-events
+++ b/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_clr(int i) "event interrupt lowered %d"
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:%d"
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index b8ab5a423d..1bbb9d6c4c 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -36,6 +36,7 @@
#include "sysemu/dma.h"
#include "hw/stream.h"
#include "qom/object.h"
+#include "trace.h"
#define D(x)
@@ -200,6 +201,8 @@ static MemTxResult stream_desc_load(struct Stream *s, hwaddr addr)
addr, MEMTXATTRS_UNSPECIFIED,
d, sizeof *d);
if (result != MEMTX_OK) {
+ trace_xilinx_axidma_loading_desc_fail(result);
+
s->regs[R_DMACR] &= ~DMACR_RUNSTOP;
s->regs[R_DMASR] |= DMASR_HALTED;
s->regs[R_DMASR] |= DMASR_SLVERR;
--
2.34.1
Reviewed-by: Frank Chang <frank.chang@sifive.com>
Fea.Wang <fea.wang@sifive.com> 於 2024年6月3日 週一 下午1:49寫道:
>
> 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>
> ---
> hw/dma/trace-events | 3 +++
> hw/dma/xilinx_axidma.c | 3 +++
> 2 files changed, 6 insertions(+)
>
> diff --git a/hw/dma/trace-events b/hw/dma/trace-events
> index 3c47df54e4..95db083be4 100644
> --- a/hw/dma/trace-events
> +++ b/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_clr(int i) "event interrupt lowered %d"
> 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:%d"
> diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
> index b8ab5a423d..1bbb9d6c4c 100644
> --- a/hw/dma/xilinx_axidma.c
> +++ b/hw/dma/xilinx_axidma.c
> @@ -36,6 +36,7 @@
> #include "sysemu/dma.h"
> #include "hw/stream.h"
> #include "qom/object.h"
> +#include "trace.h"
>
> #define D(x)
>
> @@ -200,6 +201,8 @@ static MemTxResult stream_desc_load(struct Stream *s, hwaddr addr)
> addr, MEMTXATTRS_UNSPECIFIED,
> d, sizeof *d);
> if (result != MEMTX_OK) {
> + trace_xilinx_axidma_loading_desc_fail(result);
> +
> s->regs[R_DMACR] &= ~DMACR_RUNSTOP;
> s->regs[R_DMASR] |= DMASR_HALTED;
> s->regs[R_DMASR] |= DMASR_SLVERR;
> --
> 2.34.1
>
>
On Mon, Jun 3, 2024 at 7:48 AM Fea.Wang <fea.wang@sifive.com> wrote:
> Due to a description loading failure, adding a trace log makes observing
> the DMA behavior easy.
>
>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
> Signed-off-by: Fea.Wang <fea.wang@sifive.com>
> ---
> hw/dma/trace-events | 3 +++
> hw/dma/xilinx_axidma.c | 3 +++
> 2 files changed, 6 insertions(+)
>
> diff --git a/hw/dma/trace-events b/hw/dma/trace-events
> index 3c47df54e4..95db083be4 100644
> --- a/hw/dma/trace-events
> +++ b/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_clr(int i) "event interrupt lowered %d"
> 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:%d"
> diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
> index b8ab5a423d..1bbb9d6c4c 100644
> --- a/hw/dma/xilinx_axidma.c
> +++ b/hw/dma/xilinx_axidma.c
> @@ -36,6 +36,7 @@
> #include "sysemu/dma.h"
> #include "hw/stream.h"
> #include "qom/object.h"
> +#include "trace.h"
>
> #define D(x)
>
> @@ -200,6 +201,8 @@ static MemTxResult stream_desc_load(struct Stream *s,
> hwaddr addr)
> addr, MEMTXATTRS_UNSPECIFIED,
> d, sizeof *d);
> if (result != MEMTX_OK) {
> + trace_xilinx_axidma_loading_desc_fail(result);
> +
> s->regs[R_DMACR] &= ~DMACR_RUNSTOP;
> s->regs[R_DMASR] |= DMASR_HALTED;
> s->regs[R_DMASR] |= DMASR_SLVERR;
> --
> 2.34.1
>
>
© 2016 - 2026 Red Hat, Inc.