Re: [PATCH v2] powerpc: warn on emulation of dcbz instruction in kernel mode
From: Segher Boessenkool
Date: Fri Aug 23 2024 - 15:32:59 EST
Hi!
On Fri, Aug 23, 2024 at 03:54:59PM +0200, Christoph Hellwig wrote:
> On Fri, Aug 23, 2024 at 08:06:00AM -0500, Segher Boessenkool wrote:
> > What does "uncached memory" even mean here? Literally it would be
> > I=1 memory (uncachEABLE memory), but more likely you want M=0 memory
> > here ("non-memory memory", "not well-behaved memory", MMIO often).
>
> Regular kernel memory vmapped with pgprot_noncached().
So, I=1 (and G=1). Caching inhibited and guarded. But M=1 (memory
coherence required) as with any other real memory :-)
> > If memset() is expected to be used with M=0, you cannot do any serious
> > optimisations to it at all. If memset() is expected to be used with I=1
> > it should use a separate code path for it, probably the caller should
> > make the distinction.
>
> DMA coherent memory which uses uncached memory for platforms that
> do not provide hardware dma coherence can end up just about anywhere
> in the kernel. We could use special routines for a few places in
> the DMA subsystem, but there might be plenty of others.
Yeah. It will just be plenty slow, as we see here, that's what the
warning is for; but it works just fine :-)
The memset() code itself could chech for the storage attributes, but
that is probably more expensive than just assuming the happy case.
Maybe someone could try it out though!
Segher