From 81241260ffacb61532fd1885e5e01b507ae5fe9d Mon Sep 17 00:00:00 2001 From: Vladimir Ermakov Date: Fri, 2 Jul 2021 22:36:04 +0300 Subject: [PATCH] qemu: update to 6.1.0, add usb passthrough option One of big change is that QEMU has switched to Meson build system. That result in few changes to build scripts to fix python interpreter usage. Second change that it's not possible to select binaries to build, so now we have to build all targets at once (that require --enable-tools). Options --disable-sheepdog and --disable-vxhs was removed from qemu 6.1.0 and 6.0.0 accordingly. Signed-off-by: Vladimir Ermakov --- utils/qemu/Makefile | 43 ++++++++----------- ...nfigure-allow-disable-fortify_source.patch | 4 +- ...enabling-disabling-libudev-from-comm.patch | 4 +- ...-guest_agent-no-matter-whether-softm.patch | 4 +- ...ilation-when-AS-is-actually-gcc-driv.patch | 24 +++++------ ...util-mmap-alloc-fix-missing-MAP_SYNC.patch | 2 +- ...ate-applets-for-guest-shutdown-modes.patch | 2 +- 7 files changed, 39 insertions(+), 44 deletions(-) diff --git a/utils/qemu/Makefile b/utils/qemu/Makefile index 81d225cab11cb1..406270d09cde68 100644 --- a/utils/qemu/Makefile +++ b/utils/qemu/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qemu -PKG_VERSION:=5.0.0 -PKG_RELEASE:=5 +PKG_VERSION:=6.1.0 +PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=2f13a92a0fa5c8b69ff0796b59b86b080bbb92ebad5d301a7724dd06b5e78cb6 +PKG_HASH:=eebc089db3414bbeedf1e464beda0a7515aad30f73261abc246c9b27503a3c96 PKG_SOURCE_URL:=http://download.qemu.org/ -PKG_LICENSE:=GPL-2.0 +PKG_LICENSE:=GPL-2.0-only PKG_LICENSE_FILES:=LICENSE tcg/LICENSE PKG_MAINTAINER:=Yousong Zhou PKG_CPE_ID:=cpe:/a:qemu:qemu @@ -23,7 +23,7 @@ PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 PKG_USE_MIPS16:=0 -PKG_BUILD_DEPENDS+=spice-protocol +PKG_BUILD_DEPENDS+=spice-protocol meson/host include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/package.mk @@ -96,7 +96,7 @@ endef define Package/qemu-img/install $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-img $(1)/usr/bin/qemu-img + $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/qemu-img $(1)/usr/bin/qemu-img endef @@ -111,7 +111,7 @@ endef define Package/qemu-nbd/install $(INSTALL_DIR) $(1)/usr/sbin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-nbd $(1)/usr/sbin/qemu-nbd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/qemu-nbd $(1)/usr/sbin/qemu-nbd endef @@ -190,12 +190,13 @@ define qemu-target SUBMENU:=Virtualization TITLE:=QEMU target $(1) URL:=http://www.qemu.org - DEPENDS:= +glib2 +libpthread +zlib $(QEMU_DEPS_IN_HOST) $(qemu-target-$(1)-deps) \ + DEPENDS:= +glib2 +libpthread +zlib +libbpf $(QEMU_DEPS_IN_HOST) $(qemu-target-$(1)-deps) \ +QEMU_UI_VNC:qemu-keymaps \ +QEMU_UI_VNC_JPEG:libjpeg \ +QEMU_UI_VNC_PNG:libpng \ +QEMU_UI_VNC_SASL:libsasl2 \ +QEMU_UI_SPICE:libspice-server \ + +QEMU_DEV_USB:libusb-1.0 \ $(if $(filter %-softmmu,$(1)),+libncurses +libfdt +pixman +qemu-firmware-efi $(ICONV_DEPENDS)) endef @@ -257,6 +258,9 @@ config QEMU_UI_VNC_SASL config QEMU_UI_SPICE bool "QEMU SPICE ui support" +config QEMU_DEV_USB + bool "QEMU USB passthrough support" + endif endef @@ -266,6 +270,7 @@ PKG_CONFIG_DEPENDS += \ CONFIG_QEMU_UI_VNC_PNG \ CONFIG_QEMU_UI_VNC_SASL \ CONFIG_QEMU_UI_SPICE \ + CONFIG_QEMU_DEV_USB \ # QEMU configure script does not recognize these options @@ -299,7 +304,9 @@ CONFIGURE_ARGS += \ --enable-vhost-scsi \ --enable-vhost-user \ --enable-vhost-user-fs \ + --enable-vhost-user-blk-server \ --enable-vhost-vsock \ + --enable-vhost-vdpa \ # Image formats support CONFIGURE_ARGS += \ @@ -351,6 +358,8 @@ CONFIGURE_ARGS += \ --enable-live-block-migration \ --enable-membarrier \ --enable-replication \ + --enable-lto \ + --enable-tools \ # Review configure options not explicitly specified here # @@ -375,7 +384,7 @@ CONFIGURE_ARGS += \ --disable-debug-tcg \ --disable-docs \ --disable-gcrypt \ - --disable-git-update \ + --with-git-submodules=ignore \ --disable-glusterfs \ --disable-gnutls \ --disable-guest-agent-msi \ @@ -385,7 +394,7 @@ CONFIGURE_ARGS += \ --disable-libpmem \ --disable-libssh \ --disable-libudev \ - --disable-libusb \ + --$(if $(CONFIG_QEMU_DEV_USB),enable,disable)-libusb \ --disable-libxml2 \ --disable-linux-aio \ --disable-linux-io-uring \ @@ -405,19 +414,16 @@ CONFIGURE_ARGS += \ --disable-rdma \ --disable-sanitizers \ --disable-seccomp \ - --disable-sheepdog \ --disable-smartcard \ --disable-snappy \ --disable-sparse \ --disable-strip \ --disable-tcg-interpreter \ --disable-tcmalloc \ - --disable-tools \ --disable-tpm \ --disable-usb-redir \ --disable-vde \ --disable-virtfs \ - --disable-vxhs \ --disable-werror \ --disable-xen-pci-passthrough \ --disable-xkbcommon \ @@ -435,17 +441,6 @@ MAKE_FLAGS:=$(filter-out \ ARCH=% \ ,$(MAKE_FLAGS)) -QEMU_MAKE_TARGETS := \ - $(if $(CONFIG_PACKAGE_qemu-ga),qemu-ga) \ - $(if $(CONFIG_PACKAGE_qemu-bridge-helper),qemu-bridge-helper) \ - $(if $(CONFIG_PACKAGE_qemu-img),qemu-img) \ - $(if $(CONFIG_PACKAGE_qemu-nbd),qemu-nbd) \ - $(foreach target,$(qemu-target-list),$(if $(CONFIG_PACKAGE_qemu-$(target)),$(target)/all)) \ - -define Build/Compile - $(if $(strip $(QEMU_MAKE_TARGETS)),$(call Build/Compile/Default,$(QEMU_MAKE_TARGETS))) -endef - $(eval $(call BuildPackage,virtio-console-helper)) $(eval $(call BuildPackage,qemu-ga)) $(eval $(call BuildPackage,qemu-bridge-helper)) diff --git a/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch b/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch index 8f1c5fe576cff6..0cafa774b3d6f1 100644 --- a/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch +++ b/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch @@ -11,9 +11,9 @@ OpenWrt base build system decide flavor of fortify_source to use --- a/configure +++ b/configure -@@ -1601,6 +1601,8 @@ for opt do +@@ -1581,6 +1581,8 @@ for opt do ;; - --gdb=*) gdb_bin="$optarg" + --disable-slirp-smbd) slirp_smbd=no ;; + --disable-fortify-source) fortify_source="no" + ;; diff --git a/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch b/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch index 162a06f25b9a1f..3902b9e22cdd04 100644 --- a/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch +++ b/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch @@ -9,9 +9,9 @@ Subject: [PATCH] configure: allow enabling/disabling libudev from command line --- a/configure +++ b/configure -@@ -1601,6 +1601,10 @@ for opt do +@@ -1581,6 +1581,10 @@ for opt do ;; - --gdb=*) gdb_bin="$optarg" + --disable-slirp-smbd) slirp_smbd=no ;; + --enable-libudev) libudev=yes + ;; diff --git a/utils/qemu/patches/0003-configure-enable-guest_agent-no-matter-whether-softm.patch b/utils/qemu/patches/0003-configure-enable-guest_agent-no-matter-whether-softm.patch index 5a49ab596f0aa7..31d97df1205ce7 100644 --- a/utils/qemu/patches/0003-configure-enable-guest_agent-no-matter-whether-softm.patch +++ b/utils/qemu/patches/0003-configure-enable-guest_agent-no-matter-whether-softm.patch @@ -14,7 +14,7 @@ Fixes a512590 ("configure: qemu-ga is only needed with softmmu targets") --- a/configure +++ b/configure -@@ -6414,7 +6414,7 @@ fi +@@ -4375,7 +4375,7 @@ fi # Probe for guest agent support/options if [ "$guest_agent" != "no" ]; then @@ -22,4 +22,4 @@ Fixes a512590 ("configure: qemu-ga is only needed with softmmu targets") + if [ "$guest_agent" = "" -a "$want_tools" = no ] ; then guest_agent=no elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then - tools="qemu-ga\$(EXESUF) $tools" + guest_agent=yes diff --git a/utils/qemu/patches/0005-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch b/utils/qemu/patches/0005-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch index ae0fc6d97bdc3e..f4746b69bae86d 100644 --- a/utils/qemu/patches/0005-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch +++ b/utils/qemu/patches/0005-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch @@ -9,21 +9,21 @@ Subject: [PATCH] pc-bios: fix compilation when $(AS) is actually gcc driver --- a/pc-bios/optionrom/Makefile +++ b/pc-bios/optionrom/Makefile -@@ -34,7 +34,7 @@ endif - QEMU_INCLUDES += -I$(SRC_PATH) +@@ -36,7 +36,7 @@ override CFLAGS += -m32 -include $(SRC_D + endif Wa = -Wa, --ASFLAGS += -32 -+ASFLAGS += $(Wa)-32 - QEMU_CFLAGS += $(call cc-c-option, $(QEMU_CFLAGS), $(Wa)-32) - - build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin -@@ -44,7 +44,7 @@ build-all: multiboot.bin linuxboot.bin l +-override ASFLAGS += -32 ++override ASFLAGS += $(Wa)-32 + override CFLAGS += $(call cc-option, $(Wa)-32) + LD_I386_EMULATION ?= elf_i386 +@@ -47,7 +47,7 @@ all: multiboot.bin linuxboot.bin linuxbo + pvh.img: pvh.o pvh_main.o %.o: %.S -- $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$(TARGET_DIR)$@") -+ $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@ -x assembler -,"AS","$(TARGET_DIR)$@") +- $(call quiet-command,$(CPP) $(CPPFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$@") ++ $(call quiet-command,$(CPP) $(CPPFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@ -x assembler -,"AS","$@") - pvh.img: pvh.o pvh_main.o - $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $^,"BUILD","$(TARGET_DIR)$@") + %.o: %.c + $(call quiet-command,$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@,"CC","$@") diff --git a/utils/qemu/patches/0006-util-mmap-alloc-fix-missing-MAP_SYNC.patch b/utils/qemu/patches/0006-util-mmap-alloc-fix-missing-MAP_SYNC.patch index 75ed9fd6f3818c..e09447bd1ef81a 100644 --- a/utils/qemu/patches/0006-util-mmap-alloc-fix-missing-MAP_SYNC.patch +++ b/utils/qemu/patches/0006-util-mmap-alloc-fix-missing-MAP_SYNC.patch @@ -32,7 +32,7 @@ Signed-off-by: Yousong Zhou #endif /* CONFIG_LINUX */ #include "qemu/osdep.h" -@@ -27,6 +24,13 @@ +@@ -29,6 +26,13 @@ #include #endif diff --git a/utils/qemu/patches/0007-qga-invoke-separate-applets-for-guest-shutdown-modes.patch b/utils/qemu/patches/0007-qga-invoke-separate-applets-for-guest-shutdown-modes.patch index 97991a8788ac05..d51abc2d5b256d 100644 --- a/utils/qemu/patches/0007-qga-invoke-separate-applets-for-guest-shutdown-modes.patch +++ b/utils/qemu/patches/0007-qga-invoke-separate-applets-for-guest-shutdown-modes.patch @@ -38,7 +38,7 @@ https://gitlab.alpinelinux.org/alpine/aports/commit/76b81b486480fd9c3294cd420bcf @@ -111,6 +115,7 @@ void qmp_guest_shutdown(bool has_mode, c execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0", - "hypervisor initiated shutdown", (char*)NULL, environ); + "hypervisor initiated shutdown", (char *)NULL, environ); + execle(fallback_cmd, fallback_cmd, (char*)NULL, environ); _exit(EXIT_FAILURE); } else if (pid < 0) {