[RFC PATCH 0/2] drm: add a noncoherent mapping checking helper

Icenowy Zheng uwu at icenowy.me
Wed Sep 30 07:38:07 PDT 2026


在 2026-09-30三的 15:18 +0100,Conor Dooley写道:
> On Wed, Sep 30, 2026 at 03:35:26PM +0800, Icenowy Zheng wrote:
> > This patchset tries to address the lack of uncached mapping support
> > on
> > several SiFive-core-based SoCs, currently targeting JH7110 but
> > EIC7700
> > would have the same problem (although it uses DC8000 display
> > controller
> > instead of DC8200 and real display support is pending).
> > 
> > Because other users (either SoCs with Xuantie cores, which have
> > Xtheadmae extensions or non-RISC-V SoCs) of the driver have proper
> > writecombine support, a helper is added to check whether coherent
> > (cache-bypassing) mapping is available. This helper currently
> > returns
> > true for all architectures except RISC-V, and checks whether
> > pgprot_writecombine() is a no-op on RISC-V.
> > 
> > The patch really enabling manual cache maintenance for the
> > verisilicon
> > driver is picked from Dominique, and reworked to check both
> > dma-noncoherent property and the platform's mapping capaibility.
> > 
> > Tested on VisionFive 2 with the display enablement patchset at [1]
> > (and
> > its dependency).
> > 
> > Also tested on Lichee Pi 4A (TH1520, which has Xtheadmae),
> > operation is
> > not affected, map_noncoherent isn't set and Xorg says kernel dirty
> > updates aren't required.
> > 
> > [1]
> > https://patch.msgid.link/20260929-jh7110-clean-send-v5-0-82b4d8e3c6c7@samsung.com
> 
> Out of curiosity, have you seen Bo Gan's series from a few months ago
> that creates an extension/erratum to get these devices working?
> https://lore.kernel.org/linux-riscv/20260316060328.1173634-1-ganboing@gmail.com/
> 
> I've been meaning to reply to it over and over again for the last
> number
> of months, but I just haven't had the time to actually understand the
> detail of the EIC7700 solution or check whether it works yet. I know
> this is just one driver because the JH7110 only has this problem for
> the 

I personally think his EIC7700 solution unacceptable -- it's not
running directly on EIC7700, but some custom hypervisor (because the
uncached offset of EIC7700 doesn't behave as a simple OR opertaion),
which requires 3rd party code and prohibits KVM usage of the kernel.

> display pipeline, but according to Bo Gan this applies to all
> peripherals on the EIC7700. 

In fact JH7100 suffers from the same problem too, so JH7110 put some
DMA peripherals to the L2 front AXI bus; however although this bus
keeps coherency with the CPU, its bandwidth is questionable (I think
the bottleneck could be exhibited if you attach a not-too-bad NVMe SSD
on JH7110's PCIe).

Thanks,
Icenowy

> 
> > 
> > Dominique Belhachemi (1):
> >   drm: verisilicon: support non-coherent DMA framebuffers
> > 
> > Icenowy Zheng (1):
> >   drm: add a helper function to check availbility of coherent
> > mapping
> > 
> >  drivers/gpu/drm/verisilicon/vs_cursor_plane.c |  9 ++++++
> >  drivers/gpu/drm/verisilicon/vs_drm.c          | 32
> > ++++++++++++++++++-
> >  drivers/gpu/drm/verisilicon/vs_drm.h          |  7 ++++
> >  .../gpu/drm/verisilicon/vs_primary_plane.c    |  9 ++++++
> >  include/drm/drm_cache.h                       | 21 ++++++++++++
> >  5 files changed, 77 insertions(+), 1 deletion(-)
> > 
> > -- 
> > 2.55.0
> > 



More information about the linux-riscv mailing list