diff --git a/utils/qemu/Makefile b/utils/qemu/Makefile
index d47e74edf..22b46c5ec 100644
--- a/utils/qemu/Makefile
+++ b/utils/qemu/Makefile
@@ -9,10 +9,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qemu
-PKG_VERSION:=6.1.0
+PKG_VERSION:=6.2.0
 PKG_RELEASE:=$(AUTORELEASE)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=eebc089db3414bbeedf1e464beda0a7515aad30f73261abc246c9b27503a3c96
+PKG_HASH:=68e15d8e45ac56326e0b9a4afa8b49a3dfe8aba3488221d098c84698bca65b45
 PKG_SOURCE_URL:=http://download.qemu.org/
 PKG_LICENSE:=GPL-2.0-only
 PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
@@ -53,7 +53,7 @@ define Package/qemu-ga
   SUBMENU:=Virtualization
   TITLE:=QEMU Guest Agent
   URL:=http://www.qemu.org
-  DEPENDS:= +glib2 +virtio-console-helper +libstdcpp $(QEMU_DEPS_IN_GUEST)
+  DEPENDS:= +glib2 +virtio-console-helper +libstdcpp +libudev $(QEMU_DEPS_IN_GUEST)
 endef
 
 define Package/qemu-ga/install
@@ -197,7 +197,7 @@ define qemu-target
 	+QEMU_UI_VNC_SASL:libsasl2 \
 	+QEMU_UI_SPICE:libspice-server \
 	+QEMU_DEV_USB:libusb-1.0 \
-	$(if $(filter %-softmmu,$(1)),+libncurses +libfdt +libslirp +pixman +qemu-firmware-efi $(ICONV_DEPENDS))
+	$(if $(filter %-softmmu,$(1)),+libncurses +libfdt +libslirp +libudev +pixman +qemu-firmware-efi $(ICONV_DEPENDS))
   endef
 
   define Package/qemu-$(1)/description
@@ -390,12 +390,10 @@ CONFIGURE_ARGS +=			\
 	--disable-glusterfs		\
 	--disable-gnutls		\
 	--disable-guest-agent-msi	\
-	--disable-jemalloc		\
 	--disable-libiscsi		\
 	--disable-libnfs		\
 	--disable-libpmem		\
 	--disable-libssh		\
-	--disable-libudev		\
 	--$(if $(CONFIG_QEMU_DEV_USB),enable,disable)-libusb		\
 	--disable-libxml2		\
 	--disable-linux-aio		\
@@ -421,7 +419,6 @@ CONFIGURE_ARGS +=			\
 	--disable-sparse		\
 	--disable-strip			\
 	--disable-tcg-interpreter	\
-	--disable-tcmalloc		\
 	--disable-tpm			\
 	--disable-usb-redir		\
 	--disable-vde			\
@@ -431,6 +428,10 @@ CONFIGURE_ARGS +=			\
 	--disable-xkbcommon		\
 	--disable-xfsctl		\
 	--disable-zstd			\
+	--disable-selinux		\
+	--disable-oss			\
+	--disable-alsa			\
+	--disable-pa			\
 
 CONFIGURE_ARGS += --target-list='$(foreach target,$(qemu-target-list),$(if $(CONFIG_PACKAGE_qemu-$(target)),$(target)))'
 CONFIGURE_ARGS += $(if $(CONFIG_PACKAGE_qemu-ga),--enable-guest-agent)
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 0cafa774b..92d5fe79c 100644
--- a/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch
+++ b/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch
@@ -11,12 +11,12 @@ OpenWrt base build system decide flavor of fortify_source to use
 
 --- a/configure
 +++ b/configure
-@@ -1581,6 +1581,8 @@ for opt do
+@@ -1194,6 +1194,8 @@ for opt do
    ;;
-   --disable-slirp-smbd) slirp_smbd=no
+   --enable-jemalloc) meson_option_parse --enable-malloc=jemalloc jemalloc
    ;;
 +  --disable-fortify-source) fortify_source="no"
 +  ;;
-   *)
-       echo "ERROR: unknown option $opt"
-       echo "Try '$0 --help' for more information"
+   # everything else has the same name in configure and meson
+   --enable-* | --disable-*) meson_option_parse "$opt" "$optarg"
+   ;;
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
deleted file mode 100644
index 3902b9e22..000000000
--- a/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 608b183335725bcc1c2dd8b615551c49ec3b9c88 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Mon, 11 May 2020 10:46:37 +0800
-Subject: [PATCH] configure: allow enabling/disabling libudev from command line
-
----
- configure | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/configure
-+++ b/configure
-@@ -1581,6 +1581,10 @@ for opt do
-   ;;
-   --disable-slirp-smbd) slirp_smbd=no
-   ;;
-+  --enable-libudev) libudev=yes
-+  ;;
-+  --disable-libudev) libudev=no
-+  ;;
-   --disable-fortify-source) fortify_source="no"
-   ;;
-   *)
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 31d97df12..6c8537941 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
-@@ -4375,7 +4375,7 @@ fi
+@@ -3331,7 +3331,7 @@ fi
  # Probe for guest agent support/options
  
  if [ "$guest_agent" != "no" ]; then
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 f4746b69b..3774be35f 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,7 +9,7 @@ Subject: [PATCH] pc-bios: fix compilation when $(AS) is actually gcc driver
 
 --- a/pc-bios/optionrom/Makefile
 +++ b/pc-bios/optionrom/Makefile
-@@ -36,7 +36,7 @@ override CFLAGS += -m32 -include $(SRC_D
+@@ -35,7 +35,7 @@ override CFLAGS += -m32 -include $(SRC_D
  endif
  
  Wa = -Wa,
@@ -18,7 +18,7 @@ Subject: [PATCH] pc-bios: fix compilation when $(AS) is actually gcc driver
  override CFLAGS += $(call cc-option, $(Wa)-32)
  
  LD_I386_EMULATION ?= elf_i386
-@@ -47,7 +47,7 @@ all: multiboot.bin linuxboot.bin linuxbo
+@@ -44,7 +44,7 @@ override LDFLAGS = -m $(LD_I386_EMULATIO
  pvh.img: pvh.o pvh_main.o
  
  %.o: %.S
diff --git a/utils/qemu/patches/0008-falloc.patch b/utils/qemu/patches/0008-falloc.patch
deleted file mode 100644
index 76830cd12..000000000
--- a/utils/qemu/patches/0008-falloc.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/block/export/fuse.c
-+++ b/block/export/fuse.c
-@@ -31,6 +31,9 @@
- #include <fuse.h>
- #include <fuse_lowlevel.h>
- 
-+#if defined(CONFIG_FALLOCATE_PUNCH_HOLE) || defined(CONFIG_FALLOCATE_ZERO_RANGE)
-+#include <linux/falloc.h>
-+#endif
- 
- /* Prevent overly long bounce buffer allocations */
- #define FUSE_MAX_BOUNCE_BYTES (MIN(BDRV_REQUEST_MAX_BYTES, 64 * 1024 * 1024))
diff --git a/utils/qemu/patches/0009-fs.patch b/utils/qemu/patches/0009-fs.patch
deleted file mode 100644
index 57cca8874..000000000
--- a/utils/qemu/patches/0009-fs.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 28031d5c7427aec6d6138920b92c59b999a349ed Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Sat, 28 Aug 2021 00:03:01 +0200
-Subject: [PATCH] block/export/fuse.c: fix fuse-lseek on uclibc or musl
-
-Include linux/fs.h to avoid the following build failure on uclibc or
-musl raised since version 6.0.0:
-
-../block/export/fuse.c: In function 'fuse_lseek':
-../block/export/fuse.c:641:19: error: 'SEEK_HOLE' undeclared (first use in this function)
-  641 |     if (whence != SEEK_HOLE && whence != SEEK_DATA) {
-      |                   ^~~~~~~~~
-../block/export/fuse.c:641:19: note: each undeclared identifier is reported only once for each function it appears in
-../block/export/fuse.c:641:42: error: 'SEEK_DATA' undeclared (first use in this function); did you mean 'SEEK_SET'?
-  641 |     if (whence != SEEK_HOLE && whence != SEEK_DATA) {
-      |                                          ^~~~~~~~~
-      |                                          SEEK_SET
-
-Fixes:
- - http://autobuild.buildroot.org/results/33c90ebf04997f4d3557cfa66abc9cf9a3076137
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Message-Id: <20210827220301.272887-1-fontaine.fabrice@gmail.com>
-Signed-off-by: Hanna Reitz <hreitz@redhat.com>
----
- block/export/fuse.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/block/export/fuse.c
-+++ b/block/export/fuse.c
-@@ -38,6 +38,9 @@
- /* Prevent overly long bounce buffer allocations */
- #define FUSE_MAX_BOUNCE_BYTES (MIN(BDRV_REQUEST_MAX_BYTES, 64 * 1024 * 1024))
- 
-+#ifdef __linux__
-+#include <linux/fs.h>
-+#endif
- 
- typedef struct FuseExport {
-     BlockExport common;
diff --git a/utils/qemu/patches/0010-no-tests.patch b/utils/qemu/patches/0010-no-tests.patch
index cc0eafe57..40125b411 100644
--- a/utils/qemu/patches/0010-no-tests.patch
+++ b/utils/qemu/patches/0010-no-tests.patch
@@ -1,7 +1,7 @@
 --- a/meson.build
 +++ b/meson.build
-@@ -2297,10 +2297,6 @@ specific_ss.add_all(when: 'CONFIG_BSD_US
- linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
+@@ -2619,10 +2619,6 @@ specific_ss.add_all(when: 'CONFIG_BSD_US
+ linux_user_ss.add(files('thunk.c'))
  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
  
 -# needed for fuzzing binaries
@@ -11,7 +11,7 @@
  # accel modules
  tcg_real_module_ss = ss.source_set()
  tcg_real_module_ss.add_all(when: 'CONFIG_TCG_MODULAR', if_true: tcg_module_ss)
-@@ -2780,10 +2776,6 @@ subdir('scripts')
+@@ -3107,10 +3103,6 @@ subdir('scripts')
  subdir('tools')
  subdir('pc-bios')
  subdir('docs')