Re: [PATCH] i386: For debugging, make the initial page table setup less forgiving.

Jeremy Fitzhardinge
2007-04-25T23:08:00Z

Eric W. Biederman wrote:
> No. Please just remove the conditionals on the leaf pages.
>

So, to be specific, you mean make updating the pte_t entries (and pmd_t
entries which refer to hugepages) entries unconditional?

> We know exactly what we require them to be, there is minimal
> cost and no downside to just setting the pte entries to
> what we want them to be for the identity mapping.
>
> It doesn't make sense for paravirtualization or anything else to
> influence that.
>
> This may be redoing work that has been done before but it is
> doing it all one common place.
>

The issue is not a matter of avoiding duplicate work, but making sure
all the pagetables are consistent from Xen's perspective.

Specifically, you may not ever, at any time, create a writable mapping
of a page which is currently part of an active pagetable. This means
that when we're creating mappings of physical memory, the pages which
are part of the current pagetable must be mapped RO. The easiest way I
found to guarantee that is to copy the Xen-provided pagetable as a
template, and only update pages which are missing.

The other way I could do this is to have special-purpose init-time
version of xen_set_pte which checks to see if it's making a RO mapping
RW, and refuse to do it. That would minimize the changes to mm/init.c,
but give init-time set_pte rather unexpected hidden semantics.

J