>>> Jeremy Fitzhardinge <jeremy@xxxxxxxx> 20.05.08 17:17 >>>
>Is this based on your forward-port of the Xen patches? Stock 2.6.25.4
>doesn't have mm_is_pinned().
Yes.
>In fact, in pvops-Xen, I set PG_pinned on all pinned pagetable pages
>(not just the top level), so you can tell whether you're updating a
>pinned pgd/pud/pmd without needing an mm on hand. So I think this
>optimisation can be implemented in current Linux entirely within the
>Xen-specific code.
Ah, I didn't realize that so far. However, 64-bit doesn't use a PG_*
flag for identifying pinned mm-s, because of a conflict in use of
PG_arch_1 in those older kernel versions. But as the conflict is gone
in recent kernel, I should indeed be able to synchronize 64-bit with
32-bit here, then follow your approach of marking all pinned page
tables, and finally get away without adding a new set of abstractions.
One question though - in our 2.6.23 merge (where pv-ops-Xen's
PG_pinned appeared as an alias of PG_owner_priv_1, and where
PG_arch_1 got assigned a meaning for native x86, so PG_pinned
for the traditional patches needed to change anyway) I intentionally
didn't follow pv-ops for our patches, since PG_pinned is among the
flags bad_page() checks for (in the XenSource tree, and I think this
should really also be done in upstream Linux), and hence re-using
the bit here would change behavior for other parts of the kernel.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|