aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/kernel.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-10-27 13:29:35 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-10-27 13:29:35 +0000
commit043e01a4f80f4af518008fa60ac73178d315b5e0 (patch)
treec85c3976c26cc7f9c4480a03b86d949002d96ebe /xen/common/kernel.c
parent2d80f0404ba4b82e27ada015f89170ff5ccd8e71 (diff)
downloadxen-043e01a4f80f4af518008fa60ac73178d315b5e0.tar.gz
xen-043e01a4f80f4af518008fa60ac73178d315b5e0.tar.bz2
xen-043e01a4f80f4af518008fa60ac73178d315b5e0.zip
x86: highmem handling assistance hypercalls
While looking at the origin of very frequently executed hypercalls I realized that the high page accessor functions in Linux would be good candidates to handle in the hypervisor - clearing or copying to/from a high page is a pretty frequent operation (provided there's enough memory in the domain). While prior to the first submission I only measured kernel builds (where the results are not hinting at a meaningful improvement), I now found time to do a more specific analysis: page clearing is being improved by about 20%, page copying doesn't seem to significantly benefit (though that may be an effect of the simplistic copy_page() implementation Xen currently uses) - nevertheless I would think that if one function is supported by the hypervisor, then the other should also be. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/common/kernel.c')
-rw-r--r--xen/common/kernel.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 2a88602e51..f3af91f2ed 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -221,7 +221,8 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE(void) arg)
fi.submap |= 1U << XENFEAT_supervisor_mode_kernel;
#ifdef CONFIG_X86
if ( !is_hvm_vcpu(current) )
- fi.submap |= 1U << XENFEAT_mmu_pt_update_preserve_ad;
+ fi.submap |= (1U << XENFEAT_mmu_pt_update_preserve_ad) |
+ (1U << XENFEAT_highmem_assist);
#endif
break;
default: