From: Thomas Zimmermann <tzimmermann@suse.de>
To: javierm@redhat.com, jfalempe@redhat.com,
jose.exposito89@gmail.com, arthurgrillo@riseup.net,
mairacanal@riseup.net, maarten.lankhorst@linux.intel.com,
mripard@kernel.org, airlied@gmail.com, daniel@ffwll.ch,
noralf@tronnes.org
Cc: Thomas Zimmermann <tzimmermann@suse.de>, dri-devel@lists.freedesktop.org
Subject: [PATCH v5 0/7] drm: Reuse temporary memory for format conversion
Date: Mon, 9 Oct 2023 16:06:29 +0200 [thread overview]
Message-ID: <20231009141018.11291-1-tzimmermann@suse.de> (raw)
DRM's format-conversion helpers require temporary memory. Pass the
buffer from the caller to allow the caller to preallocate the buffer
memory.
The motivation for this patchset is the recent work on a DRM panic
handler. [1] The panic handler requires format conversion to display an
error to the screen. But allocating memory during a kernel panic is
fragile. The changes in this patchset enable the DRM panic handler to
preallocate buffer storage before the panic occurs.
Patch 1 adds struct drm_format_conv_state, a simple interface to pass
around the buffer storage. Patch 2 adds an instance of the struct to
the shadow-plane state. Patch 3 moves the buffer's memory management
from the format helpers into their callers within the DRM drivers. Most
of the affected drivers use the state instance stored in their shadow-
plane state. The shadow-plane code releases the buffer memory automatically.
Patches 4 to 7 update three drivers to pre-allocate the format-conversion
buffer in their plane's atomic_check function. The drivers thus detect OOM
errors before the display update begins.
Tested with simpledrm.
v5:
* fix repaper patch (Noralf)
* fix documentation (Javier, Noralf, kernel test robot)
v4:
* rename struct to drm_format_conv_state (Javier)
* replace ARRAY_SIZE() with sizeof() (Jani)
* store buffer in shadow-plane state (Javier, Maxime)
* prealloc in atomic_check in several drivers
v3:
* no changes
v2:
* reserve storage during probing in the drivers
[1] https://patchwork.freedesktop.org/series/122244/
Thomas Zimmermann (7):
drm/format-helper: Cache buffers with struct drm_format_conv_state
drm/atomic-helper: Add format-conversion state to shadow-plane state
drm/format-helper: Pass format-conversion state to helpers
drm/ofdrm: Preallocate format-conversion buffer in atomic_check
drm/simpledrm: Preallocate format-conversion buffer in atomic_check
drm/ssd130x: Fix atomic_check for disabled planes
drm/ssd130x: Preallocate format-conversion buffer in atomic_check
drivers/gpu/drm/drm_format_helper.c | 215 +++++++++++++-----
drivers/gpu/drm/drm_gem_atomic_helper.c | 9 +
drivers/gpu/drm/drm_mipi_dbi.c | 19 +-
drivers/gpu/drm/gud/gud_pipe.c | 30 ++-
drivers/gpu/drm/solomon/ssd130x.c | 36 ++-
.../gpu/drm/tests/drm_format_helper_test.c | 72 +++---
drivers/gpu/drm/tiny/cirrus.c | 3 +-
drivers/gpu/drm/tiny/ili9225.c | 10 +-
drivers/gpu/drm/tiny/ofdrm.c | 16 +-
drivers/gpu/drm/tiny/repaper.c | 10 +-
drivers/gpu/drm/tiny/simpledrm.c | 43 +++-
drivers/gpu/drm/tiny/st7586.c | 19 +-
include/drm/drm_format_helper.h | 81 +++++--
include/drm/drm_gem_atomic_helper.h | 10 +
include/drm/drm_mipi_dbi.h | 4 +-
15 files changed, 433 insertions(+), 144 deletions(-)
base-commit: fe09b9f4c1435d9ce59b4729994b86a856db852f
prerequisite-patch-id: 0aa359f6144c4015c140c8a6750be19099c676fb
prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
prerequisite-patch-id: cbc453ee02fae02af22fbfdce56ab732c7a88c36
--
2.42.0
next reply other threads:[~2023-10-09 14:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-09 14:06 Thomas Zimmermann [this message]
2023-10-09 14:06 ` [PATCH v5 1/7] drm/format-helper: Cache buffers with struct drm_format_conv_state Thomas Zimmermann
2023-10-09 14:06 ` [PATCH v5 2/7] drm/atomic-helper: Add format-conversion state to shadow-plane state Thomas Zimmermann
2023-10-09 14:22 ` Javier Martinez Canillas
2023-10-10 9:40 ` Maxime Ripard
2023-10-10 11:01 ` Javier Martinez Canillas
2023-10-09 14:06 ` [PATCH v5 3/7] drm/format-helper: Pass format-conversion state to helpers Thomas Zimmermann
2023-10-09 14:06 ` [PATCH v5 4/7] drm/ofdrm: Preallocate format-conversion buffer in atomic_check Thomas Zimmermann
2023-10-09 14:06 ` [PATCH v5 5/7] drm/simpledrm: " Thomas Zimmermann
2023-10-09 14:06 ` [PATCH v5 6/7] drm/ssd130x: Fix atomic_check for disabled planes Thomas Zimmermann
2023-10-13 17:16 ` Javier Martinez Canillas
2023-10-16 10:24 ` Thomas Zimmermann
2023-10-09 14:06 ` [PATCH v5 7/7] drm/ssd130x: Preallocate format-conversion buffer in atomic_check Thomas Zimmermann
2023-11-17 9:34 ` [PATCH v5 0/7] drm: Reuse temporary memory for format conversion Maxime Ripard
2023-11-17 10:07 ` Thomas Zimmermann
2023-11-17 10:44 ` Daniel Vetter
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=20231009141018.11291-1-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@gmail.com \
--cc=arthurgrillo@riseup.net \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=jfalempe@redhat.com \
--cc=jose.exposito89@gmail.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mairacanal@riseup.net \
--cc=mripard@kernel.org \
--cc=noralf@tronnes.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