Re: [PATCH 5/5] drm/xe/query: use PAGE_SIZE as the minimum page alignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 2025/2/26 12:43, Matthew Brost 写道:
On Wed, Feb 26, 2025 at 10:00:22AM +0800, Mingcong Bai via B4 Relay wrote:
From: Mingcong Bai <jeffbai@xxxxxxx>

As this component hooks into userspace API, it should be assumed that it
will play well with non-4K/64K pages.

Use `PAGE_SIZE' as the final reference for page alignment instead.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Fixes: 801989b08aff ("drm/xe/uapi: Make constant comments visible in kernel doc")
Tested-by: Mingcong Bai <jeffbai@xxxxxxx>
Tested-by: Haien Liang <27873200@xxxxxx>
Tested-by: Shirong Liu <lsr1024@xxxxxx>
Tested-by: Haofeng Wu <s2600cw2@xxxxxxx>
Link: https://github.com/FanFansfan/loongson-linux/commit/22c55ab3931c32410a077b3ddb6dca3f28223360
Co-developed-by: Shang Yatsen <429839446@xxxxxx>
Signed-off-by: Shang Yatsen <429839446@xxxxxx>
Signed-off-by: Mingcong Bai <jeffbai@xxxxxxx>
---
  drivers/gpu/drm/xe/xe_query.c | 2 +-
  include/uapi/drm/xe_drm.h     | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index c059639613f7b548c168f808b7b7b354f1cf3c94..8a017c526942d1f2b401e8b9a4244e6083d7b1e5 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -336,7 +336,7 @@ static int query_config(struct xe_device *xe, struct drm_xe_device_query *query)
  		config->info[DRM_XE_QUERY_CONFIG_FLAGS] =
  			DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM;
  	config->info[DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT] =
-		xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
+		xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : PAGE_SIZE;

We should probably assert or build a bug somewhere to ensure SZ_64K >=
PAGE_SIZE for future-proofing. Otherwise, I think the patch makes sense.
One more comment below.

Hmm, >= 64KiB kernel pages don't seem to be a thing yet but this does make sense for the sake of completeness. Will change in v2.


  	config->info[DRM_XE_QUERY_CONFIG_VA_BITS] = xe->info.va_bits;
  	config->info[DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY] =
  		xe_exec_queue_device_get_max_priority(xe);
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index f62689ca861a4673b885629460c11d6f3bc6523d..db7cf904926ebd6789a29d620161ac051e59f13f 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -394,7 +394,7 @@ struct drm_xe_query_mem_regions {
   *    - %DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM - Flag is set if the device
   *      has usable VRAM
   *  - %DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT - Minimal memory alignment
- *    required by this device, typically SZ_4K or SZ_64K
+ *    required by this device, typically PAGE_SIZE.

So I think the kernel doc needs bit more updating here, how about:

Minimal memory alignment required by this device and the CPU. The
minimum page size for the device is usually SZ_4K or SZ_64K, while for
the CPU, it is PAGE_SIZE. This value is calculated by
max(min_gpu_page_size, PAGE_SIZE). This alignment is enforced on
buffer object allocations and VM binds.

Again welcome others CC'd suggestion on this updated kernel doc.

Looks good to me, will revise in v2.

Best Regards,
Mingcong Bai


Matt

   *  - %DRM_XE_QUERY_CONFIG_VA_BITS - Maximum bits of a virtual address
   *  - %DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY - Value of the highest
   *    available exec queue priority

--
2.48.1






[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux