FAILED: patch "[PATCH] drm/xe: Limit sg segment size to PAGE_SIZE on Xen PV" failed to apply to 7.3-stable tree
Subsystems (3)
Sasha Levin
maintainerThe patch below does not apply to the 7.3-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-7.3.y
git checkout FETCH_HEAD
git cherry-pick -x 77f704158f099b952681f207478a22d5b8218edb
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '[email protected]' --subject-prefix 'PATCH 7.3.y' 'HEAD^..'
Thanks,
Sasha
------------------ original commit in Linus's tree ------------------
From 77f704158f099b952681f207478a22d5b8218edb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Szymon=20Aceda=C5=84ski?= <[email protected]>
Date: Wed, 16 Sep 2026 19:30:30 +0200
Subject: [PATCH] drm/xe: Limit sg segment size to PAGE_SIZE on Xen PV
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix display corruption on Xen PV dom0, where DMA buffers are not guaranteed machine-contiguous, in which case bounce buffering kicks in, breaking xe's memory coherency assumptions.
Apply the same workaround i915 carries in i915_sg_segment_size() since commit 78a07fe777c4 ("drm/i915: stop abusing swiotlb_max_segment").
--- drivers/gpu/drm/xe/xe_bo.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
drivers/gpu/drm/xe/xe_bo.h +19 -0
@@ -9,6 +9,8 @@#include <drm/drm_prime.h> #include <drm/ttm/ttm_tt.h> +#include <xen/xen.h> +#include "xe_bo_types.h" #include "xe_ggtt.h" #include "xe_macros.h"
@@ -574,6 +576,23 @@ static inline unsigned int xe_sg_segment_size(struct device *dev)struct scatterlist __maybe_unused sg;size_t max =BIT_ULL (sizeof (sg.length) *8 ) -1 ; +/* +* For Xen PV guests pages aren't contiguous in DMA (machine) address +* space. The DMA API takes care of that both in dma_alloc_* (by +* calling into the hypervisor to make the pages contiguous) and in +* dma_map_* (by bounce buffering). But xe (like i915, see commit +* 78a07fe777c4) ignores the coherency aspects of the DMA API and thus +* can't cope with bounce buffering actually happening, so add a hack +* here to force small allocations and mappings when running in PV +* mode on Xen. +* +* Note this will still break if bounce buffering is required for other +* reasons, like confidential computing hypervisors or PCIe root ports +* with addressing limitations. +*/ +if (xen_pv_domain ()) +return PAGE_SIZE ; + max =min_t (size_t, max,dma_max_mapping_size (dev));/*
Signature · 1 line
2.53.0
No backport needed: this change is already present in the 7.3 tree, went into v7.3-rc5 via drm-xe-fixes as commit 141008dec735 ("drm/xe: Limit sg segment size to PAGE_SIZE on Xen PV").
Thanks,
Szymon