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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@@ -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'],
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user