I noticed one curious thing while working on some issues with Fedora.
At least in 2.6.17-1.2302_FC6xen, the following evaluates to false:
if (xen_feature(XENFEAT_auto_translated_physmap))
return pfn;
But the head-xen.S looks like this:
.section __xen_guest
.ascii "GUEST_OS=linux,GUEST_VER=2.6"
.ascii ",XEN_VER=xen-3.0"
.ascii ",VIRT_BASE=0x"; utoh __START_KERNEL_map
.ascii ",HYPERCALL_PAGE=0x"; utoh (phys_hypercall_page >>
PAGE_SHIFT)
.ascii ",FEATURES=writable_page_tables"
.ascii "|writable_descriptor_tables"
.ascii "|auto_translated_physmap"
.ascii "|supervisor_mode_kernel"
.ascii ",LOADER=generic"
.byte 0
Everything continues to work just fine, thanks to runtime checks
of xen_feature() like the above.