mirror of https://github.com/xemu-project/xemu.git
pc,vhost: fixes
Fixes all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAl+zlRgPHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRpmf8H/0BEjxnINJCN12Te+Mot8K9fjwc0zE0SUuYY 25LogfJMCfVy0SZk0ZQV9z33GEL5XyMlXQjEpLmlX4d3mOBLcbutI6UVLhu8+Ixj 89+jFphxIQPDOpA7BnPOD4AJ6TlhbewZ41QBR/J/qv946HayFW9QCAUywuj6H80m T3lw0FmPkd6/YupUdUm0pPgJjowckGis+cAa9UkTlqp8jpzFur28N02fE0L6QO3Z lR6zsk4yEvsVoeXSkEkmSqZGNcwoQCf4BhmDuD7lBLZ0LBvmd37CCoakStpdnQPH Swunmf7Q1H6LRtF7s8ZKXBB/ecVnss3kFTFj5KWx3fJH2SJuHG8= =v205 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging pc,vhost: fixes Fixes all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Tue 17 Nov 2020 09:17:12 GMT # gpg: using RSA key 5D09FD0871C8F85B94CA8A0D281F0DB8D28D5469 # gpg: issuer "mst@redhat.com" # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full] # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full] # Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67 # Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469 * remotes/mst/tags/for_upstream: vhost-user-blk/scsi: Fix broken error handling for socket call contrib/libvhost-user: Fix bad printf format specifiers hw/i386/acpi-build: Fix maybe-uninitialized error when ACPI hotplug off configure: mark vhost-user Linux-only vhost-user-blk-server: depend on CONFIG_VHOST_USER meson: move vhost_user_blk_server to meson.build vhost-user: fix VHOST_USER_ADD/REM_MEM_REG truncation Signed-off-by: Peter Maydell <peter.maydell@linaro.org> # Conflicts: # meson.build
This commit is contained in:
commit
1c7ab0930a
|
@ -1,2 +1,5 @@
|
||||||
blockdev_ss.add(files('export.c'))
|
blockdev_ss.add(files('export.c'))
|
||||||
blockdev_ss.add(when: 'CONFIG_VHOST_USER_BLK_SERVER', if_true: files('vhost-user-blk-server.c'))
|
|
||||||
|
if have_vhost_user_blk_server
|
||||||
|
blockdev_ss.add(files('vhost-user-blk-server.c'))
|
||||||
|
endif
|
||||||
|
|
|
@ -328,8 +328,8 @@ vhost_net=""
|
||||||
vhost_crypto=""
|
vhost_crypto=""
|
||||||
vhost_scsi=""
|
vhost_scsi=""
|
||||||
vhost_vsock=""
|
vhost_vsock=""
|
||||||
vhost_user=""
|
vhost_user="no"
|
||||||
vhost_user_blk_server=""
|
vhost_user_blk_server="auto"
|
||||||
vhost_user_fs=""
|
vhost_user_fs=""
|
||||||
kvm="auto"
|
kvm="auto"
|
||||||
hax="auto"
|
hax="auto"
|
||||||
|
@ -718,7 +718,6 @@ fi
|
||||||
case $targetos in
|
case $targetos in
|
||||||
MINGW32*)
|
MINGW32*)
|
||||||
mingw32="yes"
|
mingw32="yes"
|
||||||
vhost_user="no"
|
|
||||||
audio_possible_drivers="dsound sdl"
|
audio_possible_drivers="dsound sdl"
|
||||||
if check_include dsound.h; then
|
if check_include dsound.h; then
|
||||||
audio_drv_list="dsound"
|
audio_drv_list="dsound"
|
||||||
|
@ -797,6 +796,7 @@ Linux)
|
||||||
audio_possible_drivers="oss alsa sdl pa"
|
audio_possible_drivers="oss alsa sdl pa"
|
||||||
linux="yes"
|
linux="yes"
|
||||||
linux_user="yes"
|
linux_user="yes"
|
||||||
|
vhost_user="yes"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -1247,9 +1247,9 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--enable-vhost-vsock) vhost_vsock="yes"
|
--enable-vhost-vsock) vhost_vsock="yes"
|
||||||
;;
|
;;
|
||||||
--disable-vhost-user-blk-server) vhost_user_blk_server="no"
|
--disable-vhost-user-blk-server) vhost_user_blk_server="disabled"
|
||||||
;;
|
;;
|
||||||
--enable-vhost-user-blk-server) vhost_user_blk_server="yes"
|
--enable-vhost-user-blk-server) vhost_user_blk_server="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-vhost-user-fs) vhost_user_fs="no"
|
--disable-vhost-user-fs) vhost_user_fs="no"
|
||||||
;;
|
;;
|
||||||
|
@ -2341,9 +2341,8 @@ fi
|
||||||
# vhost interdependencies and host support
|
# vhost interdependencies and host support
|
||||||
|
|
||||||
# vhost backends
|
# vhost backends
|
||||||
test "$vhost_user" = "" && vhost_user=yes
|
if test "$vhost_user" = "yes" && test "$linux" != "yes"; then
|
||||||
if test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then
|
error_exit "vhost-user is only available on Linux"
|
||||||
error_exit "vhost-user isn't available on win32"
|
|
||||||
fi
|
fi
|
||||||
test "$vhost_vdpa" = "" && vhost_vdpa=$linux
|
test "$vhost_vdpa" = "" && vhost_vdpa=$linux
|
||||||
if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
|
if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
|
||||||
|
@ -2390,12 +2389,6 @@ if test "$vhost_net" = ""; then
|
||||||
test "$vhost_kernel" = "yes" && vhost_net=yes
|
test "$vhost_kernel" = "yes" && vhost_net=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# libvhost-user is Linux-only
|
|
||||||
test "$vhost_user_blk_server" = "" && vhost_user_blk_server=$linux
|
|
||||||
if test "$vhost_user_blk_server" = "yes" && test "$linux" = "no"; then
|
|
||||||
error_exit "--enable-vhost-user-blk-server is only available on Linux"
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# pkg-config probe
|
# pkg-config probe
|
||||||
|
|
||||||
|
@ -6289,9 +6282,6 @@ fi
|
||||||
if test "$vhost_vdpa" = "yes" ; then
|
if test "$vhost_vdpa" = "yes" ; then
|
||||||
echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
|
echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$vhost_user_blk_server" = "yes" ; then
|
|
||||||
echo "CONFIG_VHOST_USER_BLK_SERVER=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$vhost_user_fs" = "yes" ; then
|
if test "$vhost_user_fs" = "yes" ; then
|
||||||
echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
|
echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
@ -7012,6 +7002,7 @@ NINJA=$ninja $meson setup \
|
||||||
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
|
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
|
||||||
-Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
|
-Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
|
||||||
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
|
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
|
||||||
|
-Dvhost_user_blk_server=$vhost_user_blk_server \
|
||||||
$cross_arg \
|
$cross_arg \
|
||||||
"$PWD" "$source_path"
|
"$PWD" "$source_path"
|
||||||
|
|
||||||
|
|
|
@ -701,7 +701,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT("Adding region: %d\n", dev->nregions);
|
DPRINT("Adding region: %u\n", dev->nregions);
|
||||||
DPRINT(" guest_phys_addr: 0x%016"PRIx64"\n",
|
DPRINT(" guest_phys_addr: 0x%016"PRIx64"\n",
|
||||||
msg_region->guest_phys_addr);
|
msg_region->guest_phys_addr);
|
||||||
DPRINT(" memory_size: 0x%016"PRIx64"\n",
|
DPRINT(" memory_size: 0x%016"PRIx64"\n",
|
||||||
|
@ -848,7 +848,7 @@ vu_set_mem_table_exec_postcopy(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
VhostUserMemory m = vmsg->payload.memory, *memory = &m;
|
VhostUserMemory m = vmsg->payload.memory, *memory = &m;
|
||||||
dev->nregions = memory->nregions;
|
dev->nregions = memory->nregions;
|
||||||
|
|
||||||
DPRINT("Nregions: %d\n", memory->nregions);
|
DPRINT("Nregions: %u\n", memory->nregions);
|
||||||
for (i = 0; i < dev->nregions; i++) {
|
for (i = 0; i < dev->nregions; i++) {
|
||||||
void *mmap_addr;
|
void *mmap_addr;
|
||||||
VhostUserMemoryRegion *msg_region = &memory->regions[i];
|
VhostUserMemoryRegion *msg_region = &memory->regions[i];
|
||||||
|
@ -938,7 +938,7 @@ vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
return vu_set_mem_table_exec_postcopy(dev, vmsg);
|
return vu_set_mem_table_exec_postcopy(dev, vmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT("Nregions: %d\n", memory->nregions);
|
DPRINT("Nregions: %u\n", memory->nregions);
|
||||||
for (i = 0; i < dev->nregions; i++) {
|
for (i = 0; i < dev->nregions; i++) {
|
||||||
void *mmap_addr;
|
void *mmap_addr;
|
||||||
VhostUserMemoryRegion *msg_region = &memory->regions[i];
|
VhostUserMemoryRegion *msg_region = &memory->regions[i];
|
||||||
|
@ -1049,8 +1049,8 @@ vu_set_vring_num_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
unsigned int index = vmsg->payload.state.index;
|
unsigned int index = vmsg->payload.state.index;
|
||||||
unsigned int num = vmsg->payload.state.num;
|
unsigned int num = vmsg->payload.state.num;
|
||||||
|
|
||||||
DPRINT("State.index: %d\n", index);
|
DPRINT("State.index: %u\n", index);
|
||||||
DPRINT("State.num: %d\n", num);
|
DPRINT("State.num: %u\n", num);
|
||||||
dev->vq[index].vring.num = num;
|
dev->vq[index].vring.num = num;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1105,8 +1105,8 @@ vu_set_vring_base_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
unsigned int index = vmsg->payload.state.index;
|
unsigned int index = vmsg->payload.state.index;
|
||||||
unsigned int num = vmsg->payload.state.num;
|
unsigned int num = vmsg->payload.state.num;
|
||||||
|
|
||||||
DPRINT("State.index: %d\n", index);
|
DPRINT("State.index: %u\n", index);
|
||||||
DPRINT("State.num: %d\n", num);
|
DPRINT("State.num: %u\n", num);
|
||||||
dev->vq[index].shadow_avail_idx = dev->vq[index].last_avail_idx = num;
|
dev->vq[index].shadow_avail_idx = dev->vq[index].last_avail_idx = num;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1117,7 +1117,7 @@ vu_get_vring_base_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
{
|
{
|
||||||
unsigned int index = vmsg->payload.state.index;
|
unsigned int index = vmsg->payload.state.index;
|
||||||
|
|
||||||
DPRINT("State.index: %d\n", index);
|
DPRINT("State.index: %u\n", index);
|
||||||
vmsg->payload.state.num = dev->vq[index].last_avail_idx;
|
vmsg->payload.state.num = dev->vq[index].last_avail_idx;
|
||||||
vmsg->size = sizeof(vmsg->payload.state);
|
vmsg->size = sizeof(vmsg->payload.state);
|
||||||
|
|
||||||
|
@ -1478,8 +1478,8 @@ vu_set_vring_enable_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
unsigned int index = vmsg->payload.state.index;
|
unsigned int index = vmsg->payload.state.index;
|
||||||
unsigned int enable = vmsg->payload.state.num;
|
unsigned int enable = vmsg->payload.state.num;
|
||||||
|
|
||||||
DPRINT("State.index: %d\n", index);
|
DPRINT("State.index: %u\n", index);
|
||||||
DPRINT("State.enable: %d\n", enable);
|
DPRINT("State.enable: %u\n", enable);
|
||||||
|
|
||||||
if (index >= dev->max_queues) {
|
if (index >= dev->max_queues) {
|
||||||
vu_panic(dev, "Invalid vring_enable index: %u", index);
|
vu_panic(dev, "Invalid vring_enable index: %u", index);
|
||||||
|
@ -1728,7 +1728,7 @@ vu_handle_vring_kick(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT("Got kick message: handler:%p idx:%d\n",
|
DPRINT("Got kick message: handler:%p idx:%u\n",
|
||||||
dev->vq[index].handler, index);
|
dev->vq[index].handler, index);
|
||||||
|
|
||||||
if (!dev->vq[index].started) {
|
if (!dev->vq[index].started) {
|
||||||
|
@ -1772,7 +1772,7 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
|
||||||
DPRINT("Request: %s (%d)\n", vu_request_to_string(vmsg->request),
|
DPRINT("Request: %s (%d)\n", vu_request_to_string(vmsg->request),
|
||||||
vmsg->request);
|
vmsg->request);
|
||||||
DPRINT("Flags: 0x%x\n", vmsg->flags);
|
DPRINT("Flags: 0x%x\n", vmsg->flags);
|
||||||
DPRINT("Size: %d\n", vmsg->size);
|
DPRINT("Size: %u\n", vmsg->size);
|
||||||
|
|
||||||
if (vmsg->fd_num) {
|
if (vmsg->fd_num) {
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -136,7 +136,7 @@ typedef struct VhostUserMemory {
|
||||||
} VhostUserMemory;
|
} VhostUserMemory;
|
||||||
|
|
||||||
typedef struct VhostUserMemRegMsg {
|
typedef struct VhostUserMemRegMsg {
|
||||||
uint32_t padding;
|
uint64_t padding;
|
||||||
VhostUserMemoryRegion region;
|
VhostUserMemoryRegion region;
|
||||||
} VhostUserMemRegMsg;
|
} VhostUserMemRegMsg;
|
||||||
|
|
||||||
|
|
|
@ -476,7 +476,7 @@ static int unix_sock_new(char *unix_fn)
|
||||||
assert(unix_fn);
|
assert(unix_fn);
|
||||||
|
|
||||||
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (sock <= 0) {
|
if (sock < 0) {
|
||||||
perror("socket");
|
perror("socket");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -320,7 +320,7 @@ static int unix_sock_new(char *unix_fn)
|
||||||
assert(unix_fn);
|
assert(unix_fn);
|
||||||
|
|
||||||
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (sock <= 0) {
|
if (sock < 0) {
|
||||||
perror("socket");
|
perror("socket");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,23 @@ A region is:
|
||||||
|
|
||||||
:mmap offset: 64-bit offset where region starts in the mapped memory
|
:mmap offset: 64-bit offset where region starts in the mapped memory
|
||||||
|
|
||||||
|
Single memory region description
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
+---------+---------------+------+--------------+-------------+
|
||||||
|
| padding | guest address | size | user address | mmap offset |
|
||||||
|
+---------+---------------+------+--------------+-------------+
|
||||||
|
|
||||||
|
:padding: 64-bit
|
||||||
|
|
||||||
|
:guest address: a 64-bit guest address of the region
|
||||||
|
|
||||||
|
:size: a 64-bit size
|
||||||
|
|
||||||
|
:user address: a 64-bit user address
|
||||||
|
|
||||||
|
:mmap offset: 64-bit offset where region starts in the mapped memory
|
||||||
|
|
||||||
Log description
|
Log description
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@ -1281,7 +1298,7 @@ Master message types
|
||||||
``VHOST_USER_ADD_MEM_REG``
|
``VHOST_USER_ADD_MEM_REG``
|
||||||
:id: 37
|
:id: 37
|
||||||
:equivalent ioctl: N/A
|
:equivalent ioctl: N/A
|
||||||
:slave payload: memory region
|
:slave payload: single memory region description
|
||||||
|
|
||||||
When the ``VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS`` protocol
|
When the ``VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS`` protocol
|
||||||
feature has been successfully negotiated, this message is submitted
|
feature has been successfully negotiated, this message is submitted
|
||||||
|
@ -1296,7 +1313,7 @@ Master message types
|
||||||
``VHOST_USER_REM_MEM_REG``
|
``VHOST_USER_REM_MEM_REG``
|
||||||
:id: 38
|
:id: 38
|
||||||
:equivalent ioctl: N/A
|
:equivalent ioctl: N/A
|
||||||
:slave payload: memory region
|
:slave payload: single memory region description
|
||||||
|
|
||||||
When the ``VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS`` protocol
|
When the ``VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS`` protocol
|
||||||
feature has been successfully negotiated, this message is submitted
|
feature has been successfully negotiated, this message is submitted
|
||||||
|
|
|
@ -149,7 +149,7 @@ typedef struct VhostUserMemory {
|
||||||
} VhostUserMemory;
|
} VhostUserMemory;
|
||||||
|
|
||||||
typedef struct VhostUserMemRegMsg {
|
typedef struct VhostUserMemRegMsg {
|
||||||
uint32_t padding;
|
uint64_t padding;
|
||||||
VhostUserMemoryRegion region;
|
VhostUserMemoryRegion region;
|
||||||
} VhostUserMemRegMsg;
|
} VhostUserMemRegMsg;
|
||||||
|
|
||||||
|
@ -800,8 +800,7 @@ static int vhost_user_add_remove_regions(struct vhost_dev *dev,
|
||||||
uint64_t shadow_pcb[VHOST_USER_MAX_RAM_SLOTS] = {};
|
uint64_t shadow_pcb[VHOST_USER_MAX_RAM_SLOTS] = {};
|
||||||
int nr_add_reg, nr_rem_reg;
|
int nr_add_reg, nr_rem_reg;
|
||||||
|
|
||||||
msg->hdr.size = sizeof(msg->payload.mem_reg.padding) +
|
msg->hdr.size = sizeof(msg->payload.mem_reg);
|
||||||
sizeof(VhostUserMemoryRegion);
|
|
||||||
|
|
||||||
/* Find the regions which need to be removed or added. */
|
/* Find the regions which need to be removed or added. */
|
||||||
scrub_shadow_regions(dev, add_reg, &nr_add_reg, rem_reg, &nr_rem_reg,
|
scrub_shadow_regions(dev, add_reg, &nr_add_reg, rem_reg, &nr_rem_reg,
|
||||||
|
|
15
meson.build
15
meson.build
|
@ -756,6 +756,19 @@ statx_test = '''
|
||||||
|
|
||||||
has_statx = cc.links(statx_test)
|
has_statx = cc.links(statx_test)
|
||||||
|
|
||||||
|
have_vhost_user_blk_server = (targetos == 'linux' and
|
||||||
|
'CONFIG_VHOST_USER' in config_host)
|
||||||
|
|
||||||
|
if get_option('vhost_user_blk_server').enabled()
|
||||||
|
if targetos != 'linux'
|
||||||
|
error('vhost_user_blk_server requires linux')
|
||||||
|
elif 'CONFIG_VHOST_USER' not in config_host
|
||||||
|
error('vhost_user_blk_server requires vhost-user support')
|
||||||
|
endif
|
||||||
|
elif get_option('vhost_user_blk_server').disabled() or not have_system
|
||||||
|
have_vhost_user_blk_server = false
|
||||||
|
endif
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# config-host.h #
|
# config-host.h #
|
||||||
#################
|
#################
|
||||||
|
@ -780,6 +793,7 @@ config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
|
||||||
config_host_data.set('CONFIG_CURSES', curses.found())
|
config_host_data.set('CONFIG_CURSES', curses.found())
|
||||||
config_host_data.set('CONFIG_SDL', sdl.found())
|
config_host_data.set('CONFIG_SDL', sdl.found())
|
||||||
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
||||||
|
config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
|
||||||
config_host_data.set('CONFIG_VNC', vnc.found())
|
config_host_data.set('CONFIG_VNC', vnc.found())
|
||||||
config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
|
config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
|
||||||
config_host_data.set('CONFIG_VNC_PNG', png.found())
|
config_host_data.set('CONFIG_VNC_PNG', png.found())
|
||||||
|
@ -2109,6 +2123,7 @@ summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPT
|
||||||
summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
|
summary_info += {'vhost-scsi support': config_host.has_key('CONFIG_VHOST_SCSI')}
|
||||||
summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
|
summary_info += {'vhost-vsock support': config_host.has_key('CONFIG_VHOST_VSOCK')}
|
||||||
summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_USER')}
|
summary_info += {'vhost-user support': config_host.has_key('CONFIG_VHOST_USER')}
|
||||||
|
summary_info += {'vhost-user-blk server support': have_vhost_user_blk_server}
|
||||||
summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
|
summary_info += {'vhost-user-fs support': config_host.has_key('CONFIG_VHOST_USER_FS')}
|
||||||
summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
|
summary_info += {'vhost-vdpa support': config_host.has_key('CONFIG_VHOST_VDPA')}
|
||||||
summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
|
summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
|
||||||
|
|
|
@ -64,6 +64,8 @@ option('xkbcommon', type : 'feature', value : 'auto',
|
||||||
description: 'xkbcommon support')
|
description: 'xkbcommon support')
|
||||||
option('virtiofsd', type: 'feature', value: 'auto',
|
option('virtiofsd', type: 'feature', value: 'auto',
|
||||||
description: 'build virtiofs daemon (virtiofsd)')
|
description: 'build virtiofs daemon (virtiofsd)')
|
||||||
|
option('vhost_user_blk_server', type: 'feature', value: 'auto',
|
||||||
|
description: 'build vhost-user-blk server')
|
||||||
|
|
||||||
option('capstone', type: 'combo', value: 'auto',
|
option('capstone', type: 'combo', value: 'auto',
|
||||||
choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],
|
choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],
|
||||||
|
|
Loading…
Reference in New Issue