<div dir="ltr"><pre><font size="2" style="font-family:arial,sans-serif">Reviewed-by: Josh Simonot <josh.simonot at <a href="http://gmail.com">gmail.com</a>></font></pre></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 16 Oct 2023 at 14:42, Gurchetan Singh <<a href="mailto:gurchetansingh@chromium.org">gurchetansingh@chromium.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">There are two problems with the current method of determining the<br>
virtio-gpu debug name.<br>
<br>
1) TASK_COMM_LEN is defined to be 16 bytes only, and this is a<br>
   Linux kernel idiom (see PR_SET_NAME + PR_GET_NAME). Though,<br>
   Android/FreeBSD get around this via setprogname(..)/getprogname(..)<br>
   in libc.<br>
<br>
   On Android, names longer than 16 bytes are common.  For example,<br>
   one often encounters a program like "com.android.systemui".<br>
<br>
   The virtio-gpu spec allows the debug name to be up to 64 bytes, so<br>
   ideally userspace should be able to set debug names up to 64 bytes.<br>
<br>
2) The current implementation determines the debug name using whatever<br>
   task initiated virtgpu.  This is could be a "RenderThread" of a<br>
   larger program, when we actually want to propagate the debug name<br>
   of the program.<br>
<br>
To fix these issues, add a new CONTEXT_INIT param that allows userspace<br>
to set the debug name when creating a context.<br>
<br>
It takes a null-terminated C-string as the param value.<br>
<br>
Link to open-source userspace:<br>
<a href="https://android-review.googlesource.com/c/platform/hardware/google/gfxstream/+/2787176" rel="noreferrer" target="_blank">https://android-review.googlesource.com/c/platform/hardware/google/gfxstream/+/2787176</a><br>
<br>
Signed-off-by: Gurchetan Singh <<a href="mailto:gurchetansingh@chromium.org" target="_blank">gurchetansingh@chromium.org</a>><br>
---<br>
 include/uapi/drm/virtgpu_drm.h | 2 ++<br>
 1 file changed, 2 insertions(+)<br>
<br>
diff --git a/include/uapi/drm/virtgpu_drm.h b/include/uapi/drm/virtgpu_drm.h<br>
index b1d0e56565bc..c2ce71987e9b 100644<br>
--- a/include/uapi/drm/virtgpu_drm.h<br>
+++ b/include/uapi/drm/virtgpu_drm.h<br>
@@ -97,6 +97,7 @@ struct drm_virtgpu_execbuffer {<br>
 #define VIRTGPU_PARAM_CROSS_DEVICE 5 /* Cross virtio-device resource sharing  */<br>
 #define VIRTGPU_PARAM_CONTEXT_INIT 6 /* DRM_VIRTGPU_CONTEXT_INIT */<br>
 #define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7 /* Bitmask of supported capability set ids */<br>
+#define VIRTGPU_PARAM_EXPLICIT_DEBUG_NAME 8 /* Ability to set debug name from userspace */<br>
<br>
 struct drm_virtgpu_getparam {<br>
        __u64 param;<br>
@@ -198,6 +199,7 @@ struct drm_virtgpu_resource_create_blob {<br>
 #define VIRTGPU_CONTEXT_PARAM_CAPSET_ID       0x0001<br>
 #define VIRTGPU_CONTEXT_PARAM_NUM_RINGS       0x0002<br>
 #define VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK 0x0003<br>
+#define VIRTGPU_CONTEXT_PARAM_DEBUG_NAME      0x0004<br>
 struct drm_virtgpu_context_set_param {<br>
        __u64 param;<br>
        __u64 value;<br>
-- <br>
2.42.0.655.g421f12c284-goog<br>
<br>
</blockquote></div>