Re: mlockall and mmap of IO devices don't mix

Ingo Oeser
2003-10-04T10:04:55Z

Hi there,

On Saturday 04 October 2003 11:22, you wrote:
> On Sat, Oct 04, 2003 at 11:17:03AM +0200, Andi Kleen wrote:
> > > This check is only done, if it is a valid pfn (pfn_valid()) of a
> > > present pte.
> >
> > pfn_valid is useless, it doesn't handle all IO holes on x86 for examples.
>
> Sounds like pfn_valid() is buggy on x86. It's supposed to definitively
> indicate whether the PFN is a valid page of ram (and has a valid struct
> page entry.) If it doesn't do that, the architecture implementation is
> wrong.

Looks like it. But it also has to be fast (see include/asm-i386/mmzone.h)
and doesn't even hide the holes in NUMA machines.

We had a page_is_ram() for this somewhere. I don't know, why this is
gone. It would be useful in other places as well.

If the page_is_ram() test could be done using the vma only now, this
would be even better and should be called vma_is_ram() to generalize
these corner cases (today and in the future) and make more
clear what these kind of tests want to do.

Regards

Ingo Oeser