xen/privcmd: improve performance of MMAPBATCH_V2
authorDavid Vrabel <david.vrabel@citrix.com>
Wed, 11 Mar 2015 14:49:57 +0000 (14:49 +0000)
committerDavid Vrabel <david.vrabel@citrix.com>
Mon, 16 Mar 2015 14:49:15 +0000 (14:49 +0000)
commit4e8c0c8c4bf3a5b5c98046e146ab3884bf7a7d0e
treee2da5980fd405c7109a342b13f0a2a1214f94b61
parent628c28eefd6f2cef03b212081b466ae43fd093a3
xen/privcmd: improve performance of MMAPBATCH_V2

Make the IOCTL_PRIVCMD_MMAPBATCH_V2 (and older V1 version) map
multiple frames at a time rather than one at a time, despite the pages
being non-consecutive GFNs.

xen_remap_foreign_mfn_array() is added which maps an array of GFNs
(instead of a consecutive range of GFNs).

Since per-frame errors are returned in an array, privcmd must set the
MMAPBATCH_V1 error bits as part of the "report errors" phase, after
all the frames are mapped.

Migrate times are significantly improved (when using a PV toolstack
domain).  For example, for an idle 12 GiB PV guest:

        Before     After
  real  0m38.179s  0m26.868s
  user  0m15.096s  0m13.652s
  sys   0m28.988s  0m18.732s

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
arch/arm/xen/enlighten.c
arch/x86/xen/mmu.c
drivers/xen/privcmd.c
drivers/xen/xlate_mmu.c
include/xen/xen-ops.h