All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nareshkumar Gollakoti <naresh.kumar.g@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: himal.prasad.ghimiray@intel.com,
	Nareshkumar Gollakoti <naresh.kumar.g@intel.com>
Subject: [PATCH v2 3/8] drm/xe/debugfs: add page size allocation mode knob
Date: Wed,  1 Jul 2026 22:03:43 +0530	[thread overview]
Message-ID: <20260701163348.3432358-4-naresh.kumar.g@intel.com> (raw)
In-Reply-To: <20260701163348.3432358-1-naresh.kumar.g@intel.com>

Expose a debugfs control to override the page-size allocation mode used
for user BOs.

The interface allows switching between forced 2M, forced 1G, and mixed
allocation modes at runtime on platforms that support page-size
allocation control. This provides a simple way to validate behavior and
debug page-size-dependent allocation flows.

v2
- set cur_index using atomic_set as cur_index updated as atomic value
(sashiko)

Signed-off-by: Nareshkumar Gollakoti <naresh.kumar.g@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c | 52 +++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 22b471303984..2fa9ce04f9cd 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -544,6 +544,55 @@ static const struct file_operations disable_late_binding_fops = {
 	.write = disable_late_binding_set,
 };
 
+static ssize_t page_size_alloc_mode_show(struct file *f, char __user *ubuf,
+					 size_t size, loff_t *pos)
+{
+	struct xe_device *xe = file_inode(f)->i_private;
+	char buf[32];
+	int len;
+
+	if (!xe_device_supports_multi_pagesize(xe))
+		return -EOPNOTSUPP;
+
+	enum xe_page_size_alloc_ctrl_mode mode =
+		READ_ONCE(xe->page_size_alloc_ctrl.mode);
+	len = scnprintf(buf, sizeof(buf), "%d\n", mode);
+
+	return simple_read_from_buffer(ubuf, size, pos, buf, len);
+}
+
+static ssize_t page_size_alloc_mode_set(struct file *f, const char __user *ubuf,
+					size_t size, loff_t *pos)
+{
+	struct xe_device *xe = file_inode(f)->i_private;
+	unsigned int val;
+	int ret;
+
+	if (!xe_device_supports_multi_pagesize(xe))
+		return -EOPNOTSUPP;
+
+	ret = kstrtouint_from_user(ubuf, size, 0, &val);
+	if (ret)
+		return ret;
+
+	if (val > XE_PAGE_SIZE_ALLOC_CTRL_MODE_MIXED)
+		return -EINVAL;
+
+	WRITE_ONCE(xe->page_size_alloc_ctrl.mode,
+		   (enum xe_page_size_alloc_ctrl_mode)val);
+
+	if (val == XE_PAGE_SIZE_ALLOC_CTRL_MODE_MIXED)
+		atomic_set(&xe->page_size_alloc_ctrl.cur_index, 0);
+
+	return size;
+}
+
+static const struct file_operations page_size_alloc_mode_fops = {
+	.owner = THIS_MODULE,
+	.read = page_size_alloc_mode_show,
+	.write = page_size_alloc_mode_set,
+};
+
 void xe_debugfs_register(struct xe_device *xe)
 {
 	struct ttm_device *bdev = &xe->ttm;
@@ -585,6 +634,9 @@ void xe_debugfs_register(struct xe_device *xe)
 	debugfs_create_file("disable_late_binding", 0600, root, xe,
 			    &disable_late_binding_fops);
 
+	debugfs_create_file("page_size_alloc_mode", 0600, root, xe,
+			    &page_size_alloc_mode_fops);
+
 	/*
 	 * Don't expose page reclaim configuration file if not supported by the
 	 * hardware initially.
-- 
2.43.0


  parent reply	other threads:[~2026-07-01 16:33 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-01 16:33 [PATCH v2 0/8] drm/xe: add page size allocation mode control Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 1/8] drm/xe: add page size allocation control state to xe_device Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 2/8] drm/xe: add helper for multi page-size support Nareshkumar Gollakoti
2026-07-01 16:33 ` Nareshkumar Gollakoti [this message]
2026-07-01 16:33 ` [PATCH v2 4/8] drm/xe: add 1G BO page-size alignment flag Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 5/8] drm/xe: apply debug page-size policy to user BO creation Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 6/8] drm/xe/vm: apply debug page-size policy to VMA map flags Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 7/8] drm/xe/vm: validate large-page user BO bind alignment Nareshkumar Gollakoti
2026-07-01 16:33 ` [PATCH v2 8/8] drm/xe/pt: allow selecting the bind leaf PTE level Nareshkumar Gollakoti
2026-07-01 17:19 ` ✓ CI.KUnit: success for drm/xe: add page size allocation mode control Patchwork

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=20260701163348.3432358-4-naresh.kumar.g@intel.com \
    --to=naresh.kumar.g@intel.com \
    --cc=himal.prasad.ghimiray@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.