aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/kernel.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-06-05 10:42:40 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-06-05 10:42:40 +0100
commitad2de846762c7af9b3661f5ef9e9d7414dd4ccb5 (patch)
tree4e0c56018ebe333da1fe96c49c118047e57dc646 /xen/common/kernel.c
parent44beffcd619b6cfea4afb3875258de6245fb2ab9 (diff)
downloadxen-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.c5
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) |