diff options
author | Yuri Nudelman <ynudelman@habana.ai> | 2021-10-14 12:10:31 +0300 |
---|---|---|
committer | Oded Gabbay <ogabbay@kernel.org> | 2021-12-26 08:59:03 +0200 |
commit | ba3aca31f91ceef072970c1688bff40afc2ea275 (patch) | |
tree | 129bdd82adb91e4ec98c2ad0a6bace0e1ef2ff1d /drivers/misc | |
parent | 4cd454a205069965463515e2068190f56b0e4206 (diff) | |
download | linux-ba3aca31f91ceef072970c1688bff40afc2ea275.tar.gz linux-ba3aca31f91ceef072970c1688bff40afc2ea275.tar.bz2 linux-ba3aca31f91ceef072970c1688bff40afc2ea275.zip |
habanalabs: print va_range in vm node debugfs
VA range info could assist in debugging VA allocation bugs.
Signed-off-by: Yuri Nudelman <ynudelman@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/habanalabs/common/debugfs.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/misc/habanalabs/common/debugfs.c b/drivers/misc/habanalabs/common/debugfs.c index 1f2a3dc6c4e2..a239c5679f95 100644 --- a/drivers/misc/habanalabs/common/debugfs.c +++ b/drivers/misc/habanalabs/common/debugfs.c @@ -235,6 +235,8 @@ static int vm_show(struct seq_file *s, void *data) struct hl_vm_hash_node *hnode; struct hl_userptr *userptr; struct hl_vm_phys_pg_pack *phys_pg_pack = NULL; + struct hl_va_range *va_range; + struct hl_vm_va_block *va_block; enum vm_type *vm_type; bool once = true; u64 j; @@ -314,6 +316,29 @@ static int vm_show(struct seq_file *s, void *data) spin_unlock(&dev_entry->ctx_mem_hash_spinlock); + mutex_lock(&dev_entry->hdev->fpriv_list_lock); + ctx = dev_entry->hdev->compute_ctx; + if (ctx) + hl_ctx_get(dev_entry->hdev, ctx); + mutex_unlock(&dev_entry->hdev->fpriv_list_lock); + if (ctx) { + seq_puts(s, "\nVA ranges:\n\n"); + for (i = HL_VA_RANGE_TYPE_HOST ; i < HL_VA_RANGE_TYPE_MAX ; ++i) { + va_range = ctx->va_range[i]; + seq_printf(s, " va_range %d\n", i); + seq_puts(s, "---------------------\n"); + mutex_lock(&va_range->lock); + list_for_each_entry(va_block, &va_range->list, node) { + seq_printf(s, "%#16llx - %#16llx (%#llx)\n", + va_block->start, va_block->end, + va_block->size); + } + mutex_unlock(&va_range->lock); + seq_puts(s, "\n"); + } + hl_ctx_put(ctx); + } + if (!once) seq_puts(s, "\n"); |