On 7/14/25 10:43 AM, Lei Yang wrote: > Does the compile of this series of patches require support for a > special kernel environment? I hit a compile issue after applied you > patches: > [1440/2928] Compiling C object libsystem.a.p/hw_virtio_vhost.c.o > FAILED: libsystem.a.p/hw_virtio_vhost.c.o > cc -m64 -Ilibsystem.a.p -I. -I.. -Isubprojects/dtc/libfdt > -I../subprojects/dtc/libfdt -Isubprojects/libvduse > -I../subprojects/libvduse -Iui -Iqapi -Itrace -Iui/shader > -I/usr/include/pixman-1 -I/usr/include/glib-2.0 > -I/usr/lib64/glib-2.0/include -I/usr/include/libmount > -I/usr/include/blkid -I/usr/include/sysprof-6 > -I/usr/include/gio-unix-2.0 -I/usr/include/slirp > -fdiagnostics-color=auto -Wall -Winvalid-pch -Werror -std=gnu11 -O0 -g > -fstack-protector-strong -Wempty-body -Wendif-labels > -Wexpansion-to-defined -Wformat-security -Wformat-y2k > -Wignored-qualifiers -Wimplicit-fallthrough=2 -Winit-self > -Wmissing-format-attribute -Wmissing-prototypes -Wnested-externs > -Wold-style-declaration -Wold-style-definition -Wredundant-decls > -Wshadow=local -Wstrict-prototypes -Wtype-limits -Wundef -Wvla > -Wwrite-strings -Wno-missing-include-dirs -Wno-psabi > -Wno-shift-negative-value -isystem > /mnt/tests/distribution/command/qemu/linux-headers -isystem > linux-headers -iquote . -iquote /mnt/tests/distribution/command/qemu > -iquote /mnt/tests/distribution/command/qemu/include -iquote > /mnt/tests/distribution/command/qemu/host/include/x86_64 -iquote > /mnt/tests/distribution/command/qemu/host/include/generic -iquote > /mnt/tests/distribution/command/qemu/tcg/i386 -pthread -mcx16 -msse2 > -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE > -fno-strict-aliasing -fno-common -fwrapv -ftrivial-auto-var-init=zero > -fzero-call-used-regs=used-gpr -fPIE -DWITH_GZFILEOP -DCONFIG_SOFTMMU > -DCOMPILING_SYSTEM_VS_USER -MD -MQ libsystem.a.p/hw_virtio_vhost.c.o > -MF libsystem.a.p/hw_virtio_vhost.c.o.d -o > libsystem.a.p/hw_virtio_vhost.c.o -c ../hw/virtio/vhost.c > ../hw/virtio/vhost.c: In function ‘vhost_dev_set_features’: > ../hw/virtio/vhost.c:38:9: error: ‘r’ may be used uninitialized > [-Werror=maybe-uninitialized] > 38 | error_report(fmt ": %s (%d)", ## __VA_ARGS__, \ > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 39 | strerror(-retval), -retval); \ > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../hw/virtio/vhost.c:1006:9: note: in expansion of macro ‘VHOST_OPS_DEBUG’ > 1006 | VHOST_OPS_DEBUG(r, "extended features without device > support"); > | ^~~~~~~~~~~~~~~ > ../hw/virtio/vhost.c:989:9: note: ‘r’ was declared here > 989 | int r; > | ^ > cc1: all warnings being treated as errors > ninja: build stopped: subcommand failed. > make[1]: *** [Makefile:168: run-ninja] Error 1 > make[1]: Leaving directory '/mnt/tests/distribution/command/qemu/build' > make[1]: Entering directory '/mnt/tests/distribution/command/qemu/build' > [1/1493] Generating subprojects/dtc/version_gen.h with a custom command > [2/1493] Generating qemu-version.h with a custom command (wrapped by > meson to capture output) > [3/1492] Compiling C object libsystem.a.p/hw_virtio_vhost.c.o > FAILED: libsystem.a.p/hw_virtio_vhost.c.o > cc -m64 -Ilibsystem.a.p -I. -I.. -Isubprojects/dtc/libfdt > -I../subprojects/dtc/libfdt -Isubprojects/libvduse > -I../subprojects/libvduse -Iui -Iqapi -Itrace -Iui/shader > -I/usr/include/pixman-1 -I/usr/include/glib-2.0 > -I/usr/lib64/glib-2.0/include -I/usr/include/libmount > -I/usr/include/blkid -I/usr/include/sysprof-6 > -I/usr/include/gio-unix-2.0 -I/usr/include/slirp > -fdiagnostics-color=auto -Wall -Winvalid-pch -Werror -std=gnu11 -O0 -g > -fstack-protector-strong -Wempty-body -Wendif-labels > -Wexpansion-to-defined -Wformat-security -Wformat-y2k > -Wignored-qualifiers -Wimplicit-fallthrough=2 -Winit-self > -Wmissing-format-attribute -Wmissing-prototypes -Wnested-externs > -Wold-style-declaration -Wold-style-definition -Wredundant-decls > -Wshadow=local -Wstrict-prototypes -Wtype-limits -Wundef -Wvla > -Wwrite-strings -Wno-missing-include-dirs -Wno-psabi > -Wno-shift-negative-value -isystem > /mnt/tests/distribution/command/qemu/linux-headers -isystem > linux-headers -iquote . -iquote /mnt/tests/distribution/command/qemu > -iquote /mnt/tests/distribution/command/qemu/include -iquote > /mnt/tests/distribution/command/qemu/host/include/x86_64 -iquote > /mnt/tests/distribution/command/qemu/host/include/generic -iquote > /mnt/tests/distribution/command/qemu/tcg/i386 -pthread -mcx16 -msse2 > -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE > -fno-strict-aliasing -fno-common -fwrapv -ftrivial-auto-var-init=zero > -fzero-call-used-regs=used-gpr -fPIE -DWITH_GZFILEOP -DCONFIG_SOFTMMU > -DCOMPILING_SYSTEM_VS_USER -MD -MQ libsystem.a.p/hw_virtio_vhost.c.o > -MF libsystem.a.p/hw_virtio_vhost.c.o.d -o > libsystem.a.p/hw_virtio_vhost.c.o -c ../hw/virtio/vhost.c > ../hw/virtio/vhost.c: In function ‘vhost_dev_set_features’: > ../hw/virtio/vhost.c:38:9: error: ‘r’ may be used uninitialized > [-Werror=maybe-uninitialized] > 38 | error_report(fmt ": %s (%d)", ## __VA_ARGS__, \ > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 39 | strerror(-retval), -retval); \ > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../hw/virtio/vhost.c:1006:9: note: in expansion of macro ‘VHOST_OPS_DEBUG’ > 1006 | VHOST_OPS_DEBUG(r, "extended features without device > support"); > | ^~~~~~~~~~~~~~~ > ../hw/virtio/vhost.c:989:9: note: ‘r’ was declared here > 989 | int r; > | ^ > cc1: all warnings being treated as errors > ninja: build stopped: subcommand failed. > make[1]: *** [Makefile:168: run-ninja] Error 1 > make[1]: Leaving directory '/mnt/tests/distribution/command/qemu/build'
Thank you for reporting the problem. No special kernel requirement to build the series, the above is just a gross mistake on my side in patch 7/13. If you want to test the series, please apply incrementally the following diff. What baffles me is that gcc 14.3.1 and 11.5.0 are not raising the warning (that looks legit/correct) here. I'll fix the above in the next revision. Note that you need a running kernel based on current net-next tree in both the hypervisor and the guest to actually leverage the new feature. Thanks, Paolo --- diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 2eee9b0886..c4eab5ce08 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1003,8 +1003,8 @@ static int vhost_dev_set_features(struct vhost_dev *dev, if (virtio_features_use_extended(features) && !dev->vhost_ops->vhost_set_features_ex) { - VHOST_OPS_DEBUG(r, "extended features without device support"); r = -EINVAL; + VHOST_OPS_DEBUG(r, "extended features without device support"); goto out; }