x86-64: guest directed placement of initial p->m map
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 8 Jan 2009 11:32:39 +0000 (11:32 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 8 Jan 2009 11:32:39 +0000 (11:32 +0000)
commitc6d8d541e9073453eb94d5450a4bac9826559b74
tree91c693bbf1aa57a3b61be30bef4d3a5a3bea4c4b
parentf5bf427cd3f237a5d52549431bad79c0463a688d
x86-64: guest directed placement of initial p->m map

By adding another ELF note, the kernel can now direct the hypervisor
(for Dom0) and in the future also the tools (for DomU-s) to place the
initial phys->mach translation table at other than an address
immediately above the kernel/initrd images. This eliminates the size
restriction imposed on this table by Linux (the kernel loads above the
-2Gb boundary, and hence the entire initial mapping cannot reach or
even exceed 2Gb).

There are a few items in this patch I'm not particularly happy with,
but couldn't think of a better solution:
- there is a hidden assumption that pages allocated for the domain are
  put on the domain's page list sequentially
- the way backward compatibility is maintained is placing requirements
  on the kernel side that make the code somewhat convoluted (because
  it
  needs to check where the map is actually placed in quite a few
  places)
- code is there to use 1Gb mappings for the hypervisor created table,
  but lacking a machine with 512G+ memory for immediate testing I
  can't
  verify this works; I know that 2Mb mappings work, and hence imply
  that 1Gb ones would too (of course, if the kernel replaces the table
  - like Linux does -, it cannot use 2Mb/1Gb mappings or even try to
  re-use the page table entries, but I don't consider this a problem)

Signed-off-by: Jan Beulich <jbeulich@novell.com>
tools/include/xen-foreign/reference.size
xen/arch/x86/domain_build.c
xen/arch/x86/mm.c
xen/common/libelf/libelf-dominfo.c
xen/include/public/elfnote.h
xen/include/public/libelf.h
xen/include/public/xen.h