From: Dillon Amburgey <dillona@gmail.com>
To: Dave Airlie <airlied@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>
Cc: Dillon Amburgey <dillona@gmail.com>,
dri-devel@lists.freedesktop.org, virtualization@lists.linux.dev,
spice-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
christian.koenig@amd.com, krisman@collabora.co.uk,
noralf@tronnes.org
Subject: [PATCH v3 0/5] drm/qxl: fix shared-primary lifetime and source packing
Date: Sat, 26 Sep 2026 12:31:18 -0400 [thread overview]
Message-ID: <20260926163123.39217-1-dillona@gmail.com> (raw)
QXL packs dumb framebuffers into a shared primary surface. Failed
preparation and multihead updates can leave shadow bindings inconsistent;
packing whole allocations instead of visible sources also produces
oversized surfaces and incorrect coordinates. Patch 4 establishes atomic
ownership of the shared shadow before patch 5 changes its geometry.
This series supersedes the single-patch v2 posted on September 24:
https://lore.kernel.org/r/20260925033011.12560-1-dillona@gmail.com
Changes since v2:
- Split out fixes for framebuffer pin unwinding, DirtyFB commit ordering
and error propagation, and stale disabled-head-zero monitor metadata.
- Replace BO-global shadow mutation and the shared redraw flag with
prepared atomic plane-state ownership. Include every primary plane and
CRTC in commit dependencies, replacing the lockless redraw of other
heads. This addresses the state-lifetime and redraw-flag races raised
by Sashiko AI:
https://lore.kernel.org/r/20260925034208.6B9F61F000FF@smtp.kernel.org
- Separate shadow lifetime from source-sized packing, retaining source
X/Y translation, packed monitor origins and clipped DirtyFB updates.
- Rebase onto mainline 6812ce4e4379 and expand regression coverage.
The series also applies and builds on drm-misc-fixes 94cf5971b1d0.
For drm-misc-next 98c7fc4219b9, patch 4 needs adaptation to the new
atomic_create_state API.
Validation:
- Each commit builds on x86 with W=1 and no new sparse diagnostics.
The final QXL driver is also compile-tested on ARM and ARM64.
- QEMU/KVM tests cover error unwinding, commit/DirtyFB ordering, shared
framebuffers, source offsets, clipped damage and concurrent modesets.
Error-path and ordering tests used test-only hooks, absent from the
series and final kernel.
- End-to-end Xorg/SPICE tests verify multihead resizing and DPMS resume
without an application repaint.
OpenAI Codex assisted development and review of the patches and regression
fixtures.
Dillon Amburgey (5):
drm/qxl: unpin the framebuffer when plane preparation fails
drm/qxl: wait for pending commits before applying DirtyFB
drm/qxl: clear the monitor configuration for disabled head zero
drm/qxl: own packed primary shadows in atomic plane state
drm/qxl: pack dumb heads from their plane source rectangles
drivers/gpu/drm/qxl/qxl_display.c | 370 ++++++++++++++++++------------
drivers/gpu/drm/qxl/qxl_draw.c | 6 +-
drivers/gpu/drm/qxl/qxl_drv.h | 5 +-
3 files changed, 229 insertions(+), 152 deletions(-)
base-commit: 6812ce4e4379ffc99c52401ec28f0d7ffbc36206
--
2.43.0
next reply other threads:[~2026-09-26 16:31 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-26 16:31 Dillon Amburgey [this message]
2026-09-26 16:31 ` [PATCH v3 1/5] drm/qxl: unpin the framebuffer when plane preparation fails Dillon Amburgey
2026-09-26 16:38 ` sashiko-bot
2026-09-26 16:31 ` [PATCH v3 2/5] drm/qxl: wait for pending commits before applying DirtyFB Dillon Amburgey
2026-09-26 16:39 ` sashiko-bot
2026-09-26 16:31 ` [PATCH v3 3/5] drm/qxl: clear the monitor configuration for disabled head zero Dillon Amburgey
2026-09-26 16:39 ` sashiko-bot
2026-09-26 16:31 ` [PATCH v3 4/5] drm/qxl: own packed primary shadows in atomic plane state Dillon Amburgey
2026-09-26 16:41 ` sashiko-bot
2026-09-26 16:31 ` [PATCH v3 5/5] drm/qxl: pack dumb heads from their plane source rectangles Dillon Amburgey
2026-09-26 16:45 ` sashiko-bot
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=20260926163123.39217-1-dillona@gmail.com \
--to=dillona@gmail.com \
--cc=airlied@gmail.com \
--cc=airlied@redhat.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kraxel@redhat.com \
--cc=krisman@collabora.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=noralf@tronnes.org \
--cc=simona@ffwll.ch \
--cc=spice-devel@lists.freedesktop.org \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux.dev \
/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.