On 9/23/26 09:42, Jianfeng Liu wrote: > [Sie erhalten nicht häufig E-Mails von [email protected]. Weitere > Informationen, warum dies wichtig ist, finden Sie unter > https://aka.ms/LearnAboutSenderIdentification ] > > Commit 143755bdabaa9 ("dma-buf: Make DMABUF_DEBUG default to y on > DEBUG_KERNEL kernels") fixed a dangling reference in the DMABUF_DEBUG > default, which had the side effect of enabling the option (and with it > the page-stripping sg_table wrapper handed to importers) on every > kernel with DEBUG_KERNEL=y - i.e. virtually every distro kernel. > > drm/msm is broken by this: it maps imported dma-bufs into the GPU's > own pagetables with iommu_map_sgtable(), which needs the struct page > of the attachment sg_table, and it fills the GEM object's page array > through drm_prime_sg_to_page_array(). With the debug wrapper in > place both silently produce garbage (the wrapper zeroes sg->length,
Interesting point, we should probably change that. > so the page iterator yields nothing and an uninitialized array is > kept). The VM_BIND map job then fails asynchronously after userspace > has already enqueued GPU work referencing the mapping, which shows up > as an arm-smmu translation fault from UCHE, e.g.: > > gpu fault: ttbr0=000000088a889000 iova=000000010741c000 dir=READ > type=TRANSLATION source=UCHE > > This breaks hardware video decode (clapper, chromium) on Adreno > systems; bisected on a Snapdragon laptop as v7.3-rc3 good, > v7.3-rc4 bad, culprit 143755bdabaa9. > > Revert the default until importers that legitimately need to build > phys-based mappings have been converted. Well that won't work like this, pointing those things out is exactly what DMABUF_DEBUG is made for. What MSM is doing here is not allowed at all and can break badly. We gave drivers 5 years to get that fixed and I'm now pushing for completely deprecating that hack. See patch 84335675f2223cbd25d0de7d38ecc7d40b95bd4a: Author: Simona Vetter <[email protected]> Date: Fri Jan 15 17:47:39 2021 +0100 dma-buf: Add debug option When MSM needs the struct page then it must import a shmemfd and not a DMA-buf. What we could do is to either fix MSM or mark it as broken. Regards, Christian. > > Fixes: 143755bdabaa9 ("dma-buf: Make DMABUF_DEBUG default to y on > DEBUG_KERNEL kernels") > Signed-off-by: Jianfeng Liu <[email protected]> > --- > > drivers/dma-buf/Kconfig | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig > index e4f078a326a41..b3c581ef4c987 100644 > --- a/drivers/dma-buf/Kconfig > +++ b/drivers/dma-buf/Kconfig > @@ -43,7 +43,14 @@ config UDMABUF > config DMABUF_DEBUG > bool "DMA-BUF debug checks" > depends on DMA_SHARED_BUFFER > - default y if DEBUG_KERNEL > + # NOTE: keep this default n. The page-stripping sg_table wrapper that > + # this option installs for importers breaks drivers that build a > + # second-stage IOMMU mapping (phys -> iova) from the attachment > sg_table > + # and therefore still need the struct page, e.g. drm/msm with its > + # per-process GPU pagetables. Until those importers are fixed, making > + # this default y breaks hardware video decode and GPU workloads out of > + # the box on affected systems. > + default n > help > This option enables additional checks for DMA-BUF importers and > exporters. Specifically it validates that importers do not peek at > the > -- > 2.47.3 >
