Re: [Mesa-dev] [PATCH v2 4/4] intel: tools: dump: trace memory writes
On Thu, Jul 19, 2018 at 10:14:32AM +0100, Lionel Landwerlin wrote: > On 18/07/18 21:58, Rafael Antognolli wrote: > > On Wed, Jul 18, 2018 at 06:21:32PM +0100, Lionel Landwerlin wrote: > > > Signed-off-by: Lionel Landwerlin > > > --- > > > src/intel/tools/aub_write.c | 45 ++--- > > > 1 file changed, 32 insertions(+), 13 deletions(-) > > > > > > diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c > > > index de4ce33..9c140553542 100644 > > > --- a/src/intel/tools/aub_write.c > > > +++ b/src/intel/tools/aub_write.c > > > @@ -313,10 +313,17 @@ dword_out(struct aub_file *aub, uint32_t data) > > > static void > > > mem_trace_memory_write_header_out(struct aub_file *aub, uint64_t addr, > > > - uint32_t len, uint32_t addr_space) > > > + uint32_t len, uint32_t addr_space, > > > + const char *desc) > > Looks like you are not using desc anywhere... > > > > Other than that, things look good. > > Duh! Fixed locally. > Counts as Rb? Yeah, sure :) > Thanks, > > - > Lionel > > > > > > { > > > uint32_t dwords = ALIGN(len, sizeof(uint32_t)) / sizeof(uint32_t); > > > + if (aub->verbose_log_file) { > > > + fprintf(aub->verbose_log_file, > > > + " MEM WRITE (0x%016" PRIx64 "-0x%016" PRIx64 ")\n", > > > + addr, addr + len); > > > + } > > > + > > > dword_out(aub, CMD_MEM_TRACE_MEMORY_WRITE | (5 + dwords - 1)); > > > dword_out(aub, addr & 0x); /* addr lo */ > > > dword_out(aub, addr >> 32); /* addr hi */ > > > @@ -387,7 +394,8 @@ populate_ppgtt_table(struct aub_file *aub, struct > > > aub_ppgtt_table *table, > > > uint64_t write_size = (dirty_end - dirty_start + 1) * > > >sizeof(uint64_t); > > > mem_trace_memory_write_header_out(aub, write_addr, write_size, > > > - > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL); > > > + > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL, > > > +"PPGTT update"); > > > data_out(aub, entries + dirty_start, write_size); > > > } > > > } > > > @@ -476,7 +484,8 @@ write_execlists_header(struct aub_file *aub, const > > > char *name) > > > mem_trace_memory_write_header_out(aub, STATIC_GGTT_MAP_START >> 12, > > >ggtt_ptes * GEN8_PTE_SIZE, > > > - > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY); > > > + > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY, > > > + "GGTT PT"); > > > for (uint32_t i = 0; i < ggtt_ptes; i++) { > > > dword_out(aub, 1 + 0x1000 * i + STATIC_GGTT_MAP_START); > > > dword_out(aub, 0); > > > @@ -484,7 +493,8 @@ write_execlists_header(struct aub_file *aub, const > > > char *name) > > > /* RENDER_RING */ > > > mem_trace_memory_write_header_out(aub, RENDER_RING_ADDR, RING_SIZE, > > > - > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > > > + > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > > > + "RENDER RING"); > > > for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) > > > dword_out(aub, 0); > > > @@ -492,7 +502,8 @@ write_execlists_header(struct aub_file *aub, const > > > char *name) > > > mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR, > > >PPHWSP_SIZE + > > >sizeof(render_context_init), > > > - > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > > > + > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > > > + "RENDER PPHWSP"); > > > for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) > > > dword_out(aub, 0); > > > @@ -501,7 +512,8 @@ write_execlists_header(struct aub_file *aub, const > > > char *name) > > > /* BLITTER_RING */ > > > mem_trace_memory_write_header_out(aub, BLITTER_RING_ADDR, RING_SIZE, > > > - > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > > > + > > > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > > > + "BLITTER RING"); > > > for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) > > > dword_out(aub, 0); > > > @@ -509,7 +521,8 @@ write_execlists_header(struct aub_file *aub, const > > > char *name) > > > mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR, > > >PPHWSP_SIZE + > > >
Re: [Mesa-dev] [PATCH v2 4/4] intel: tools: dump: trace memory writes
On 18/07/18 21:58, Rafael Antognolli wrote: On Wed, Jul 18, 2018 at 06:21:32PM +0100, Lionel Landwerlin wrote: Signed-off-by: Lionel Landwerlin --- src/intel/tools/aub_write.c | 45 ++--- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c index de4ce33..9c140553542 100644 --- a/src/intel/tools/aub_write.c +++ b/src/intel/tools/aub_write.c @@ -313,10 +313,17 @@ dword_out(struct aub_file *aub, uint32_t data) static void mem_trace_memory_write_header_out(struct aub_file *aub, uint64_t addr, - uint32_t len, uint32_t addr_space) + uint32_t len, uint32_t addr_space, + const char *desc) Looks like you are not using desc anywhere... Other than that, things look good. Duh! Fixed locally. Counts as Rb? Thanks, - Lionel { uint32_t dwords = ALIGN(len, sizeof(uint32_t)) / sizeof(uint32_t); + if (aub->verbose_log_file) { + fprintf(aub->verbose_log_file, + " MEM WRITE (0x%016" PRIx64 "-0x%016" PRIx64 ")\n", + addr, addr + len); + } + dword_out(aub, CMD_MEM_TRACE_MEMORY_WRITE | (5 + dwords - 1)); dword_out(aub, addr & 0x); /* addr lo */ dword_out(aub, addr >> 32); /* addr hi */ @@ -387,7 +394,8 @@ populate_ppgtt_table(struct aub_file *aub, struct aub_ppgtt_table *table, uint64_t write_size = (dirty_end - dirty_start + 1) * sizeof(uint64_t); mem_trace_memory_write_header_out(aub, write_addr, write_size, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL, +"PPGTT update"); data_out(aub, entries + dirty_start, write_size); } } @@ -476,7 +484,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, STATIC_GGTT_MAP_START >> 12, ggtt_ptes * GEN8_PTE_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY, + "GGTT PT"); for (uint32_t i = 0; i < ggtt_ptes; i++) { dword_out(aub, 1 + 0x1000 * i + STATIC_GGTT_MAP_START); dword_out(aub, 0); @@ -484,7 +493,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* RENDER_RING */ mem_trace_memory_write_header_out(aub, RENDER_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "RENDER RING"); for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -492,7 +502,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR, PPHWSP_SIZE + sizeof(render_context_init), - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "RENDER PPHWSP"); for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -501,7 +512,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* BLITTER_RING */ mem_trace_memory_write_header_out(aub, BLITTER_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "BLITTER RING"); for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -509,7 +521,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR, PPHWSP_SIZE + sizeof(blitter_context_init), - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "BLITTER PPHWSP"); for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -518,7 +531,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* VIDEO_RING */ mem_trace_memory_write_header_out(aub, VIDEO_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); +
Re: [Mesa-dev] [PATCH v2 4/4] intel: tools: dump: trace memory writes
On Wed, Jul 18, 2018 at 06:21:32PM +0100, Lionel Landwerlin wrote: > Signed-off-by: Lionel Landwerlin > --- > src/intel/tools/aub_write.c | 45 ++--- > 1 file changed, 32 insertions(+), 13 deletions(-) > > diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c > index de4ce33..9c140553542 100644 > --- a/src/intel/tools/aub_write.c > +++ b/src/intel/tools/aub_write.c > @@ -313,10 +313,17 @@ dword_out(struct aub_file *aub, uint32_t data) > > static void > mem_trace_memory_write_header_out(struct aub_file *aub, uint64_t addr, > - uint32_t len, uint32_t addr_space) > + uint32_t len, uint32_t addr_space, > + const char *desc) Looks like you are not using desc anywhere... Other than that, things look good. > { > uint32_t dwords = ALIGN(len, sizeof(uint32_t)) / sizeof(uint32_t); > > + if (aub->verbose_log_file) { > + fprintf(aub->verbose_log_file, > + " MEM WRITE (0x%016" PRIx64 "-0x%016" PRIx64 ")\n", > + addr, addr + len); > + } > + > dword_out(aub, CMD_MEM_TRACE_MEMORY_WRITE | (5 + dwords - 1)); > dword_out(aub, addr & 0x); /* addr lo */ > dword_out(aub, addr >> 32); /* addr hi */ > @@ -387,7 +394,8 @@ populate_ppgtt_table(struct aub_file *aub, struct > aub_ppgtt_table *table, >uint64_t write_size = (dirty_end - dirty_start + 1) * > sizeof(uint64_t); >mem_trace_memory_write_header_out(aub, write_addr, write_size, > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL); > + > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL, > +"PPGTT update"); >data_out(aub, entries + dirty_start, write_size); > } > } > @@ -476,7 +484,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > > mem_trace_memory_write_header_out(aub, STATIC_GGTT_MAP_START >> 12, > ggtt_ptes * GEN8_PTE_SIZE, > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY); > + > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY, > + "GGTT PT"); > for (uint32_t i = 0; i < ggtt_ptes; i++) { >dword_out(aub, 1 + 0x1000 * i + STATIC_GGTT_MAP_START); >dword_out(aub, 0); > @@ -484,7 +493,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > > /* RENDER_RING */ > mem_trace_memory_write_header_out(aub, RENDER_RING_ADDR, RING_SIZE, > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > + "RENDER RING"); > for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) >dword_out(aub, 0); > > @@ -492,7 +502,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR, > PPHWSP_SIZE + > sizeof(render_context_init), > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > + "RENDER PPHWSP"); > for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) >dword_out(aub, 0); > > @@ -501,7 +512,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > > /* BLITTER_RING */ > mem_trace_memory_write_header_out(aub, BLITTER_RING_ADDR, RING_SIZE, > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > + "BLITTER RING"); > for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) >dword_out(aub, 0); > > @@ -509,7 +521,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR, > PPHWSP_SIZE + > sizeof(blitter_context_init), > - > AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); > + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, > + "BLITTER PPHWSP"); > for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) >dword_out(aub, 0); > > @@ -518,7 +531,8 @@ write_execlists_header(struct aub_file *aub, const char > *name) > > /* VIDEO_RING */ > mem_trace_memory_write_header_out(aub, VIDEO_RING_ADDR, RING_SIZE, > - >
[Mesa-dev] [PATCH v2 4/4] intel: tools: dump: trace memory writes
Signed-off-by: Lionel Landwerlin --- src/intel/tools/aub_write.c | 45 ++--- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c index de4ce33..9c140553542 100644 --- a/src/intel/tools/aub_write.c +++ b/src/intel/tools/aub_write.c @@ -313,10 +313,17 @@ dword_out(struct aub_file *aub, uint32_t data) static void mem_trace_memory_write_header_out(struct aub_file *aub, uint64_t addr, - uint32_t len, uint32_t addr_space) + uint32_t len, uint32_t addr_space, + const char *desc) { uint32_t dwords = ALIGN(len, sizeof(uint32_t)) / sizeof(uint32_t); + if (aub->verbose_log_file) { + fprintf(aub->verbose_log_file, + " MEM WRITE (0x%016" PRIx64 "-0x%016" PRIx64 ")\n", + addr, addr + len); + } + dword_out(aub, CMD_MEM_TRACE_MEMORY_WRITE | (5 + dwords - 1)); dword_out(aub, addr & 0x); /* addr lo */ dword_out(aub, addr >> 32); /* addr hi */ @@ -387,7 +394,8 @@ populate_ppgtt_table(struct aub_file *aub, struct aub_ppgtt_table *table, uint64_t write_size = (dirty_end - dirty_start + 1) * sizeof(uint64_t); mem_trace_memory_write_header_out(aub, write_addr, write_size, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL, +"PPGTT update"); data_out(aub, entries + dirty_start, write_size); } } @@ -476,7 +484,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, STATIC_GGTT_MAP_START >> 12, ggtt_ptes * GEN8_PTE_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT_ENTRY, + "GGTT PT"); for (uint32_t i = 0; i < ggtt_ptes; i++) { dword_out(aub, 1 + 0x1000 * i + STATIC_GGTT_MAP_START); dword_out(aub, 0); @@ -484,7 +493,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* RENDER_RING */ mem_trace_memory_write_header_out(aub, RENDER_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "RENDER RING"); for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -492,7 +502,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR, PPHWSP_SIZE + sizeof(render_context_init), - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "RENDER PPHWSP"); for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -501,7 +512,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* BLITTER_RING */ mem_trace_memory_write_header_out(aub, BLITTER_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "BLITTER RING"); for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -509,7 +521,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR, PPHWSP_SIZE + sizeof(blitter_context_init), - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "BLITTER PPHWSP"); for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -518,7 +531,8 @@ write_execlists_header(struct aub_file *aub, const char *name) /* VIDEO_RING */ mem_trace_memory_write_header_out(aub, VIDEO_RING_ADDR, RING_SIZE, - AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT); + AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT, + "VIDEO RING"); for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t)) dword_out(aub, 0); @@ -526,7 +540,8 @@ write_execlists_header(struct aub_file *aub, const char *name) mem_trace_memory_write_header_out(aub,