Re: [Xen-devel] Re: [PATCH 1 of 7] x86: add _PAGE_IOMAP pte flag for IO mappings

Nick Piggin
2008-09-10T16:55:33Z

On Thursday 11 September 2008 02:38, Jeremy Fitzhardinge wrote:
> Avi Kivity wrote:
> > Actually it's more of a "no struct page" flag, which implies no
> > refcounting.
>
> Hm, is that actually true enough to define it? Could we rename it
> something like _PAGE_NOSTRUCTPAGE or something a bit more specific than
> "special"?

It complements vm_normal_page, which was there first (and coined by
Linus). It is the opposite of normal. This question always comes up
and my answer is always yes, if you can convince Linus to rename
vm_normal_page to the corresponding term :)

It's not exactly _PAGE_NOSTRUCTPAGE. There can be struct pages under
there, but you're not to touch them.

> > And not having a struct page should correspond well to a pte not
> > requiring pfn->mfn conversion and being an I/O page.
>
> But _PAGE_SPECIAL is only set in a few places. It's not set in ioremap
> mappings and so on. Should it be?

Kernel address space, you mean? No, it is only ever used on user
addresses.

> There's also the hiccup that it gets set in a pte with pte_mkspecial() -
> but at that point its too late because you've already constructed the
> pte and done the pfn->mfn conversion. _PAGE_IOMAP can only be set when
> you initially construct the pte out of a frame number and a pgprot.

I don't see this would be any problem because the pte is always constructed
in a single line in both places where it is used.