From b8ef617993506c4c92895a942bf40aa404215fb6 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 81d225cab..406270d09 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 8f1c5fe57..0cafa774b 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 162a06f25..3902b9e22 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 5a49ab596..31d97df12 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 ae0fc6d97..f4746b69b 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 75ed9fd6f..e09447bd1 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 97991a878..d51abc2d5 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) {