intel: tools: aubmem: map gtt data to aub file
This will allow the aubinator viewer tool to modify the aub data that was loaded at a particular gtt address. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
This commit is contained in:
parent
ebb145ee12
commit
8fd78b4eea
2 changed files with 35 additions and 0 deletions
|
|
@ -55,6 +55,7 @@ struct phys_mem {
|
|||
uint64_t fd_offset;
|
||||
uint64_t phys_addr;
|
||||
uint8_t *data;
|
||||
const uint8_t *aub_data;
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
@ -220,6 +221,7 @@ aub_mem_phys_write(void *_mem, uint64_t phys_address,
|
|||
uint32_t size_this_page = MIN2(to_write, 4096 - offset);
|
||||
to_write -= size_this_page;
|
||||
memcpy(pmem->data + offset, data, size_this_page);
|
||||
pmem->aub_data = data - offset;
|
||||
data = (const uint8_t *)data + size_this_page;
|
||||
}
|
||||
}
|
||||
|
|
@ -389,3 +391,30 @@ aub_mem_fini(struct aub_mem *mem)
|
|||
close(mem->mem_fd);
|
||||
mem->mem_fd = -1;
|
||||
}
|
||||
|
||||
struct gen_batch_decode_bo
|
||||
aub_mem_get_phys_addr_data(struct aub_mem *mem, uint64_t phys_addr)
|
||||
{
|
||||
struct phys_mem *page = search_phys_mem(mem, phys_addr);
|
||||
return page ?
|
||||
(struct gen_batch_decode_bo) { .map = page->data, .addr = page->phys_addr, .size = 4096 } :
|
||||
(struct gen_batch_decode_bo) {};
|
||||
}
|
||||
|
||||
struct gen_batch_decode_bo
|
||||
aub_mem_get_ppgtt_addr_data(struct aub_mem *mem, uint64_t virt_addr)
|
||||
{
|
||||
struct phys_mem *page = ppgtt_walk(mem, mem->pml4, virt_addr);
|
||||
return page ?
|
||||
(struct gen_batch_decode_bo) { .map = page->data, .addr = virt_addr & ~((1ULL << 12) - 1), .size = 4096 } :
|
||||
(struct gen_batch_decode_bo) {};
|
||||
}
|
||||
|
||||
struct gen_batch_decode_bo
|
||||
aub_mem_get_ppgtt_addr_aub_data(struct aub_mem *mem, uint64_t virt_addr)
|
||||
{
|
||||
struct phys_mem *page = ppgtt_walk(mem, mem->pml4, virt_addr);
|
||||
return page ?
|
||||
(struct gen_batch_decode_bo) { .map = page->aub_data, .addr = virt_addr & ~((1ULL << 12) - 1), .size = 4096 } :
|
||||
(struct gen_batch_decode_bo) {};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,12 @@ void aub_mem_local_write(void *mem, uint64_t virt_address,
|
|||
struct gen_batch_decode_bo aub_mem_get_ggtt_bo(void *mem, uint64_t address);
|
||||
struct gen_batch_decode_bo aub_mem_get_ppgtt_bo(void *mem, uint64_t address);
|
||||
|
||||
struct gen_batch_decode_bo aub_mem_get_phys_addr_data(struct aub_mem *mem, uint64_t phys_addr);
|
||||
struct gen_batch_decode_bo aub_mem_get_ppgtt_addr_data(struct aub_mem *mem, uint64_t virt_addr);
|
||||
|
||||
struct gen_batch_decode_bo aub_mem_get_ppgtt_addr_aub_data(struct aub_mem *mem, uint64_t virt_addr);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue