viridian: add implementation of the HvSendSyntheticClusterIpi hypercall
authorPaul Durrant <paul.durrant@citrix.com>
Tue, 19 Mar 2019 15:29:00 +0000 (16:29 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 5 Apr 2019 08:32:57 +0000 (10:32 +0200)
commitfda96b7382eac9b459910a0cb5b7cc62c6f419c5
treecbfbf26fba86fd1bcf163cbb5deba3a02eef9162
parent26fba3c85571354ecb1a1a3dde77fb38633515d3
viridian: add implementation of the HvSendSyntheticClusterIpi hypercall

This patch adds an implementation of the hypercall as documented in the
specification [1], section 10.5.2. This enlightenment, as with others, is
advertised by CPUID leaf 0x40000004 and is under control of a new
'hcall_ipi' option in libxl.

If used, this enlightenment should mean the guest only takes a single VMEXIT
to issue IPIs to multiple vCPUs rather than the multiple VMEXITs that would
result from using the emulated local APIC.

[1] https://github.com/MicrosoftDocs/Virtualization-Documentation/raw/live/tlfs/Hypervisor%20Top%20Level%20Functional%20Specification%20v5.0C.pdf

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
docs/man/xl.cfg.5.pod.in
tools/libxl/libxl.h
tools/libxl/libxl_dom.c
tools/libxl/libxl_types.idl
xen/arch/x86/hvm/viridian/viridian.c
xen/include/public/hvm/params.h