[2/2] intel/toosl/aubwrite: Always use physical addresses for traces.

Submitted by Rafael Antognolli on Aug. 21, 2018, 5:38 p.m.

Details

Message ID 20180821173856.12942-2-rafael.antognolli@intel.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in Mesa

Not browsing as part of any series.

Commit Message

Rafael Antognolli Aug. 21, 2018, 5:38 p.m.
It looks like we can't rely on the simulator to always translate virtual
addresses to physical ones correctly. So let's use physical everywhere.

Since our current GGTT maps virtual to physical addresses in a 1:1 way,
no further changes are required.

Additionally, we have other address spaces not in use right now. So
let's make it easier to switch which one we are using by putting the
default one into the aub_file struct.

Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
---
 src/intel/tools/aub_write.c | 21 +++++++++++----------
 src/intel/tools/aub_write.h |  1 +
 2 files changed, 12 insertions(+), 10 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c
index 5d59b4ef28a..fb4e0de93e3 100644
--- a/src/intel/tools/aub_write.c
+++ b/src/intel/tools/aub_write.c
@@ -126,6 +126,7 @@  aub_file_init(struct aub_file *aub, FILE *file, uint16_t pci_id)
    aub->addr_bits = aub->devinfo.gen >= 8 ? 48 : 32;
 
    aub->pml4.phys_addr = PML4_PHYS_ADDR;
+   aub->default_addr_space = AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL;
 }
 
 void
@@ -339,7 +340,7 @@  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->default_addr_space,
                                      "RENDER RING");
    for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -348,7 +349,7 @@  write_execlists_header(struct aub_file *aub, const char *name)
    mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR,
                                      PPHWSP_SIZE +
                                      CONTEXT_RENDER_SIZE,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "RENDER PPHWSP");
    for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -358,7 +359,7 @@  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->default_addr_space,
                                      "BLITTER RING");
    for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -367,7 +368,7 @@  write_execlists_header(struct aub_file *aub, const char *name)
    mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR,
                                      PPHWSP_SIZE +
                                      CONTEXT_OTHER_SIZE,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "BLITTER PPHWSP");
    for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -377,7 +378,7 @@  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->default_addr_space,
                                      "VIDEO RING");
    for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -386,7 +387,7 @@  write_execlists_header(struct aub_file *aub, const char *name)
    mem_trace_memory_write_header_out(aub, VIDEO_CONTEXT_ADDR,
                                      PPHWSP_SIZE +
                                      CONTEXT_OTHER_SIZE,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "VIDEO PPHWSP");
    for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
       dword_out(aub, 0);
@@ -477,7 +478,7 @@  aub_write_trace_block(struct aub_file *aub,
          mem_trace_memory_write_header_out(aub,
                                            ppgtt_lookup(aub, gtt_offset + offset),
                                            block_size,
-                                           AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL,
+                                           aub->default_addr_space,
                                            "Trace Block");
       } else {
          dword_out(aub, CMD_AUB_TRACE_HEADER_BLOCK |
@@ -542,7 +543,7 @@  aub_dump_execlist(struct aub_file *aub, uint64_t batch_offset, int ring_flag)
    }
 
    mem_trace_memory_write_header_out(aub, ring_addr, 16,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "RING MI_BATCH_BUFFER_START user");
    dword_out(aub, AUB_MI_BATCH_BUFFER_START | MI_BATCH_NON_SECURE_I965 | (3 - 2));
    dword_out(aub, batch_offset & 0xFFFFFFFF);
@@ -550,11 +551,11 @@  aub_dump_execlist(struct aub_file *aub, uint64_t batch_offset, int ring_flag)
    dword_out(aub, 0 /* MI_NOOP */);
 
    mem_trace_memory_write_header_out(aub, ring_addr + 8192 + 20, 4,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "RING BUFFER HEAD");
    dword_out(aub, 0); /* RING_BUFFER_HEAD */
    mem_trace_memory_write_header_out(aub, ring_addr + 8192 + 28, 4,
-                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
+                                     aub->default_addr_space,
                                      "RING BUFFER TAIL");
    dword_out(aub, 16); /* RING_BUFFER_TAIL */
 
diff --git a/src/intel/tools/aub_write.h b/src/intel/tools/aub_write.h
index b421679b9eb..1429aac88ed 100644
--- a/src/intel/tools/aub_write.h
+++ b/src/intel/tools/aub_write.h
@@ -48,6 +48,7 @@  struct aub_file {
    int addr_bits;
 
    struct aub_ppgtt_table pml4;
+   uint32_t default_addr_space;
 };
 
 void aub_file_init(struct aub_file *aub, FILE *file, uint16_t pci_id);

Comments

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>

On 21/08/2018 18:38, Rafael Antognolli wrote:
> It looks like we can't rely on the simulator to always translate virtual
> addresses to physical ones correctly. So let's use physical everywhere.
>
> Since our current GGTT maps virtual to physical addresses in a 1:1 way,
> no further changes are required.
>
> Additionally, we have other address spaces not in use right now. So
> let's make it easier to switch which one we are using by putting the
> default one into the aub_file struct.
>
> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
> ---
>   src/intel/tools/aub_write.c | 21 +++++++++++----------
>   src/intel/tools/aub_write.h |  1 +
>   2 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c
> index 5d59b4ef28a..fb4e0de93e3 100644
> --- a/src/intel/tools/aub_write.c
> +++ b/src/intel/tools/aub_write.c
> @@ -126,6 +126,7 @@ aub_file_init(struct aub_file *aub, FILE *file, uint16_t pci_id)
>      aub->addr_bits = aub->devinfo.gen >= 8 ? 48 : 32;
>   
>      aub->pml4.phys_addr = PML4_PHYS_ADDR;
> +   aub->default_addr_space = AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL;
>   }
>   
>   void
> @@ -339,7 +340,7 @@ 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->default_addr_space,
>                                        "RENDER RING");
>      for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -348,7 +349,7 @@ write_execlists_header(struct aub_file *aub, const char *name)
>      mem_trace_memory_write_header_out(aub, RENDER_CONTEXT_ADDR,
>                                        PPHWSP_SIZE +
>                                        CONTEXT_RENDER_SIZE,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "RENDER PPHWSP");
>      for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -358,7 +359,7 @@ 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->default_addr_space,
>                                        "BLITTER RING");
>      for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -367,7 +368,7 @@ write_execlists_header(struct aub_file *aub, const char *name)
>      mem_trace_memory_write_header_out(aub, BLITTER_CONTEXT_ADDR,
>                                        PPHWSP_SIZE +
>                                        CONTEXT_OTHER_SIZE,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "BLITTER PPHWSP");
>      for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -377,7 +378,7 @@ 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->default_addr_space,
>                                        "VIDEO RING");
>      for (uint32_t i = 0; i < RING_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -386,7 +387,7 @@ write_execlists_header(struct aub_file *aub, const char *name)
>      mem_trace_memory_write_header_out(aub, VIDEO_CONTEXT_ADDR,
>                                        PPHWSP_SIZE +
>                                        CONTEXT_OTHER_SIZE,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "VIDEO PPHWSP");
>      for (uint32_t i = 0; i < PPHWSP_SIZE; i += sizeof(uint32_t))
>         dword_out(aub, 0);
> @@ -477,7 +478,7 @@ aub_write_trace_block(struct aub_file *aub,
>            mem_trace_memory_write_header_out(aub,
>                                              ppgtt_lookup(aub, gtt_offset + offset),
>                                              block_size,
> -                                           AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_PHYSICAL,
> +                                           aub->default_addr_space,
>                                              "Trace Block");
>         } else {
>            dword_out(aub, CMD_AUB_TRACE_HEADER_BLOCK |
> @@ -542,7 +543,7 @@ aub_dump_execlist(struct aub_file *aub, uint64_t batch_offset, int ring_flag)
>      }
>   
>      mem_trace_memory_write_header_out(aub, ring_addr, 16,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "RING MI_BATCH_BUFFER_START user");
>      dword_out(aub, AUB_MI_BATCH_BUFFER_START | MI_BATCH_NON_SECURE_I965 | (3 - 2));
>      dword_out(aub, batch_offset & 0xFFFFFFFF);
> @@ -550,11 +551,11 @@ aub_dump_execlist(struct aub_file *aub, uint64_t batch_offset, int ring_flag)
>      dword_out(aub, 0 /* MI_NOOP */);
>   
>      mem_trace_memory_write_header_out(aub, ring_addr + 8192 + 20, 4,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "RING BUFFER HEAD");
>      dword_out(aub, 0); /* RING_BUFFER_HEAD */
>      mem_trace_memory_write_header_out(aub, ring_addr + 8192 + 28, 4,
> -                                     AUB_MEM_TRACE_MEMORY_ADDRESS_SPACE_GGTT,
> +                                     aub->default_addr_space,
>                                        "RING BUFFER TAIL");
>      dword_out(aub, 16); /* RING_BUFFER_TAIL */
>   
> diff --git a/src/intel/tools/aub_write.h b/src/intel/tools/aub_write.h
> index b421679b9eb..1429aac88ed 100644
> --- a/src/intel/tools/aub_write.h
> +++ b/src/intel/tools/aub_write.h
> @@ -48,6 +48,7 @@ struct aub_file {
>      int addr_bits;
>   
>      struct aub_ppgtt_table pml4;
> +   uint32_t default_addr_space;
>   };
>   
>   void aub_file_init(struct aub_file *aub, FILE *file, uint16_t pci_id);