Re: How to efficiently handle DMA and cache on ARMv7 ? (was "Isget_user_pages() enough to prevent pages from being swapped out ?")

From: Russell King - ARM Linux
Date: Fri Aug 07 2009 - 05:59:33 EST


On Fri, Aug 07, 2009 at 10:54:27AM +0100, Jamie Lokier wrote:
> Russell King - ARM Linux wrote:
> > On Fri, Aug 07, 2009 at 09:58:30AM +0200, Laurent Pinchart wrote:
> > > Sorry about this, but I'm not sure to understand the speculative prefetching
> > > cache issue completely.
> >
> > The general case with speculative prefetching is that if memory is
> > accessible, it can be prefetched.
> >
> > In other words, if we mapped devices without NX (non-exec) set, the
> > CPU can prefetch instructions from devices, causing random read
> > accesses. Yes, I know it sounds crazy, but that's what I'm told
> > _can_ happen.
>
> 1. Does the architecture not prevent speculative instruction
> prefetches from crossing a page boundary? It would be handy under the
> circumstances.
>
> 2. Is NX available on all the CPUs with speculative prefetching
> behaviour? If it is, just use that for device mappings?

I was using it as an example. Setting NX doesn't stop _data_ speculative
prefetching to _memory_ areas (as opposed to device areas.)

Getting things like the right memory attributes in place and ensuring
people don't abuse them is the first step towards getting this stuff
right. It's an ongoing project.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/