tech-x11 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: DRM Stuff
> Date: Wed, 28 Sep 2022 14:37:47 +0100
> From: Robert Swindells <rjs%fdy2.co.uk@localhost>
>
> Taylor R Campbell <campbell+netbsd-tech-x11%mumble.net@localhost> wrote:
> >> Date: Mon, 26 Sep 2022 09:40:15 +0100
> >> From: Robert Swindells <rjs%fdy2.co.uk@localhost>
> >>
> >> On arm, bus_dmamap_sync crashes if you have used bus_dmamap_load_raw.
> >
> >How does it crash? Sounds like a bug.
>
> It tries to flush VA 0.
What exactly did you do? It's hard to see what's going on with a
short prose description. References to specific code would be
helpful.
> >If you need to try this as a hack, you can just map the same pages in
> >with kmap or something and issue the CPU flush instructions you
> >suspect are necessary -- not fit for committing permanently but enough
> >to test a hypothesis.
>
> I would prefer to find a long-term solution.
Yes but this may help to see whether you're barking up the wrong tree
altogether and whether to spend any more time on it or try a different
approach.
> The ARM cache flush instructions operate on a virtual address, they are
> not barrier ones like on X86.
x86 has an explicit cache flush instruction (clflush) and barriers
(lfence/mfence/sfence) just like arm has explicit cache flush
instructions (dc/ic) and barriers (dmb/dsb).
i915 uses clflush directly sometimes. On arm, not all of these are
needed for all memory; see the _BUS_DMAMAP_COHERENT logic in
arm32/bus_dma.c. What you need to do here, I don't know. If Linux
doesn't use explicit cache flushes in the lima/panfrost drivers, it's
extremely unlikely that NetBSD needs to.
> I agree that needing to map every buffer into the kernel is a waste, the
> lima and panfrost drivers don't touch them.
>
> The RPi3 DRM driver does need to map every buffer as it does some
> checking of them before handing them to the GPU.
That seems unlikely -- checking of shaders, yes; checking of all
buffers, probably not.
> > What does Linux do in the place where you think we need
> > bus_dmamap_sync?
>
> It doesn't do anything.
>
> Are we setting different page cache properties on buffers to Linux?
We shouldn't but I don't know. What do the lima/panfrost drivers pass
to pmap_enter?
Home |
Main Index |
Thread Index |
Old Index