diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-06-05 10:42:40 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-06-05 10:42:40 +0100 |
commit | ad2de846762c7af9b3661f5ef9e9d7414dd4ccb5 (patch) | |
tree | 4e0c56018ebe333da1fe96c49c118047e57dc646 /xen/common/kernel.c | |
parent | 44beffcd619b6cfea4afb3875258de6245fb2ab9 (diff) | |
download | xen-ad2de846762c7af9b3661f5ef9e9d7414dd4ccb5.tar.gz xen-ad2de846762c7af9b3661f5ef9e9d7414dd4ccb5.tar.bz2 xen-ad2de846762c7af9b3661f5ef9e9d7414dd4ccb5.zip |
Create new vmassist type 'pae_extended_cr3'. Only advertise
pae_pgdir_above_4gb tp guests that have enabled this vmassist.
Control tools ensure all PAE page directories are below 4GB
unless the vmassist is enabled (triggered via an extended-cr3
option in guest Elf header).
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/common/kernel.c')
-rw-r--r-- | xen/common/kernel.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 480138a065..8930c53d5c 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -184,6 +184,7 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE(void) arg) case XENVER_get_features: { xen_feature_info_t fi; + struct domain *d = current->domain; if ( copy_from_guest(&fi, arg, 1) ) return -EFAULT; @@ -191,7 +192,9 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE(void) arg) switch ( fi.submap_idx ) { case 0: - fi.submap = (1U << XENFEAT_pae_pgdir_above_4gb); + fi.submap = 0; + if ( VM_ASSIST(d, VMASST_TYPE_pae_extended_cr3) ) + fi.submap |= (1U << XENFEAT_pae_pgdir_above_4gb); if ( shadow_mode_translate(current->domain) ) fi.submap |= (1U << XENFEAT_writable_page_tables) | |