]> xenbits.xensource.com Git - xen.git/commit
HYPERCALL_version_op. New hypercall mirroring XENVER_ but sane.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 22 Mar 2016 20:53:19 +0000 (16:53 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 30 Mar 2016 20:01:00 +0000 (16:01 -0400)
commit2716d875379d538c1dfccad78a99ca7db2e09f90
treef14d7936245153bdd988e80e38b948943f38c3f4
parent72a91f67714638ea664155ee253bcb02b1c6ae54
HYPERCALL_version_op. New hypercall mirroring XENVER_ but sane.

This hypercall mirrors the XENVER_ in that it has similar functionality.
However it is designed differently:
 - No compat layer. The data structures are the same size on 32
   as on 64-bit.
 - The hypercall accepts three arguments - the command, pointer to
   an buffer, and the length of the buffer.
 - Each sub-ops can be "probed" for size by returning the size of
   buffer that will be needed - if the buffer is NULL.
 - Subops can complete even if the buffer is too small - truncated
   data will be filled and hypercall will return -ENOBUFS.
 - VERSION_commandline, VERSION_changeset are privileged.
 - There is no XENVER_compile_info equivalent.
 - The hypercall can return -EPERM and toolstack/OSes are expected
   to deal with. However there are three subops: XEN_VERSION_version,
   XEN_VERSION_platform_parameters and XEN_VERSION_get_features
   that will always return an value as guests cannot survive without them.

While we combine some of the common code between XENVER_ and VERSION_
take the liberty of moving pae_extended_cr3 in x86 area.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov> [XSM bits]
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
16 files changed:
tools/flask/policy/policy/modules/xen/xen.te
xen/arch/arm/traps.c
xen/arch/x86/hvm/hvm.c
xen/arch/x86/x86_64/compat/entry.S
xen/arch/x86/x86_64/entry.S
xen/common/compat/kernel.c
xen/common/kernel.c
xen/include/public/arch-arm.h
xen/include/public/version.h
xen/include/public/xen.h
xen/include/xen/hypercall.h
xen/include/xsm/dummy.h
xen/include/xsm/xsm.h
xen/xsm/dummy.c
xen/xsm/flask/hooks.c
xen/xsm/flask/policy/access_vectors