From: Oak Zeng <oak.zeng@intel.com>
To: intel-xe@lists.freedesktop.org
Subject: [PATCH] drm/xe/debugfs: Display gpuva info in debugfs
Date: Wed, 18 Sep 2024 12:45:45 -0400 [thread overview]
Message-ID: <20240918164545.3955824-1-oak.zeng@intel.com> (raw)
Add debugfs entry to display all the gpuva that is bound to the
device. This is done by walking all the VMs created for each device
process, and display va information of each VM. This is useful for
gpuvm debugging. With this change, user can display gpuva info
as below:
root@DUT7279PVC:/home/gta# cat /sys/kernel/debug/dri/0/gpuvas
Process "your process name" GPU VA space
DRM GPU VA space (Xe VM) [0x0000000000000000;0x0200000000000000]
Kernel reserved node [0x0000000000000000;0x0000000000000000]
VAs | start | range | end | object | object offset
-------------------------------------------------------------------------------------------------------------
| 0x0000000000000000 | 0x00007ffff5db7000 | 0x00007ffff5db7000 | 0x0000000000000000 | 0x0000000000000000
| 0x00007ffff5db7000 | 0x0000000000001000 | 0x00007ffff5db8000 | 0x0000000000000000 | 0x00007ffff5db7000
| 0x00007ffff5db8000 | 0x00ff80000a248000 | 0x0100000000000000 | 0x0000000000000000 | 0x0000000000000000
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
drivers/gpu/drm/xe/xe_debugfs.c | 44 +++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 1011e5d281fa..0c7bee1c2a8d 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -9,6 +9,7 @@
#include <linux/string_helpers.h>
#include <drm/drm_debugfs.h>
+#include <drm/drm_drv.h>
#include "xe_bo.h"
#include "xe_device.h"
@@ -84,9 +85,52 @@ static int sriov_info(struct seq_file *m, void *data)
return 0;
}
+static int show_vm_gpuvas(struct xe_vm *vm, struct seq_file *m)
+{
+ int ret;
+
+ mutex_lock(&vm->snap_mutex);
+ ret = drm_debugfs_gpuva_info(m, &vm->gpuvm);
+ mutex_unlock(&vm->snap_mutex);
+
+ return ret;
+}
+
+static int show_each_vm(struct seq_file *m, void *arg)
+{
+ struct drm_info_node *node = (struct drm_info_node *)m->private;
+ struct xe_device *xe = node_to_xe(node);
+ struct drm_device *dev = &xe->drm;
+ struct drm_file *file;
+ struct xe_file *xef;
+ int (*show)(struct xe_vm *, struct seq_file *) = node->info_ent->data;
+ struct xe_vm *vm;
+ unsigned long idx;
+ int ret = 0;
+
+ mutex_lock(&dev->filelist_mutex);
+ list_for_each_entry(file, &dev->filelist, lhead) {
+ xef = (struct xe_file *)file->driver_priv;
+ seq_printf(m, "Process %s GPU VA space\n", xef->process_name);
+ mutex_lock(&xef->vm.lock);
+ xa_for_each(&xef->vm.xa, idx, vm) {
+ ret = show(vm, m);
+ if (ret < 0)
+ break;
+
+ seq_puts(m, "\n");
+ }
+ mutex_unlock(&xef->vm.lock);
+ }
+ mutex_unlock(&dev->filelist_mutex);
+
+ return ret;
+}
+
static const struct drm_info_list debugfs_list[] = {
{"info", info, 0},
{ .name = "sriov_info", .show = sriov_info, },
+ DRM_DEBUGFS_GPUVA_INFO(show_each_vm, show_vm_gpuvas),
};
static int forcewake_open(struct inode *inode, struct file *file)
--
2.26.3
next reply other threads:[~2024-09-18 16:32 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-18 16:45 Oak Zeng [this message]
2024-09-18 19:12 ` ✓ CI.Patch_applied: success for drm/xe/debugfs: Display gpuva info in debugfs Patchwork
2024-09-18 19:13 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-18 19:14 ` ✓ CI.KUnit: success " Patchwork
2024-09-18 19:26 ` ✓ CI.Build: " Patchwork
2024-09-18 19:28 ` ✓ CI.Hooks: " Patchwork
2024-09-18 19:30 ` ✓ CI.checksparse: " Patchwork
2024-09-18 19:58 ` ✓ CI.BAT: " Patchwork
2024-09-19 7:31 ` ✗ CI.FULL: failure " Patchwork
2024-09-19 19:01 ` [PATCH] " Matthew Brost
2024-09-19 19:04 ` Matthew Brost
2024-09-20 15:57 ` Zeng, Oak
2024-09-20 18:43 ` Matthew Brost
2024-09-20 20:03 ` Zeng, Oak
2024-09-20 20:45 ` Matthew Brost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240918164545.3955824-1-oak.zeng@intel.com \
--to=oak.zeng@intel.com \
--cc=intel-xe@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox