accel: Add Meson and config support for MSHV accelerator
Introduce a Meson feature option and default-config entry to allow building QEMU with MSHV (Microsoft Hypervisor) acceleration support. This is the first step toward implementing an MSHV backend in QEMU. Signed-off-by: Magnus Kulke <magnuskulke@linux.microsoft.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Link: https://lore.kernel.org/r/20250916164847.77883-2-magnuskulke@linux.microsoft.com [Add error for unavailable accelerator. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6529f31e0d
commit
37e12da5df
4 changed files with 21 additions and 0 deletions
|
|
@ -13,6 +13,9 @@ config TCG
|
|||
config KVM
|
||||
bool
|
||||
|
||||
config MSHV
|
||||
bool
|
||||
|
||||
config XEN
|
||||
bool
|
||||
select FSDEV_9P if VIRTFS
|
||||
|
|
|
|||
13
meson.build
13
meson.build
|
|
@ -334,6 +334,7 @@ elif cpu == 'x86_64'
|
|||
'CONFIG_HVF': ['x86_64-softmmu'],
|
||||
'CONFIG_NVMM': ['i386-softmmu', 'x86_64-softmmu'],
|
||||
'CONFIG_WHPX': ['i386-softmmu', 'x86_64-softmmu'],
|
||||
'CONFIG_MSHV': ['x86_64-softmmu'],
|
||||
}
|
||||
endif
|
||||
|
||||
|
|
@ -883,6 +884,14 @@ accelerators = []
|
|||
if get_option('kvm').allowed() and host_os == 'linux'
|
||||
accelerators += 'CONFIG_KVM'
|
||||
endif
|
||||
|
||||
if get_option('mshv').allowed() and host_os == 'linux'
|
||||
if get_option('mshv').enabled() and host_machine.cpu() != 'x86_64'
|
||||
error('mshv accelerator requires x64_64 host')
|
||||
endif
|
||||
accelerators += 'CONFIG_MSHV'
|
||||
endif
|
||||
|
||||
if get_option('whpx').allowed() and host_os == 'windows'
|
||||
if get_option('whpx').enabled() and host_machine.cpu() != 'x86_64'
|
||||
error('WHPX requires 64-bit host')
|
||||
|
|
@ -952,6 +961,9 @@ endif
|
|||
if 'CONFIG_WHPX' not in accelerators and get_option('whpx').enabled()
|
||||
error('WHPX not available on this platform')
|
||||
endif
|
||||
if 'CONFIG_MSHV' not in accelerators and get_option('mshv').enabled()
|
||||
error('mshv not available on this platform')
|
||||
endif
|
||||
|
||||
xen = not_found
|
||||
if get_option('xen').enabled() or (get_option('xen').auto() and have_system)
|
||||
|
|
@ -4827,6 +4839,7 @@ if have_system
|
|||
summary_info += {'HVF support': config_all_accel.has_key('CONFIG_HVF')}
|
||||
summary_info += {'WHPX support': config_all_accel.has_key('CONFIG_WHPX')}
|
||||
summary_info += {'NVMM support': config_all_accel.has_key('CONFIG_NVMM')}
|
||||
summary_info += {'MSHV support': config_all_accel.has_key('CONFIG_MSHV')}
|
||||
summary_info += {'Xen support': xen.found()}
|
||||
if xen.found()
|
||||
summary_info += {'xen ctrl version': xen.version()}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@ option('malloc', type : 'combo', choices : ['system', 'tcmalloc', 'jemalloc'],
|
|||
|
||||
option('kvm', type: 'feature', value: 'auto',
|
||||
description: 'KVM acceleration support')
|
||||
option('mshv', type: 'feature', value: 'auto',
|
||||
description: 'MSHV acceleration support')
|
||||
option('whpx', type: 'feature', value: 'auto',
|
||||
description: 'WHPX acceleration support')
|
||||
option('hvf', type: 'feature', value: 'auto',
|
||||
|
|
|
|||
|
|
@ -154,6 +154,7 @@ meson_options_help() {
|
|||
printf "%s\n" ' membarrier membarrier system call (for Linux 4.14+ or Windows'
|
||||
printf "%s\n" ' modules modules support (non Windows)'
|
||||
printf "%s\n" ' mpath Multipath persistent reservation passthrough'
|
||||
printf "%s\n" ' mshv MSHV acceleration support'
|
||||
printf "%s\n" ' multiprocess Out of process device emulation support'
|
||||
printf "%s\n" ' netmap netmap network backend support'
|
||||
printf "%s\n" ' nettle nettle cryptography support'
|
||||
|
|
@ -408,6 +409,8 @@ _meson_option_parse() {
|
|||
--disable-modules) printf "%s" -Dmodules=disabled ;;
|
||||
--enable-mpath) printf "%s" -Dmpath=enabled ;;
|
||||
--disable-mpath) printf "%s" -Dmpath=disabled ;;
|
||||
--enable-mshv) printf "%s" -Dmshv=enabled ;;
|
||||
--disable-mshv) printf "%s" -Dmshv=disabled ;;
|
||||
--enable-multiprocess) printf "%s" -Dmultiprocess=enabled ;;
|
||||
--disable-multiprocess) printf "%s" -Dmultiprocess=disabled ;;
|
||||
--enable-netmap) printf "%s" -Dnetmap=enabled ;;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue