<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/gpu/drm/drm_client.c, branch v6.19.11</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v6.19.11</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v6.19.11'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2025-11-25T07:43:47+00:00</updated>
<entry>
<title>drm/client: Support emergency restore via sysrq for all clients</title>
<updated>2025-11-25T07:43:47+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-11-10T15:44:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6915190a50e8f7cf13dcbe534b02845be533b60a'/>
<id>urn:sha1:6915190a50e8f7cf13dcbe534b02845be533b60a</id>
<content type='text'>
Move the sysrq functionality from DRM fbdev helpers to the DRM device
and in-kernel clients, so that it becomes available on all clients.

DRM fbdev helpers support emergency restoration of the console output
via a special key combination. Press SysRq+v to replace the current
compositor with the kernel's output on the framebuffer console. This
allows users to see the log messages during system emergencies.

By moving the functionality from fbdev helpers to the DRM device, any
in-kernel client can serve as emergency output. This can be used to
bring up drm_log, for example.

Each DRM device registers itself to the list of possible sysrq handlers.
On receiving SysRq+v, the DRM core goes over all registered devices and
restores an in-kernel DRM client for each of them.

See Documentation/admin-guide/sysrq.rst on how to invoke SysRq. Switch
VTs to bring back the user-space compositor.

v2:
- declare placeholders as 'static inline' (kernel test robot)
- fix grammar in commit description

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Link: https://patch.msgid.link/20251110154616.539328-3-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Flush client buffers with drm_client_buffer_sync()</title>
<updated>2025-10-30T20:01:39+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=231668043d4ffebda28630b120cddcba384a3318'/>
<id>urn:sha1:231668043d4ffebda28630b120cddcba384a3318</id>
<content type='text'>
Rename drm_client_framebuffer_flush() to drm_cient_buffer_flush() and
adapt its callers. The old name was left over from previous naming
conventions.

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-8-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Create client buffers with drm_client_buffer_create_dumb()</title>
<updated>2025-10-30T20:01:35+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c2707e0f8322607b65e5eb8362ba94a2aeb299b9'/>
<id>urn:sha1:c2707e0f8322607b65e5eb8362ba94a2aeb299b9</id>
<content type='text'>
Rename drm_client_framebuffer_create() to drm_client_buffer_create_dump()
and adapt callers. The new name reflects the function's purpose. Using
dumb buffers is the easiest way for creating a GEM buffer in a drivers-
independent way.

There's also drm_client_buffer_create(), which creates the client buffer
from a preexisting buffer object. This helper can be exported for drivers
that create their own GEM buffer object.

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-7-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Remove drm_client_framebuffer_delete()</title>
<updated>2025-10-30T20:01:32+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=3e3153325fd3693d0f9fe235c4afbcd68ef102e1'/>
<id>urn:sha1:3e3153325fd3693d0f9fe235c4afbcd68ef102e1</id>
<content type='text'>
Release client buffers with drm_client_buffer_delete() instead of
drm_client_framebuffer_delete(). The latter is just a tiny wrapper
around the former.

Move the test for !buffer into drm_client_buffer_delete(), although
all callers appear to always have a valid pointer.

v2:
- test for !buffer before deref-ing pointer (Jocelyn, Dan)

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-6-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Deprecate struct drm_client_buffer.gem</title>
<updated>2025-10-30T20:01:28+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ea39f2e66e61035e203530977a3df428345d03e2'/>
<id>urn:sha1:ea39f2e66e61035e203530977a3df428345d03e2</id>
<content type='text'>
The client buffer's framebuffer holds a reference and pointer on
each of its GEM buffer objects. Thus the field gem in the client-
buffer struct is not necessary. Deprecated the field and convert
the client-buffer helpers to use the framebuffer's objects.

In drm_client_buffer_delete(), do a possible vunmap before releasing
the framebuffer. Otherwise we'd eventually release the framebuffer
before unmaping its buffer objects.

v2:
- avoid dependency on CONFIG_DRM_KMS_HELPER

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-5-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Inline drm_client_buffer_addfb() and _rmfb()</title>
<updated>2025-10-30T20:01:25+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7cc0f6171b9f93da2815d95d4410f14583cba58f'/>
<id>urn:sha1:7cc0f6171b9f93da2815d95d4410f14583cba58f</id>
<content type='text'>
Creating and deleting a client buffer always creates and deletes
the underlying DRM framebuffer. Inline the helper functions into
their callers.

With the _addfb code being inlined into drm_client_buffer_create(),
clean up the function's error rollback to release the framebuffer's
handle and GEM buffer object as needed.

Move the _rmfb code into drm_client_buffer_delete() rather than its
current location in drm_client_framebuffer_delete(). The former is
now the inverse of drm_client_buffer_create(). Makes no difference
for cleaning up. Also prepares for the removal of
drm_client_framebuffer_delete().

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-4-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Move dumb-buffer handling to drm_client_framebuffer_create()</title>
<updated>2025-10-30T20:01:21+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=2d262a483c7a128e50cdb64a0ec20c6d78df66cc'/>
<id>urn:sha1:2d262a483c7a128e50cdb64a0ec20c6d78df66cc</id>
<content type='text'>
Dumb-buffer creation within the client code is asymetrically balanced
across drm_client_buffer_create() and drm_client_framebuffer_create().
Put all dumb-buffer code into drm_client_framebuffer_create() and leave
client-buffer initialization to drm_client_buffer_create(). Clarifies
responsibility between these functions.

Apart form the architectural improvements, drm_client_buffer_create()
can now be exported if needed by clients. The client will be able to
initialize buffers that have been created from other interfaces than
dumb buffers.

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-3-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Remove pitch from struct drm_client_buffer</title>
<updated>2025-10-30T20:01:12+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-27T12:09:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=dce4657ff526b65007fe8d5c92968a933cc7c9da'/>
<id>urn:sha1:dce4657ff526b65007fe8d5c92968a933cc7c9da</id>
<content type='text'>
Only the client-buffer setup uses the pitch field from struct
drm_client_buffer. Remove the field and pass the value among setup
helpers.

Clients that need the pitch should rather look at the framebuffer's
pitches[0] directly.

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Jocelyn Falempe &lt;jfalempe@redhat.com&gt;
Tested-by: Francesco Valla &lt;francesco@valla.it&gt;
Link: https://patch.msgid.link/20251027121042.143588-2-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Add client free callback to unprepare fb_helper</title>
<updated>2025-10-24T06:44:10+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-10-09T13:16:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=a16f6ba43d9d19996ace3aa08218fa399009f4b7'/>
<id>urn:sha1:a16f6ba43d9d19996ace3aa08218fa399009f4b7</id>
<content type='text'>
Add free callback to struct drm_client_funcs. Invoke function to
free the client memory as part of the release process. Implement
free for fbdev emulation.

Fbdev emulation allocates and prepares client memory in
drm_fbdev_client_setup(). The release happens in fb_destroy from
struct fb_ops. Multiple implementations of this callback exist in
the various drivers that provide an fbdev implementation. Each of
them needs to follow the implementation details of the fbdev setup
code.

Adding a free callback for the client puts the unprepare and release
of the fbdev client in a single place.

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Reviewed-by: Dmitry Baryshkov &lt;dmitry.baryshkov@oss.qualcomm.com&gt; # core, msm
Acked-by: Tomi Valkeinen &lt;tomi.valkeinen@ideasonboard.com&gt; # omapdrm
Acked-by: Patrik Jakobsson &lt;patrik.r.jakobsson@gmail.com&gt; # gma500
Acked-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Link: https://lore.kernel.org/r/20251009132006.45834-2-tzimmermann@suse.de
</content>
</entry>
<entry>
<title>drm/client: Include &lt;linux/export.h&gt;</title>
<updated>2025-06-16T07:02:29+00:00</updated>
<author>
<name>Thomas Zimmermann</name>
<email>tzimmermann@suse.de</email>
</author>
<published>2025-06-12T12:09:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8b7a4b100c783218378a67a4113939f92b455104'/>
<id>urn:sha1:8b7a4b100c783218378a67a4113939f92b455104</id>
<content type='text'>
Fixes the compile-time warnings

  drivers/gpu/drm/clients/drm_client_setup.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_client.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_client_event.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_client_modeset.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_fb_helper.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_fbdev_dma.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_fbdev_shmem.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing
  drivers/gpu/drm/drm_fbdev_ttm.c: warning: EXPORT_SYMBOL() is used, but #include &lt;linux/export.h&gt; is missing

Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;
Fixes: a934a57a42f6 ("scripts/misc-check: check missing #include &lt;linux/export.h&gt; when W=1")
Reviewed-by: André Almeida &lt;andrealmeid@igalia.com&gt;
Cc: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
Cc: Nathan Chancellor &lt;nathan@kernel.org&gt;
Link: https://lore.kernel.org/r/20250612121633.229222-5-tzimmermann@suse.de
</content>
</entry>
</feed>
