[pve-devel] [PATCH qemu 1/2] update submodule and patches to QEMU 10.0.2

Fiona Ebner f.ebner at proxmox.com
Mon Jun 2 12:22:26 CEST 2025


Only minor changes this time:

Adapt to changed include paths:
32cad1ffb8 ("include: Rename sysemu/ -> system/")
407bc4bf90 ("qapi: Move include/qapi/qmp/ to include/qobject/")

Adapt to a function signature change:
4822128693 ("migration: Drop inactivate_disk param in
qemu_savevm_state_complete*")

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
 ...d-support-for-sync-bitmap-mode-never.patch |  30 ++--
 ...-support-for-conditional-and-always-.patch |   2 +-
 ...check-for-bitmap-mode-without-bitmap.patch |   4 +-
 ...-to-bdrv_dirty_bitmap_merge_internal.patch |   2 +-
 .../0006-mirror-move-some-checks-to-qmp.patch |   6 +-
 ...race-with-clients-disconnecting-earl.patch |   8 +-
 ...ial-deadlock-when-draining-during-tr.patch |   2 +-
 ...Reset-free_temps-before-tcg_optimize.patch |  82 ----------
 ...t-TSCs-of-parked-vCPUs-too-on-VM-res.patch | 149 ------------------
 ...x10_version-filtered-when-prefix-is-.patch |  41 -----
 .../extra/0006-net-Fix-announce_self.patch    |  67 --------
 ...ectly-compute-Ethernet-packet-offset.patch |  67 --------
 ...-Windows-PCI-Label-Id-bug-workaround.patch |  96 -----------
 ...pci-Use-modulo-to-select-MSI-vector-.patch |  53 -------
 ...-link-status-bits-for-downstream-por.patch |  63 --------
 ...x-pba-read-vector-poll-end-calculati.patch |  36 -----
 ...k-file-change-locking-default-to-off.patch |   6 +-
 ...he-CPU-model-to-kvm64-32-instead-of-.patch |   4 +-
 ...ui-spice-default-to-pve-certificates.patch |   2 +-
 ...erfs-no-default-logfile-if-daemonize.patch |   2 +-
 ...lock-rbd-disable-rbd_cache_writethro.patch |   2 +-
 ...PVE-Up-glusterfs-allow-partial-reads.patch |   2 +-
 ...return-success-on-info-without-snaps.patch |   2 +-
 ...dd-add-osize-and-read-from-to-stdin-.patch |  12 +-
 ...E-Up-qemu-img-dd-add-isize-parameter.patch |  14 +-
 ...PVE-Up-qemu-img-dd-add-n-skip_create.patch |  10 +-
 ...-add-l-option-for-loading-a-snapshot.patch |  14 +-
 ...virtio-balloon-improve-query-balloon.patch |   4 +-
 .../0014-PVE-qapi-modify-query-machines.patch |   8 +-
 .../0015-PVE-qapi-modify-spice-query.patch    |   4 +-
 ...nnel-implementation-for-savevm-async.patch |  14 +-
 ...async-for-background-state-snapshots.patch |  47 +++---
 ...add-optional-buffer-size-to-QEMUFile.patch |  58 +++----
 ...add-the-zeroinit-block-driver-filter.patch |   8 +-
 ...-Add-dummy-id-command-line-parameter.patch |  10 +-
 ...t-target-i386-disable-LINT0-after-re.patch |   2 +-
 ...le-posix-make-locking-optiono-on-cre.patch |  20 +--
 ...3-PVE-monitor-disable-oob-capability.patch |   2 +-
 ...sed-balloon-qemu-4-0-config-size-fal.patch |   4 +-
 ...E-Allow-version-code-in-machine-type.patch |  18 +--
 ...e-bcs-bitmap-initialization-to-job-c.patch |   2 +-
 ...VE-Backup-add-vma-backup-format-code.patch |  18 +--
 ...-Backup-add-backup-dump-block-driver.patch |  12 +-
 ...d-sequential-job-transaction-support.patch |   8 +-
 ...ckup-Proxmox-backup-patches-for-QEMU.patch |  39 ++---
 ...estore-new-command-to-restore-from-p.patch |  10 +-
 ...k-driver-to-map-backup-archives-into.patch |  20 +--
 ...ct-stderr-to-journal-when-daemonized.patch |   8 +-
 ...igrate-dirty-bitmap-state-via-savevm.patch |  26 +--
 ...dirty-bitmap-migrate-other-bitmaps-e.patch |   2 +-
 ...all-back-to-open-iscsi-initiatorname.patch |   2 +-
 ...PVE-block-stream-increase-chunk-size.patch |   2 +-
 .../0038-block-add-alloc-track-driver.patch   |  12 +-
 ...-rbd-workaround-for-ceph-issue-53784.patch |   2 +-
 ...-fix-handling-of-holes-in-.bdrv_co_b.patch |   2 +-
 ...k-rbd-implement-bdrv_co_block_status.patch |   2 +-
 ...rror-out-when-auto-remove-is-not-set.patch |   2 +-
 ...d-seemingly-superfluous-child-permis.patch |   2 +-
 .../0044-PVE-backup-add-fleecing-option.patch |  46 +++---
 ...ve-error-when-copy-before-write-fail.patch |   8 +-
 ...up-fixup-error-handling-for-fleecing.patch |   2 +-
 ...r-out-setting-up-snapshot-access-for.patch |   2 +-
 ...device-name-in-device-info-structure.patch |   2 +-
 ...de-device-name-in-error-when-setting.patch |   2 +-
 ...e-version-deprecation-for-Proxmox-VE.patch |   8 +-
 ...void-timer-storms-on-periodic-timers.patch |   8 +-
 ...e-full-64-bit-target-value-of-the-co.patch |  25 ++-
 ...-hpet-accept-64-bit-reads-and-writes.patch |  26 +--
 ...e-read-only-bits-directly-in-new_val.patch |  10 +-
 ...et-remove-unnecessary-variable-index.patch |  10 +-
 ...re-high-bits-of-comparator-in-32-bit.patch |   6 +-
 ...and-cleanup-persistence-of-interrupt.patch |  10 +-
 ...rove-setting-state-of-snapshot-opera.patch |   6 +-
 ...ame-saved_vm_running-to-vm_needs_sta.patch |  12 +-
 ...rove-runstate-preservation-cleanup-e.patch |  18 +--
 ...se-dedicated-iothread-for-state-file.patch |  26 ++-
 ...at-failure-to-set-iothread-context-a.patch |   2 +-
 ...-up-directly-in-setup_snapshot_acces.patch |   2 +-
 ...r-out-helper-to-clear-backup-state-s.patch |   2 +-
 ...r-out-helper-to-initialize-backup-st.patch |   2 +-
 ...backup-add-target-ID-in-backup-state.patch |   2 +-
 ...evice-info-allow-caller-to-specify-f.patch |   2 +-
 ...ment-backup-access-setup-and-teardow.patch |  18 +--
 ...or-out-get_single_device_info-helper.patch |   2 +-
 ...ment-bitmap-support-for-external-bac.patch |  16 +-
 ...p-access-api-indicate-situation-wher.patch |   6 +-
 ...p-access-api-explicit-bitmap-mode-pa.patch |   6 +-
 ...kup-access-api-simplify-bitmap-logic.patch |   8 +-
 debian/patches/series                         |   9 --
 qemu                                          |   2 +-
 90 files changed, 390 insertions(+), 1064 deletions(-)
 delete mode 100644 debian/patches/extra/0003-tcg-Reset-free_temps-before-tcg_optimize.patch
 delete mode 100644 debian/patches/extra/0004-target-i386-Reset-TSCs-of-parked-vCPUs-too-on-VM-res.patch
 delete mode 100644 debian/patches/extra/0005-i386-cpu-Mark-avx10_version-filtered-when-prefix-is-.patch
 delete mode 100644 debian/patches/extra/0006-net-Fix-announce_self.patch
 delete mode 100644 debian/patches/extra/0007-net-dump-Correctly-compute-Ethernet-packet-offset.patch
 delete mode 100644 debian/patches/extra/0008-pci-acpi-Windows-PCI-Label-Id-bug-workaround.patch
 delete mode 100644 debian/patches/extra/0009-hw-usb-hcd-xhci-pci-Use-modulo-to-select-MSI-vector-.patch
 delete mode 100644 debian/patches/extra/0010-pci-ensure-valid-link-status-bits-for-downstream-por.patch
 delete mode 100644 debian/patches/extra/0011-pci-msix-Fix-msix-pba-read-vector-poll-end-calculati.patch

diff --git a/debian/patches/bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch b/debian/patches/bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch
index ad1fc5d..ba25f6f 100644
--- a/debian/patches/bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch
+++ b/debian/patches/bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch
@@ -38,7 +38,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  5 files changed, 142 insertions(+), 28 deletions(-)
 
 diff --git a/block/mirror.c b/block/mirror.c
-index 2afe700b4d..c3d4be9b15 100644
+index a53582f17b..fafca1360e 100644
 --- a/block/mirror.c
 +++ b/block/mirror.c
 @@ -51,7 +51,7 @@ typedef struct MirrorBlockJob {
@@ -258,10 +258,10 @@ index 2afe700b4d..c3d4be9b15 100644
                       base_read_only, errp);
      if (!job) {
 diff --git a/blockdev.c b/blockdev.c
-index 6740663fda..38fa63155c 100644
+index 1d1f27cfff..ec45bbaa52 100644
 --- a/blockdev.c
 +++ b/blockdev.c
-@@ -2781,6 +2781,9 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2797,6 +2797,9 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
                                     BlockDriverState *target,
                                     const char *replaces,
                                     enum MirrorSyncMode sync,
@@ -271,7 +271,7 @@ index 6740663fda..38fa63155c 100644
                                     BlockMirrorBackingMode backing_mode,
                                     bool zero_target,
                                     bool has_speed, int64_t speed,
-@@ -2799,6 +2802,7 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2815,6 +2818,7 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
  {
      BlockDriverState *unfiltered_bs;
      int job_flags = JOB_DEFAULT;
@@ -279,7 +279,7 @@ index 6740663fda..38fa63155c 100644
  
      GLOBAL_STATE_CODE();
      GRAPH_RDLOCK_GUARD_MAINLOOP();
-@@ -2853,6 +2857,29 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2869,6 +2873,29 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
          sync = MIRROR_SYNC_MODE_FULL;
      }
  
@@ -309,7 +309,7 @@ index 6740663fda..38fa63155c 100644
      if (!replaces) {
          /* We want to mirror from @bs, but keep implicit filters on top */
          unfiltered_bs = bdrv_skip_implicit_filters(bs);
-@@ -2894,8 +2921,8 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2910,8 +2937,8 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
       * and will allow to check whether the node still exist at mirror completion
       */
      mirror_start(job_id, bs, target,
@@ -320,7 +320,7 @@ index 6740663fda..38fa63155c 100644
                   on_source_error, on_target_error, unmap, filter_node_name,
                   copy_mode, errp);
  }
-@@ -3039,6 +3066,8 @@ void qmp_drive_mirror(DriveMirror *arg, Error **errp)
+@@ -3055,6 +3082,8 @@ void qmp_drive_mirror(DriveMirror *arg, Error **errp)
  
      blockdev_mirror_common(arg->job_id, bs, target_bs,
                             arg->replaces, arg->sync,
@@ -329,7 +329,7 @@ index 6740663fda..38fa63155c 100644
                             backing_mode, zero_target,
                             arg->has_speed, arg->speed,
                             arg->has_granularity, arg->granularity,
-@@ -3058,6 +3087,8 @@ void qmp_blockdev_mirror(const char *job_id,
+@@ -3074,6 +3103,8 @@ void qmp_blockdev_mirror(const char *job_id,
                           const char *device, const char *target,
                           const char *replaces,
                           MirrorSyncMode sync,
@@ -338,7 +338,7 @@ index 6740663fda..38fa63155c 100644
                           bool has_speed, int64_t speed,
                           bool has_granularity, uint32_t granularity,
                           bool has_buf_size, int64_t buf_size,
-@@ -3098,7 +3129,8 @@ void qmp_blockdev_mirror(const char *job_id,
+@@ -3114,7 +3145,8 @@ void qmp_blockdev_mirror(const char *job_id,
      }
  
      blockdev_mirror_common(job_id, bs, target_bs,
@@ -364,10 +364,10 @@ index eb2d92a226..f0c642b194 100644
                    BlockdevOnError on_source_error,
                    BlockdevOnError on_target_error,
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index fd3bcc1c17..48ba32049f 100644
+index b1937780e1..0e5f148d30 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -2178,6 +2178,15 @@
+@@ -2182,6 +2182,15 @@
  #     destination (all the disk, only the sectors allocated in the
  #     topmost image, or only new I/O).
  #
@@ -383,7 +383,7 @@ index fd3bcc1c17..48ba32049f 100644
  # @granularity: granularity of the dirty bitmap, default is 64K if the
  #     image format doesn't have clusters, 4K if the clusters are
  #     smaller than that, else the cluster size.  Must be a power of 2
-@@ -2220,7 +2229,9 @@
+@@ -2224,7 +2233,9 @@
  { 'struct': 'DriveMirror',
    'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
              '*format': 'str', '*node-name': 'str', '*replaces': 'str',
@@ -394,7 +394,7 @@ index fd3bcc1c17..48ba32049f 100644
              '*speed': 'int', '*granularity': 'uint32',
              '*buf-size': 'int', '*on-source-error': 'BlockdevOnError',
              '*on-target-error': 'BlockdevOnError',
-@@ -2499,6 +2510,15 @@
+@@ -2503,6 +2514,15 @@
  #     destination (all the disk, only the sectors allocated in the
  #     topmost image, or only new I/O).
  #
@@ -410,7 +410,7 @@ index fd3bcc1c17..48ba32049f 100644
  # @granularity: granularity of the dirty bitmap, default is 64K if the
  #     image format doesn't have clusters, 4K if the clusters are
  #     smaller than that, else the cluster size.  Must be a power of 2
-@@ -2547,7 +2567,8 @@
+@@ -2551,7 +2571,8 @@
  { 'command': 'blockdev-mirror',
    'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
              '*replaces': 'str',
@@ -421,7 +421,7 @@ index fd3bcc1c17..48ba32049f 100644
              '*buf-size': 'int', '*on-source-error': 'BlockdevOnError',
              '*on-target-error': 'BlockdevOnError',
 diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c
-index 20ed54f570..4f50a99334 100644
+index 2b358eaaa8..2a149fe021 100644
 --- a/tests/unit/test-block-iothread.c
 +++ b/tests/unit/test-block-iothread.c
 @@ -755,8 +755,8 @@ static void test_propagate_mirror(void)
diff --git a/debian/patches/bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch b/debian/patches/bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch
index 226c3e7..f22b013 100644
--- a/debian/patches/bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch
+++ b/debian/patches/bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 18 insertions(+), 6 deletions(-)
 
 diff --git a/block/mirror.c b/block/mirror.c
-index c3d4be9b15..7b6f7c0068 100644
+index fafca1360e..05e738bcce 100644
 --- a/block/mirror.c
 +++ b/block/mirror.c
 @@ -694,8 +694,6 @@ static int mirror_exit_common(Job *job)
diff --git a/debian/patches/bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch b/debian/patches/bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch
index 065519f..81c750b 100644
--- a/debian/patches/bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch
+++ b/debian/patches/bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch
@@ -16,10 +16,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 3 insertions(+)
 
 diff --git a/blockdev.c b/blockdev.c
-index 38fa63155c..204cf6fad1 100644
+index ec45bbaa52..9fab7ec554 100644
 --- a/blockdev.c
 +++ b/blockdev.c
-@@ -2878,6 +2878,9 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2894,6 +2894,9 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
          if (bdrv_dirty_bitmap_check(bitmap, BDRV_BITMAP_ALLOW_RO, errp)) {
              return;
          }
diff --git a/debian/patches/bitmap-mirror/0004-mirror-switch-to-bdrv_dirty_bitmap_merge_internal.patch b/debian/patches/bitmap-mirror/0004-mirror-switch-to-bdrv_dirty_bitmap_merge_internal.patch
index 71f22b6..abece60 100644
--- a/debian/patches/bitmap-mirror/0004-mirror-switch-to-bdrv_dirty_bitmap_merge_internal.patch
+++ b/debian/patches/bitmap-mirror/0004-mirror-switch-to-bdrv_dirty_bitmap_merge_internal.patch
@@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 4 insertions(+), 7 deletions(-)
 
 diff --git a/block/mirror.c b/block/mirror.c
-index 7b6f7c0068..2b1c07095d 100644
+index 05e738bcce..2a2a227f3b 100644
 --- a/block/mirror.c
 +++ b/block/mirror.c
 @@ -809,8 +809,8 @@ static int mirror_exit_common(Job *job)
diff --git a/debian/patches/bitmap-mirror/0006-mirror-move-some-checks-to-qmp.patch b/debian/patches/bitmap-mirror/0006-mirror-move-some-checks-to-qmp.patch
index b34956a..50746b6 100644
--- a/debian/patches/bitmap-mirror/0006-mirror-move-some-checks-to-qmp.patch
+++ b/debian/patches/bitmap-mirror/0006-mirror-move-some-checks-to-qmp.patch
@@ -21,7 +21,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  3 files changed, 70 insertions(+), 59 deletions(-)
 
 diff --git a/block/mirror.c b/block/mirror.c
-index 2b1c07095d..f5787b380c 100644
+index 2a2a227f3b..87c0856979 100644
 --- a/block/mirror.c
 +++ b/block/mirror.c
 @@ -1763,31 +1763,13 @@ static BlockJob *mirror_start_job(
@@ -62,10 +62,10 @@ index 2b1c07095d..f5787b380c 100644
  
          if (bitmap_mode != BITMAP_SYNC_MODE_NEVER) {
 diff --git a/blockdev.c b/blockdev.c
-index 204cf6fad1..79d47b1920 100644
+index 9fab7ec554..158ac9314b 100644
 --- a/blockdev.c
 +++ b/blockdev.c
-@@ -2857,7 +2857,36 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
+@@ -2873,7 +2873,36 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
          sync = MIRROR_SYNC_MODE_FULL;
      }
  
diff --git a/debian/patches/extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch b/debian/patches/extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch
index 8954481..de0a350 100644
--- a/debian/patches/extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch
+++ b/debian/patches/extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch
@@ -60,7 +60,7 @@ index c3740ec616..7f38ce6b8b 100644
  void monitor_init_globals(void);
  void monitor_init_globals_core(void);
 diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h
-index cb628f681d..93dbd62fc2 100644
+index 5676eb334e..4c452a6aeb 100644
 --- a/monitor/monitor-internal.h
 +++ b/monitor/monitor-internal.h
 @@ -151,6 +151,13 @@ typedef struct {
@@ -78,7 +78,7 @@ index cb628f681d..93dbd62fc2 100644
  
  /**
 diff --git a/monitor/monitor.c b/monitor/monitor.c
-index 56786c0ccc..30071d0c8a 100644
+index c5a5d30877..07775784d4 100644
 --- a/monitor/monitor.c
 +++ b/monitor/monitor.c
 @@ -116,6 +116,21 @@ bool monitor_cur_is_qmp(void)
@@ -104,7 +104,7 @@ index 56786c0ccc..30071d0c8a 100644
   * Is @mon is using readline?
   * Note: not all HMP monitors use readline, e.g., gdbserver has a
 diff --git a/monitor/qmp.c b/monitor/qmp.c
-index 5e538f34c0..eb181d5979 100644
+index 2f46cf9e49..f093e256e9 100644
 --- a/monitor/qmp.c
 +++ b/monitor/qmp.c
 @@ -165,6 +165,8 @@ static void monitor_qmp_dispatch(MonitorQMP *mon, QObject *req)
@@ -144,7 +144,7 @@ index 5e538f34c0..eb181d5979 100644
          monitor_qmp_caps_reset(mon);
          data = qmp_greeting(mon);
 diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
-index 176b549473..790bb7d1da 100644
+index e569224eae..eb03782e91 100644
 --- a/qapi/qmp-dispatch.c
 +++ b/qapi/qmp-dispatch.c
 @@ -117,16 +117,28 @@ typedef struct QmpDispatchBH {
diff --git a/debian/patches/extra/0002-ide-avoid-potential-deadlock-when-draining-during-tr.patch b/debian/patches/extra/0002-ide-avoid-potential-deadlock-when-draining-during-tr.patch
index b97684d..aca8620 100644
--- a/debian/patches/extra/0002-ide-avoid-potential-deadlock-when-draining-during-tr.patch
+++ b/debian/patches/extra/0002-ide-avoid-potential-deadlock-when-draining-during-tr.patch
@@ -55,7 +55,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 diff --git a/hw/ide/core.c b/hw/ide/core.c
-index 08d9218455..20d8c0cf66 100644
+index b14983ec54..41c543e627 100644
 --- a/hw/ide/core.c
 +++ b/hw/ide/core.c
 @@ -456,7 +456,7 @@ static void ide_trim_bh_cb(void *opaque)
diff --git a/debian/patches/extra/0003-tcg-Reset-free_temps-before-tcg_optimize.patch b/debian/patches/extra/0003-tcg-Reset-free_temps-before-tcg_optimize.patch
deleted file mode 100644
index 15b3016..0000000
--- a/debian/patches/extra/0003-tcg-Reset-free_temps-before-tcg_optimize.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Richard Henderson <richard.henderson at linaro.org>
-Date: Sat, 7 Dec 2024 18:14:45 +0000
-Subject: [PATCH] tcg: Reset free_temps before tcg_optimize
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-When allocating new temps during tcg_optmize, do not re-use
-any EBB temps that were used within the TB.  We do not have
-any idea what span of the TB in which the temp was live.
-
-Introduce tcg_temp_ebb_reset_freed and use before tcg_optimize,
-as well as replacing the equivalent in plugin_gen_inject and
-tcg_func_start.
-
-Cc: qemu-stable at nongnu.org
-Fixes: fb04ab7ddd8 ("tcg/optimize: Lower TCG_COND_TST{EQ,NE} if unsupported")
-Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2711
-Reported-by: wannacu <wannacu2049 at gmail.com>
-Signed-off-by: Richard Henderson <richard.henderson at linaro.org>
-Reviewed-by: Pierrick Bouvier <pierrick.bouvier at linaro.org>
-Reviewed-by: Philippe Mathieu-Daudé <philmd at linaro.org>
-(cherry picked from commit 04e006ab36a8565b92d4e21dd346367fbade7d74)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- accel/tcg/plugin-gen.c          | 2 +-
- include/tcg/tcg-temp-internal.h | 6 ++++++
- tcg/tcg.c                       | 5 ++++-
- 3 files changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
-index 0f47bfbb48..1ef075552c 100644
---- a/accel/tcg/plugin-gen.c
-+++ b/accel/tcg/plugin-gen.c
-@@ -275,7 +275,7 @@ static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb)
-      * that might be live within the existing opcode stream.
-      * The simplest solution is to release them all and create new.
-      */
--    memset(tcg_ctx->free_temps, 0, sizeof(tcg_ctx->free_temps));
-+    tcg_temp_ebb_reset_freed(tcg_ctx);
- 
-     QTAILQ_FOREACH_SAFE(op, &tcg_ctx->ops, link, next) {
-         switch (op->opc) {
-diff --git a/include/tcg/tcg-temp-internal.h b/include/tcg/tcg-temp-internal.h
-index 44192c55a9..98f91e68b7 100644
---- a/include/tcg/tcg-temp-internal.h
-+++ b/include/tcg/tcg-temp-internal.h
-@@ -42,4 +42,10 @@ TCGv_i64 tcg_temp_ebb_new_i64(void);
- TCGv_ptr tcg_temp_ebb_new_ptr(void);
- TCGv_i128 tcg_temp_ebb_new_i128(void);
- 
-+/* Forget all freed EBB temps, so that new allocations produce new temps. */
-+static inline void tcg_temp_ebb_reset_freed(TCGContext *s)
-+{
-+    memset(s->free_temps, 0, sizeof(s->free_temps));
-+}
-+
- #endif /* TCG_TEMP_FREE_H */
-diff --git a/tcg/tcg.c b/tcg/tcg.c
-index 0babae1b88..4578b185be 100644
---- a/tcg/tcg.c
-+++ b/tcg/tcg.c
-@@ -1489,7 +1489,7 @@ void tcg_func_start(TCGContext *s)
-     s->nb_temps = s->nb_globals;
- 
-     /* No temps have been previously allocated for size or locality.  */
--    memset(s->free_temps, 0, sizeof(s->free_temps));
-+    tcg_temp_ebb_reset_freed(s);
- 
-     /* No constant temps have been previously allocated. */
-     for (int i = 0; i < TCG_TYPE_COUNT; ++i) {
-@@ -6120,6 +6120,9 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start)
-     }
- #endif
- 
-+    /* Do not reuse any EBB that may be allocated within the TB. */
-+    tcg_temp_ebb_reset_freed(s);
-+
-     tcg_optimize(s);
- 
-     reachable_code_pass(s);
diff --git a/debian/patches/extra/0004-target-i386-Reset-TSCs-of-parked-vCPUs-too-on-VM-res.patch b/debian/patches/extra/0004-target-i386-Reset-TSCs-of-parked-vCPUs-too-on-VM-res.patch
deleted file mode 100644
index 071d51a..0000000
--- a/debian/patches/extra/0004-target-i386-Reset-TSCs-of-parked-vCPUs-too-on-VM-res.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Maciej S. Szmigiero" <maciej.szmigiero at oracle.com>
-Date: Thu, 12 Dec 2024 15:51:15 +0100
-Subject: [PATCH] target/i386: Reset TSCs of parked vCPUs too on VM reset
-
-Since commit 5286c3662294 ("target/i386: properly reset TSC on reset")
-QEMU writes the special value of "1" to each online vCPU TSC on VM reset
-to reset it.
-
-However parked vCPUs don't get that handling and due to that their TSCs
-get desynchronized when the VM gets reset.
-This in turn causes KVM to turn off PVCLOCK_TSC_STABLE_BIT in its exported
-PV clock.
-Note that KVM has no understanding of vCPU being currently parked.
-
-Without PVCLOCK_TSC_STABLE_BIT the sched clock is marked unstable in
-the guest's kvm_sched_clock_init().
-This causes a performance regressions to show in some tests.
-
-Fix this issue by writing the special value of "1" also to TSCs of parked
-vCPUs on VM reset.
-
-Reproducing the issue:
-1) Boot a VM with "-smp 2,maxcpus=3" or similar
-
-2) device_add host-x86_64-cpu,id=vcpu,node-id=0,socket-id=0,core-id=2,thread-id=0
-
-3) Wait a few seconds
-
-4) device_del vcpu
-
-5) Inside the VM run:
-# echo "t" >/proc/sysrq-trigger; dmesg | grep sched_clock_stable
-Observe the sched_clock_stable() value is 1.
-
-6) Reboot the VM
-
-7) Once the VM boots once again run inside it:
-# echo "t" >/proc/sysrq-trigger; dmesg | grep sched_clock_stable
-Observe the sched_clock_stable() value is now 0.
-
-Fixes: 5286c3662294 ("target/i386: properly reset TSC on reset")
-Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero at oracle.com>
-Link: https://lore.kernel.org/r/5a605a88e9a231386dc803c60f5fed9b48108139.1734014926.git.maciej.szmigiero@oracle.com
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-(cherry picked from commit 3f2a05b31ee9ce2ddb6c75a9bc3f5e7f7af9a76f)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- accel/kvm/kvm-all.c                | 11 +++++++++++
- configs/targets/i386-softmmu.mak   |  1 +
- configs/targets/x86_64-softmmu.mak |  1 +
- include/sysemu/kvm.h               |  8 ++++++++
- target/i386/kvm/kvm.c              | 15 +++++++++++++++
- 5 files changed, 36 insertions(+)
-
-diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
-index 801cff16a5..dec1d1c16a 100644
---- a/accel/kvm/kvm-all.c
-+++ b/accel/kvm/kvm-all.c
-@@ -437,6 +437,16 @@ int kvm_unpark_vcpu(KVMState *s, unsigned long vcpu_id)
-     return kvm_fd;
- }
- 
-+static void kvm_reset_parked_vcpus(void *param)
-+{
-+    KVMState *s = param;
-+    struct KVMParkedVcpu *cpu;
-+
-+    QLIST_FOREACH(cpu, &s->kvm_parked_vcpus, node) {
-+        kvm_arch_reset_parked_vcpu(cpu->vcpu_id, cpu->kvm_fd);
-+    }
-+}
-+
- int kvm_create_vcpu(CPUState *cpu)
- {
-     unsigned long vcpu_id = kvm_arch_vcpu_id(cpu);
-@@ -2728,6 +2738,7 @@ static int kvm_init(MachineState *ms)
-     }
- 
-     qemu_register_reset(kvm_unpoison_all, NULL);
-+    qemu_register_reset(kvm_reset_parked_vcpus, s);
- 
-     if (s->kernel_irqchip_allowed) {
-         kvm_irqchip_create(s);
-diff --git a/configs/targets/i386-softmmu.mak b/configs/targets/i386-softmmu.mak
-index 2ac69d5ba3..2eb0e86250 100644
---- a/configs/targets/i386-softmmu.mak
-+++ b/configs/targets/i386-softmmu.mak
-@@ -1,4 +1,5 @@
- TARGET_ARCH=i386
- TARGET_SUPPORTS_MTTCG=y
- TARGET_KVM_HAVE_GUEST_DEBUG=y
-+TARGET_KVM_HAVE_RESET_PARKED_VCPU=y
- TARGET_XML_FILES= gdb-xml/i386-32bit.xml
-diff --git a/configs/targets/x86_64-softmmu.mak b/configs/targets/x86_64-softmmu.mak
-index e12ac3dc59..920e9a4200 100644
---- a/configs/targets/x86_64-softmmu.mak
-+++ b/configs/targets/x86_64-softmmu.mak
-@@ -2,4 +2,5 @@ TARGET_ARCH=x86_64
- TARGET_BASE_ARCH=i386
- TARGET_SUPPORTS_MTTCG=y
- TARGET_KVM_HAVE_GUEST_DEBUG=y
-+TARGET_KVM_HAVE_RESET_PARKED_VCPU=y
- TARGET_XML_FILES= gdb-xml/i386-64bit.xml
-diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
-index c3a60b2890..ab17c09a55 100644
---- a/include/sysemu/kvm.h
-+++ b/include/sysemu/kvm.h
-@@ -377,6 +377,14 @@ int kvm_arch_init(MachineState *ms, KVMState *s);
- int kvm_arch_init_vcpu(CPUState *cpu);
- int kvm_arch_destroy_vcpu(CPUState *cpu);
- 
-+#ifdef TARGET_KVM_HAVE_RESET_PARKED_VCPU
-+void kvm_arch_reset_parked_vcpu(unsigned long vcpu_id, int kvm_fd);
-+#else
-+static inline void kvm_arch_reset_parked_vcpu(unsigned long vcpu_id, int kvm_fd)
-+{
-+}
-+#endif
-+
- bool kvm_vcpu_id_is_valid(int vcpu_id);
- 
- /* Returns VCPU ID to be used on KVM_CREATE_VCPU ioctl() */
-diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
-index 8e17942c3b..2ff618fbf1 100644
---- a/target/i386/kvm/kvm.c
-+++ b/target/i386/kvm/kvm.c
-@@ -2415,6 +2415,21 @@ void kvm_arch_after_reset_vcpu(X86CPU *cpu)
-     }
- }
- 
-+void kvm_arch_reset_parked_vcpu(unsigned long vcpu_id, int kvm_fd)
-+{
-+    g_autofree struct kvm_msrs *msrs = NULL;
-+
-+    msrs = g_malloc0(sizeof(*msrs) + sizeof(msrs->entries[0]));
-+    msrs->entries[0].index = MSR_IA32_TSC;
-+    msrs->entries[0].data = 1; /* match the value in x86_cpu_reset() */
-+    msrs->nmsrs++;
-+
-+    if (ioctl(kvm_fd, KVM_SET_MSRS, msrs) != 1) {
-+        warn_report("parked vCPU %lu TSC reset failed: %d",
-+                    vcpu_id, errno);
-+    }
-+}
-+
- void kvm_arch_do_init_vcpu(X86CPU *cpu)
- {
-     CPUX86State *env = &cpu->env;
diff --git a/debian/patches/extra/0005-i386-cpu-Mark-avx10_version-filtered-when-prefix-is-.patch b/debian/patches/extra/0005-i386-cpu-Mark-avx10_version-filtered-when-prefix-is-.patch
deleted file mode 100644
index 6f5444c..0000000
--- a/debian/patches/extra/0005-i386-cpu-Mark-avx10_version-filtered-when-prefix-is-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Zhao Liu <zhao1.liu at intel.com>
-Date: Wed, 6 Nov 2024 11:07:18 +0800
-Subject: [PATCH] i386/cpu: Mark avx10_version filtered when prefix is NULL
-
-In x86_cpu_filter_features(), if host doesn't support AVX10, the
-configured avx10_version should be marked as filtered regardless of
-whether prefix is NULL or not.
-
-Check prefix before warn_report() instead of checking for
-have_filtered_features.
-
-Cc: qemu-stable at nongnu.org
-Fixes: commit bccfb846fd52 ("target/i386: add AVX10 feature and AVX10 version property")
-Signed-off-by: Zhao Liu <zhao1.liu at intel.com>
-Reviewed-by: Tao Su <tao1.su at linux.intel.com>
-Link: https://lore.kernel.org/r/20241106030728.553238-2-zhao1.liu@intel.com
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-(cherry picked from commit cf4c263551886964c5d58bd7b675b13fd497b402)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- target/i386/cpu.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/target/i386/cpu.c b/target/i386/cpu.c
-index 3725dbbc4b..1981aeaba5 100644
---- a/target/i386/cpu.c
-+++ b/target/i386/cpu.c
-@@ -7718,8 +7718,10 @@ static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose)
-             env->avx10_version = version;
-             have_filtered_features = true;
-         }
--    } else if (env->avx10_version && prefix) {
--        warn_report("%s: avx10.%d.", prefix, env->avx10_version);
-+    } else if (env->avx10_version) {
-+        if (prefix) {
-+            warn_report("%s: avx10.%d.", prefix, env->avx10_version);
-+        }
-         have_filtered_features = true;
-     }
- 
diff --git a/debian/patches/extra/0006-net-Fix-announce_self.patch b/debian/patches/extra/0006-net-Fix-announce_self.patch
deleted file mode 100644
index 0c11819..0000000
--- a/debian/patches/extra/0006-net-Fix-announce_self.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Laurent Vivier <lvivier at redhat.com>
-Date: Fri, 17 Jan 2025 12:17:08 +0100
-Subject: [PATCH] net: Fix announce_self
-
-b9ad513e1876 ("net: Remove receive_raw()") adds an iovec entry
-in qemu_deliver_packet_iov() to add the virtio-net header
-in the data when QEMU_NET_PACKET_FLAG_RAW is set but forgets
-to increase the number of iovec entries in the array, so
-receive_iov() will only send the first entry (the virtio-net
-entry, full of 0) and no data. The packet will be discarded.
-
-The only user of QEMU_NET_PACKET_FLAG_RAW is announce_self.
-
-We can see the problem with tcpdump:
-
-- QEMU parameters:
-
-  .. -monitor stdio \
-     -netdev bridge,id=netdev0,br=virbr0 \
-     -device virtio-net,mac=9a:2b:2c:2d:2e:2f,netdev=netdev0 \
-
-- HMP command:
-
-  (qemu) announce_self
-
-- TCP dump:
-
-  $ sudo tcpdump -nxi virbr0
-
-  without the fix:
-
-    <nothing>
-
-  with the fix:
-
-   ARP, Reverse Request who-is 9a:2b:2c:2d:2e:2f tell 9a:2b:2c:2d:2e:2f, length 46
-        0x0000:  0001 0800 0604 0003 9a2b 2c2d 2e2f 0000
-        0x0010:  0000 9a2b 2c2d 2e2f 0000 0000 0000 0000
-        0x0020:  0000 0000 0000 0000 0000 0000 0000
-
-Reported-by: Xiaohui Li <xiaohli at redhat.com>
-Bug: https://issues.redhat.com/browse/RHEL-73891
-Fixes: b9ad513e1876 ("net: Remove receive_raw()")
-Cc: akihiko.odaki at daynix.com
-Signed-off-by: Laurent Vivier <lvivier at redhat.com>
-Reviewed-by: Akihiko Odaki <akihiko.odaki at daynix.com>
-Acked-by: Jason Wang <jasowang at redhat.com>
-Reviewed-by: Michael Tokarev <mjt at tls.msk.ru>
-(picked from https://lore.kernel.org/qemu-devel/20250117111709.970789-2-lvivier@redhat.com/)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- net/net.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/net/net.c b/net/net.c
-index 7ef6885876..fefa701bb2 100644
---- a/net/net.c
-+++ b/net/net.c
-@@ -822,6 +822,7 @@ static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
-         iov_copy[0].iov_len =  nc->vnet_hdr_len;
-         memcpy(&iov_copy[1], iov, iovcnt * sizeof(*iov));
-         iov = iov_copy;
-+        iovcnt++;
-     }
- 
-     if (nc->info->receive_iov) {
diff --git a/debian/patches/extra/0007-net-dump-Correctly-compute-Ethernet-packet-offset.patch b/debian/patches/extra/0007-net-dump-Correctly-compute-Ethernet-packet-offset.patch
deleted file mode 100644
index 09b00f7..0000000
--- a/debian/patches/extra/0007-net-dump-Correctly-compute-Ethernet-packet-offset.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Laurent Vivier <lvivier at redhat.com>
-Date: Fri, 17 Jan 2025 12:17:09 +0100
-Subject: [PATCH] net/dump: Correctly compute Ethernet packet offset
-
-When a packet is sent with QEMU_NET_PACKET_FLAG_RAW by QEMU it
-never includes virtio-net header even if qemu_get_vnet_hdr_len()
-is not 0, and filter-dump is not managing this case.
-
-The only user of QEMU_NET_PACKET_FLAG_RAW is announce_self,
-we can show the problem using it and tcpddump:
-
-- QEMU parameters:
-
-  .. -monitor stdio \
-     -netdev bridge,id=netdev0,br=virbr0 \
-     -device virtio-net,mac=9a:2b:2c:2d:2e:2f,netdev=netdev0 \
-     -object filter-dump,netdev=netdev0,file=log.pcap,id=pcap0
-
-- HMP command:
-
-  (qemu) announce_self
-
-- TCP dump:
-
-  $ tcpdump -nxr log.pcap
-
-  without the fix:
-
-    08:00:06:04:00:03 > 2e:2f:80:35:00:01, ethertype Unknown (0x9a2b), length 50:
-         0x0000:  2c2d 2e2f 0000 0000 9a2b 2c2d 2e2f 0000
-         0x0010:  0000 0000 0000 0000 0000 0000 0000 0000
-         0x0020:  0000 0000
-
-  with the fix:
-
-    ARP, Reverse Request who-is 9a:2b:2c:2d:2e:2f tell 9a:2b:2c:2d:2e:2f, length 46
-         0x0000:  0001 0800 0604 0003 9a2b 2c2d 2e2f 0000
-         0x0010:  0000 9a2b 2c2d 2e2f 0000 0000 0000 0000
-         0x0020:  0000 0000 0000 0000 0000 0000 0000
-
-Fixes: 481c52320a26 ("net: Strip virtio-net header when dumping")
-Cc: akihiko.odaki at daynix.com
-Signed-off-by: Laurent Vivier <lvivier at redhat.com>
-Reviewed-by: Akihiko Odaki <akihiko.odaki at daynix.com>
-Acked-by: Jason Wang <jasowang at redhat.com>
-Reviewed-by: Michael Tokarev <mjt at tls.msk.ru>
-(picked from https://lore.kernel.org/qemu-devel/20250117111709.970789-3-lvivier@redhat.com/)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- net/dump.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/dump.c b/net/dump.c
-index 956e34a123..42ab8d7716 100644
---- a/net/dump.c
-+++ b/net/dump.c
-@@ -155,7 +155,8 @@ static ssize_t filter_dump_receive_iov(NetFilterState *nf, NetClientState *sndr,
- {
-     NetFilterDumpState *nfds = FILTER_DUMP(nf);
- 
--    dump_receive_iov(&nfds->ds, iov, iovcnt, qemu_get_vnet_hdr_len(nf->netdev));
-+    dump_receive_iov(&nfds->ds, iov, iovcnt, flags & QEMU_NET_PACKET_FLAG_RAW ?
-+                     0 : qemu_get_vnet_hdr_len(nf->netdev));
-     return 0;
- }
- 
diff --git a/debian/patches/extra/0008-pci-acpi-Windows-PCI-Label-Id-bug-workaround.patch b/debian/patches/extra/0008-pci-acpi-Windows-PCI-Label-Id-bug-workaround.patch
deleted file mode 100644
index acb7662..0000000
--- a/debian/patches/extra/0008-pci-acpi-Windows-PCI-Label-Id-bug-workaround.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Igor Mammedov <imammedo at redhat.com>
-Date: Wed, 15 Jan 2025 13:53:41 +0100
-Subject: [PATCH] pci: acpi: Windows 'PCI Label Id' bug workaround
-
-Current versions of Windows call _DSM(func=7) regardless
-of whether it is supported or not. It leads to NICs having bogus
-'PCI Label Id = 0', where none should be set at all.
-
-Also presence of 'PCI Label Id' triggers another Windows bug
-on localized versions that leads to hangs. The later bug is fixed
-in latest updates for 'Windows Server' but not in consumer
-versions of Windows (and there is no plans to fix it
-as far as I'm aware).
-
-Given it's easy, implement Microsoft suggested workaround
-(return invalid Package) so that affected Windows versions
-could boot on QEMU.
-This would effectvely remove bogus 'PCI Label Id's on NICs,
-but MS teem confirmed that flipping 'PCI Label Id' should not
-change 'Network Connection' ennumeration, so it should be safe
-for QEMU to change _DSM without any compat code.
-
-Smoke tested with WinXP and WS2022
-Resolves: https://gitlab.com/qemu-project/qemu/-/issues/774
-Signed-off-by: Igor Mammedov <imammedo at redhat.com>
-Message-Id: <20250115125342.3883374-3-imammedo at redhat.com>
-Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-(cherry picked from commit 0b053391985abcc40b16ac8fc4a7f6588d1d95c1)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- hw/i386/acpi-build.c | 33 +++++++++++++++++++++++----------
- 1 file changed, 23 insertions(+), 10 deletions(-)
-
-diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
-index 9fcc2897b8..f7b961e04c 100644
---- a/hw/i386/acpi-build.c
-+++ b/hw/i386/acpi-build.c
-@@ -654,6 +654,7 @@ static Aml *aml_pci_pdsm(void)
-     Aml *acpi_index = aml_local(2);
-     Aml *zero = aml_int(0);
-     Aml *one = aml_int(1);
-+    Aml *not_supp = aml_int(0xFFFFFFFF);
-     Aml *func = aml_arg(2);
-     Aml *params = aml_arg(4);
-     Aml *bnum = aml_derefof(aml_index(params, aml_int(0)));
-@@ -678,7 +679,7 @@ static Aml *aml_pci_pdsm(void)
-          */
-         ifctx1 = aml_if(aml_lnot(
-                      aml_or(aml_equal(acpi_index, zero),
--                            aml_equal(acpi_index, aml_int(0xFFFFFFFF)), NULL)
-+                            aml_equal(acpi_index, not_supp), NULL)
-                  ));
-         {
-             /* have supported functions */
-@@ -704,18 +705,30 @@ static Aml *aml_pci_pdsm(void)
-     {
-        Aml *pkg = aml_package(2);
- 
--       aml_append(pkg, zero);
--       /*
--        * optional, if not impl. should return null string
--        */
--       aml_append(pkg, aml_string("%s", ""));
--       aml_append(ifctx, aml_store(pkg, ret));
--
-        aml_append(ifctx, aml_store(aml_call2("AIDX", bnum, sunum), acpi_index));
-+       aml_append(ifctx, aml_store(pkg, ret));
-        /*
--        * update acpi-index to actual value
-+        * Windows calls func=7 without checking if it's available,
-+        * as workaround Microsoft has suggested to return invalid for func7
-+        * Package, so return 2 elements package but only initialize elements
-+        * when acpi_index is supported and leave them uninitialized, which
-+        * leads elements to being Uninitialized ObjectType and should trip
-+        * Windows into discarding result as an unexpected and prevent setting
-+        * bogus 'PCI Label' on the device.
-         */
--       aml_append(ifctx, aml_store(acpi_index, aml_index(ret, zero)));
-+       ifctx1 = aml_if(aml_lnot(aml_lor(
-+                    aml_equal(acpi_index, zero), aml_equal(acpi_index, not_supp)
-+                )));
-+       {
-+           aml_append(ifctx1, aml_store(acpi_index, aml_index(ret, zero)));
-+           /*
-+            * optional, if not impl. should return null string
-+            */
-+           aml_append(ifctx1, aml_store(aml_string("%s", ""),
-+                                        aml_index(ret, one)));
-+       }
-+       aml_append(ifctx, ifctx1);
-+
-        aml_append(ifctx, aml_return(ret));
-     }
- 
diff --git a/debian/patches/extra/0009-hw-usb-hcd-xhci-pci-Use-modulo-to-select-MSI-vector-.patch b/debian/patches/extra/0009-hw-usb-hcd-xhci-pci-Use-modulo-to-select-MSI-vector-.patch
deleted file mode 100644
index 780586c..0000000
--- a/debian/patches/extra/0009-hw-usb-hcd-xhci-pci-Use-modulo-to-select-MSI-vector-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Phil Dennis-Jordan <phil at philjordan.eu>
-Date: Fri, 13 Dec 2024 17:06:14 +0100
-Subject: [PATCH] hw/usb/hcd-xhci-pci: Use modulo to select MSI vector as per
- spec
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-QEMU would crash with a failed assertion if the XHCI controller
-attempted to raise the interrupt on an interrupter corresponding
-to a MSI vector with a higher index than the highest configured
-for the device by the guest driver.
-
-This behaviour is correct on the MSI/PCI side: per PCI 3.0 spec,
-devices must ensure they do not send MSI notifications for
-vectors beyond the range of those allocated by the system/driver
-software. Unlike MSI-X, there is no generic way for handling
-aliasing in the case of fewer allocated vectors than requested,
-so the specifics are up to device implementors. (Section
-6.8.3.4. "Sending Messages")
-
-It turns out the XHCI spec (Implementation Note in section 4.17,
-"Interrupters") requires that the host controller signal the MSI
-vector with the number computed by taking the interrupter number
-modulo the number of enabled MSI vectors.
-
-This change introduces that modulo calculation, fixing the
-failed assertion. This makes the device work correctly in MSI mode
-with macOS's XHCI driver, which only allocates a single vector.
-
-Signed-off-by: Phil Dennis-Jordan <phil at philjordan.eu>
-Reviewed-by: Philippe Mathieu-Daudé <philmd at linaro.org>
-Message-ID: <20250112210056.16658-2-phil at philjordan.eu>
-Signed-off-by: Philippe Mathieu-Daudé <philmd at linaro.org>
-(cherry picked from commit bb5b7fced6b5d3334ab20702fc846e47bb1fb731)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- hw/usb/hcd-xhci-pci.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c
-index a039f5778a..516e6909d2 100644
---- a/hw/usb/hcd-xhci-pci.c
-+++ b/hw/usb/hcd-xhci-pci.c
-@@ -74,6 +74,7 @@ static bool xhci_pci_intr_raise(XHCIState *xhci, int n, bool level)
-     }
- 
-     if (msi_enabled(pci_dev) && level) {
-+        n %= msi_nr_vectors_allocated(pci_dev);
-         msi_notify(pci_dev, n);
-         return true;
-     }
diff --git a/debian/patches/extra/0010-pci-ensure-valid-link-status-bits-for-downstream-por.patch b/debian/patches/extra/0010-pci-ensure-valid-link-status-bits-for-downstream-por.patch
deleted file mode 100644
index f566570..0000000
--- a/debian/patches/extra/0010-pci-ensure-valid-link-status-bits-for-downstream-por.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Sebastian Ott <sebott at redhat.com>
-Date: Tue, 3 Dec 2024 13:19:28 +0100
-Subject: [PATCH] pci: ensure valid link status bits for downstream ports
-
-PCI hotplug for downstream endpoints on arm fails because Linux'
-PCIe hotplug driver doesn't like the QEMU provided LNKSTA:
-
-  pcieport 0000:08:01.0: pciehp: Slot(2): Card present
-  pcieport 0000:08:01.0: pciehp: Slot(2): Link Up
-  pcieport 0000:08:01.0: pciehp: Slot(2): Cannot train link: status 0x2000
-
-There's 2 cases where LNKSTA isn't setup properly:
-* the downstream device has no express capability
-* max link width of the bridge is 0
-
-Move the sanity checks added via 88c869198aa63
-("pci: Sanity test minimum downstream LNKSTA") outside of the
-branch to make sure downstream ports always have a valid LNKSTA.
-
-Signed-off-by: Sebastian Ott <sebott at redhat.com>
-Tested-by: Zhenyu Zhang <zhenyzha at redhat.com>
-Message-Id: <20241203121928.14861-1-sebott at redhat.com>
-Reviewed-by: Alex Williamson <alex.williamson at redhat.com>
-Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-(cherry picked from commit 694632fd44987cc4618612a38ad151047524a590)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- hw/pci/pcie.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
-index 0b455c8654..1b12db6fa2 100644
---- a/hw/pci/pcie.c
-+++ b/hw/pci/pcie.c
-@@ -1113,18 +1113,22 @@ void pcie_sync_bridge_lnk(PCIDevice *bridge_dev)
-         if ((lnksta & PCI_EXP_LNKSTA_NLW) > (lnkcap & PCI_EXP_LNKCAP_MLW)) {
-             lnksta &= ~PCI_EXP_LNKSTA_NLW;
-             lnksta |= lnkcap & PCI_EXP_LNKCAP_MLW;
--        } else if (!(lnksta & PCI_EXP_LNKSTA_NLW)) {
--            lnksta |= QEMU_PCI_EXP_LNKSTA_NLW(QEMU_PCI_EXP_LNK_X1);
-         }
- 
-         if ((lnksta & PCI_EXP_LNKSTA_CLS) > (lnkcap & PCI_EXP_LNKCAP_SLS)) {
-             lnksta &= ~PCI_EXP_LNKSTA_CLS;
-             lnksta |= lnkcap & PCI_EXP_LNKCAP_SLS;
--        } else if (!(lnksta & PCI_EXP_LNKSTA_CLS)) {
--            lnksta |= QEMU_PCI_EXP_LNKSTA_CLS(QEMU_PCI_EXP_LNK_2_5GT);
-         }
-     }
- 
-+    if (!(lnksta & PCI_EXP_LNKSTA_NLW)) {
-+        lnksta |= QEMU_PCI_EXP_LNKSTA_NLW(QEMU_PCI_EXP_LNK_X1);
-+    }
-+
-+    if (!(lnksta & PCI_EXP_LNKSTA_CLS)) {
-+        lnksta |= QEMU_PCI_EXP_LNKSTA_CLS(QEMU_PCI_EXP_LNK_2_5GT);
-+    }
-+
-     pci_word_test_and_clear_mask(exp_cap + PCI_EXP_LNKSTA,
-                                  PCI_EXP_LNKSTA_CLS | PCI_EXP_LNKSTA_NLW);
-     pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, lnksta &
diff --git a/debian/patches/extra/0011-pci-msix-Fix-msix-pba-read-vector-poll-end-calculati.patch b/debian/patches/extra/0011-pci-msix-Fix-msix-pba-read-vector-poll-end-calculati.patch
deleted file mode 100644
index 3ffee58..0000000
--- a/debian/patches/extra/0011-pci-msix-Fix-msix-pba-read-vector-poll-end-calculati.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Nicholas Piggin <npiggin at gmail.com>
-Date: Thu, 12 Dec 2024 22:04:02 +1000
-Subject: [PATCH] pci/msix: Fix msix pba read vector poll end calculation
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The end vector calculation has a bug that results in polling fewer
-than required vectors when reading at a non-zero offset in PBA memory.
-
-Fixes: bbef882cc193 ("msi: add API to get notified about pending bit poll")
-Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
-Message-Id: <20241212120402.1475053-1-npiggin at gmail.com>
-Reviewed-by: Philippe Mathieu-Daudé <philmd at linaro.org>
-Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
-(cherry picked from commit 42e2a7a0ab23784e44fcb18369e06067abc89305)
-Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
----
- hw/pci/msix.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/hw/pci/msix.c b/hw/pci/msix.c
-index 487e49834e..cc6e79ec67 100644
---- a/hw/pci/msix.c
-+++ b/hw/pci/msix.c
-@@ -250,7 +250,7 @@ static uint64_t msix_pba_mmio_read(void *opaque, hwaddr addr,
-     PCIDevice *dev = opaque;
-     if (dev->msix_vector_poll_notifier) {
-         unsigned vector_start = addr * 8;
--        unsigned vector_end = MIN(addr + size * 8, dev->msix_entries_nr);
-+        unsigned vector_end = MIN((addr + size) * 8, dev->msix_entries_nr);
-         dev->msix_vector_poll_notifier(dev, vector_start, vector_end);
-     }
- 
diff --git a/debian/patches/pve/0001-PVE-Config-block-file-change-locking-default-to-off.patch b/debian/patches/pve/0001-PVE-Config-block-file-change-locking-default-to-off.patch
index 72bd38d..60e6981 100644
--- a/debian/patches/pve/0001-PVE-Config-block-file-change-locking-default-to-off.patch
+++ b/debian/patches/pve/0001-PVE-Config-block-file-change-locking-default-to-off.patch
@@ -14,10 +14,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/block/file-posix.c b/block/file-posix.c
-index 90fa54352c..e2ea071315 100644
+index 56d1972d15..cfa0b832ba 100644
 --- a/block/file-posix.c
 +++ b/block/file-posix.c
-@@ -564,7 +564,7 @@ static QemuOptsList raw_runtime_opts = {
+@@ -565,7 +565,7 @@ static QemuOptsList raw_runtime_opts = {
          {
              .name = "locking",
              .type = QEMU_OPT_STRING,
@@ -26,7 +26,7 @@ index 90fa54352c..e2ea071315 100644
          },
          {
              .name = "pr-manager",
-@@ -664,7 +664,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options,
+@@ -665,7 +665,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options,
          s->use_lock = false;
          break;
      case ON_OFF_AUTO_AUTO:
diff --git a/debian/patches/pve/0003-PVE-Config-set-the-CPU-model-to-kvm64-32-instead-of-.patch b/debian/patches/pve/0003-PVE-Config-set-the-CPU-model-to-kvm64-32-instead-of-.patch
index 516eb16..c960164 100644
--- a/debian/patches/pve/0003-PVE-Config-set-the-CPU-model-to-kvm64-32-instead-of-.patch
+++ b/debian/patches/pve/0003-PVE-Config-set-the-CPU-model-to-kvm64-32-instead-of-.patch
@@ -10,10 +10,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/target/i386/cpu.h b/target/i386/cpu.h
-index 4c239a6970..be09263fb0 100644
+index 76f24446a5..2a47d79b49 100644
 --- a/target/i386/cpu.h
 +++ b/target/i386/cpu.h
-@@ -2475,9 +2475,9 @@ uint64_t cpu_get_tsc(CPUX86State *env);
+@@ -2556,9 +2556,9 @@ uint64_t cpu_get_tsc(CPUX86State *env);
  #define CPU_RESOLVING_TYPE TYPE_X86_CPU
  
  #ifdef TARGET_X86_64
diff --git a/debian/patches/pve/0004-PVE-Config-ui-spice-default-to-pve-certificates.patch b/debian/patches/pve/0004-PVE-Config-ui-spice-default-to-pve-certificates.patch
index b57ad9c..558f66e 100644
--- a/debian/patches/pve/0004-PVE-Config-ui-spice-default-to-pve-certificates.patch
+++ b/debian/patches/pve/0004-PVE-Config-ui-spice-default-to-pve-certificates.patch
@@ -9,7 +9,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 9 insertions(+), 6 deletions(-)
 
 diff --git a/ui/spice-core.c b/ui/spice-core.c
-index bd9dbe03f1..a7ecaad9c7 100644
+index 0326c63bec..d523d00200 100644
 --- a/ui/spice-core.c
 +++ b/ui/spice-core.c
 @@ -690,32 +690,35 @@ static void qemu_spice_init(void)
diff --git a/debian/patches/pve/0005-PVE-Config-glusterfs-no-default-logfile-if-daemonize.patch b/debian/patches/pve/0005-PVE-Config-glusterfs-no-default-logfile-if-daemonize.patch
index e957d0e..bbc9e36 100644
--- a/debian/patches/pve/0005-PVE-Config-glusterfs-no-default-logfile-if-daemonize.patch
+++ b/debian/patches/pve/0005-PVE-Config-glusterfs-no-default-logfile-if-daemonize.patch
@@ -9,7 +9,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 11 insertions(+), 4 deletions(-)
 
 diff --git a/block/gluster.c b/block/gluster.c
-index e9c038042b..c8457a5014 100644
+index c6d25ae733..ccca125c3a 100644
 --- a/block/gluster.c
 +++ b/block/gluster.c
 @@ -42,7 +42,7 @@
diff --git a/debian/patches/pve/0006-PVE-Config-rbd-block-rbd-disable-rbd_cache_writethro.patch b/debian/patches/pve/0006-PVE-Config-rbd-block-rbd-disable-rbd_cache_writethro.patch
index 7156d52..84e7a57 100644
--- a/debian/patches/pve/0006-PVE-Config-rbd-block-rbd-disable-rbd_cache_writethro.patch
+++ b/debian/patches/pve/0006-PVE-Config-rbd-block-rbd-disable-rbd_cache_writethro.patch
@@ -18,7 +18,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+)
 
 diff --git a/block/rbd.c b/block/rbd.c
-index 04ed0e242e..728bce3b1e 100644
+index af984fb7db..bf143fac00 100644
 --- a/block/rbd.c
 +++ b/block/rbd.c
 @@ -963,6 +963,8 @@ static int qemu_rbd_connect(rados_t *cluster, rados_ioctx_t *io_ctx,
diff --git a/debian/patches/pve/0007-PVE-Up-glusterfs-allow-partial-reads.patch b/debian/patches/pve/0007-PVE-Up-glusterfs-allow-partial-reads.patch
index 55967ce..92c539d 100644
--- a/debian/patches/pve/0007-PVE-Up-glusterfs-allow-partial-reads.patch
+++ b/debian/patches/pve/0007-PVE-Up-glusterfs-allow-partial-reads.patch
@@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 diff --git a/block/gluster.c b/block/gluster.c
-index c8457a5014..c3a9555591 100644
+index ccca125c3a..301a653ea7 100644
 --- a/block/gluster.c
 +++ b/block/gluster.c
 @@ -57,6 +57,7 @@ typedef struct GlusterAIOCB {
diff --git a/debian/patches/pve/0008-PVE-Up-qemu-img-return-success-on-info-without-snaps.patch b/debian/patches/pve/0008-PVE-Up-qemu-img-return-success-on-info-without-snaps.patch
index 45eacb9..f3ab731 100644
--- a/debian/patches/pve/0008-PVE-Up-qemu-img-return-success-on-info-without-snaps.patch
+++ b/debian/patches/pve/0008-PVE-Up-qemu-img-return-success-on-info-without-snaps.patch
@@ -9,7 +9,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/qemu-img.c b/qemu-img.c
-index 7668f86769..2575e97b43 100644
+index 2044c22a4c..4c8b5412c6 100644
 --- a/qemu-img.c
 +++ b/qemu-img.c
 @@ -3075,7 +3075,8 @@ static int img_info(int argc, char **argv)
diff --git a/debian/patches/pve/0009-PVE-Up-qemu-img-dd-add-osize-and-read-from-to-stdin-.patch b/debian/patches/pve/0009-PVE-Up-qemu-img-dd-add-osize-and-read-from-to-stdin-.patch
index bc03837..0e8c047 100644
--- a/debian/patches/pve/0009-PVE-Up-qemu-img-dd-add-osize-and-read-from-to-stdin-.patch
+++ b/debian/patches/pve/0009-PVE-Up-qemu-img-dd-add-osize-and-read-from-to-stdin-.patch
@@ -54,10 +54,10 @@ index c9dd70a892..048788b23d 100644
  
  DEF("info", img_info,
 diff --git a/qemu-img.c b/qemu-img.c
-index 2575e97b43..8ec68b346f 100644
+index 4c8b5412c6..d5fa89a204 100644
 --- a/qemu-img.c
 +++ b/qemu-img.c
-@@ -4993,10 +4993,12 @@ static int img_bitmap(int argc, char **argv)
+@@ -4997,10 +4997,12 @@ static int img_bitmap(int argc, char **argv)
  #define C_IF      04
  #define C_OF      010
  #define C_SKIP    020
@@ -70,7 +70,7 @@ index 2575e97b43..8ec68b346f 100644
  };
  
  struct DdIo {
-@@ -5072,6 +5074,19 @@ static int img_dd_skip(const char *arg,
+@@ -5076,6 +5078,19 @@ static int img_dd_skip(const char *arg,
      return 0;
  }
  
@@ -90,7 +90,7 @@ index 2575e97b43..8ec68b346f 100644
  static int img_dd(int argc, char **argv)
  {
      int ret = 0;
-@@ -5112,6 +5127,7 @@ static int img_dd(int argc, char **argv)
+@@ -5116,6 +5131,7 @@ static int img_dd(int argc, char **argv)
          { "if", img_dd_if, C_IF },
          { "of", img_dd_of, C_OF },
          { "skip", img_dd_skip, C_SKIP },
@@ -98,7 +98,7 @@ index 2575e97b43..8ec68b346f 100644
          { NULL, NULL, 0 }
      };
      const struct option long_options[] = {
-@@ -5187,91 +5203,112 @@ static int img_dd(int argc, char **argv)
+@@ -5191,91 +5207,112 @@ static int img_dd(int argc, char **argv)
          arg = NULL;
      }
  
@@ -275,7 +275,7 @@ index 2575e97b43..8ec68b346f 100644
      }
  
      if (dd.flags & C_SKIP && (in.offset > INT64_MAX / in.bsz ||
-@@ -5288,20 +5325,43 @@ static int img_dd(int argc, char **argv)
+@@ -5292,20 +5329,43 @@ static int img_dd(int argc, char **argv)
      in.buf = g_new(uint8_t, in.bsz);
  
      for (out_pos = 0; in_pos < size; ) {
diff --git a/debian/patches/pve/0010-PVE-Up-qemu-img-dd-add-isize-parameter.patch b/debian/patches/pve/0010-PVE-Up-qemu-img-dd-add-isize-parameter.patch
index 31bbce2..af2c520 100644
--- a/debian/patches/pve/0010-PVE-Up-qemu-img-dd-add-isize-parameter.patch
+++ b/debian/patches/pve/0010-PVE-Up-qemu-img-dd-add-isize-parameter.patch
@@ -16,10 +16,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 25 insertions(+), 3 deletions(-)
 
 diff --git a/qemu-img.c b/qemu-img.c
-index 8ec68b346f..b98184bba1 100644
+index d5fa89a204..d458e85af2 100644
 --- a/qemu-img.c
 +++ b/qemu-img.c
-@@ -4994,11 +4994,13 @@ static int img_bitmap(int argc, char **argv)
+@@ -4998,11 +4998,13 @@ static int img_bitmap(int argc, char **argv)
  #define C_OF      010
  #define C_SKIP    020
  #define C_OSIZE   040
@@ -33,7 +33,7 @@ index 8ec68b346f..b98184bba1 100644
  };
  
  struct DdIo {
-@@ -5087,6 +5089,19 @@ static int img_dd_osize(const char *arg,
+@@ -5091,6 +5093,19 @@ static int img_dd_osize(const char *arg,
      return 0;
  }
  
@@ -53,7 +53,7 @@ index 8ec68b346f..b98184bba1 100644
  static int img_dd(int argc, char **argv)
  {
      int ret = 0;
-@@ -5101,12 +5116,14 @@ static int img_dd(int argc, char **argv)
+@@ -5105,12 +5120,14 @@ static int img_dd(int argc, char **argv)
      int c, i;
      const char *out_fmt = "raw";
      const char *fmt = NULL;
@@ -69,7 +69,7 @@ index 8ec68b346f..b98184bba1 100644
      };
      struct DdIo in = {
          .bsz = 512, /* Block size is by default 512 bytes */
-@@ -5128,6 +5145,7 @@ static int img_dd(int argc, char **argv)
+@@ -5132,6 +5149,7 @@ static int img_dd(int argc, char **argv)
          { "of", img_dd_of, C_OF },
          { "skip", img_dd_skip, C_SKIP },
          { "osize", img_dd_osize, C_OSIZE },
@@ -77,7 +77,7 @@ index 8ec68b346f..b98184bba1 100644
          { NULL, NULL, 0 }
      };
      const struct option long_options[] = {
-@@ -5324,9 +5342,10 @@ static int img_dd(int argc, char **argv)
+@@ -5328,9 +5346,10 @@ static int img_dd(int argc, char **argv)
  
      in.buf = g_new(uint8_t, in.bsz);
  
@@ -90,7 +90,7 @@ index 8ec68b346f..b98184bba1 100644
          if (blk1) {
              in_ret = blk_pread(blk1, in_pos, bytes, in.buf, 0);
              if (in_ret == 0) {
-@@ -5335,6 +5354,9 @@ static int img_dd(int argc, char **argv)
+@@ -5339,6 +5358,9 @@ static int img_dd(int argc, char **argv)
          } else {
              in_ret = read(STDIN_FILENO, in.buf, bytes);
              if (in_ret == 0) {
diff --git a/debian/patches/pve/0011-PVE-Up-qemu-img-dd-add-n-skip_create.patch b/debian/patches/pve/0011-PVE-Up-qemu-img-dd-add-n-skip_create.patch
index a5bf769..cf94190 100644
--- a/debian/patches/pve/0011-PVE-Up-qemu-img-dd-add-n-skip_create.patch
+++ b/debian/patches/pve/0011-PVE-Up-qemu-img-dd-add-n-skip_create.patch
@@ -65,10 +65,10 @@ index 048788b23d..0b29a67a06 100644
  
  DEF("info", img_info,
 diff --git a/qemu-img.c b/qemu-img.c
-index b98184bba1..6fc8384f64 100644
+index d458e85af2..dc13efba8b 100644
 --- a/qemu-img.c
 +++ b/qemu-img.c
-@@ -5118,7 +5118,7 @@ static int img_dd(int argc, char **argv)
+@@ -5122,7 +5122,7 @@ static int img_dd(int argc, char **argv)
      const char *fmt = NULL;
      int64_t size = 0, readsize = 0;
      int64_t out_pos, in_pos;
@@ -77,7 +77,7 @@ index b98184bba1..6fc8384f64 100644
      struct DdInfo dd = {
          .flags = 0,
          .count = 0,
-@@ -5156,7 +5156,7 @@ static int img_dd(int argc, char **argv)
+@@ -5160,7 +5160,7 @@ static int img_dd(int argc, char **argv)
          { 0, 0, 0, 0 }
      };
  
@@ -86,7 +86,7 @@ index b98184bba1..6fc8384f64 100644
          if (c == EOF) {
              break;
          }
-@@ -5176,6 +5176,9 @@ static int img_dd(int argc, char **argv)
+@@ -5180,6 +5180,9 @@ static int img_dd(int argc, char **argv)
          case 'h':
              help();
              break;
@@ -96,7 +96,7 @@ index b98184bba1..6fc8384f64 100644
          case 'U':
              force_share = true;
              break;
-@@ -5306,13 +5309,15 @@ static int img_dd(int argc, char **argv)
+@@ -5310,13 +5313,15 @@ static int img_dd(int argc, char **argv)
                                  size - in.bsz * in.offset, &error_abort);
          }
  
diff --git a/debian/patches/pve/0012-qemu-img-dd-add-l-option-for-loading-a-snapshot.patch b/debian/patches/pve/0012-qemu-img-dd-add-l-option-for-loading-a-snapshot.patch
index 93a7380..493c61e 100644
--- a/debian/patches/pve/0012-qemu-img-dd-add-l-option-for-loading-a-snapshot.patch
+++ b/debian/patches/pve/0012-qemu-img-dd-add-l-option-for-loading-a-snapshot.patch
@@ -46,10 +46,10 @@ index 0b29a67a06..758f397232 100644
  
  DEF("info", img_info,
 diff --git a/qemu-img.c b/qemu-img.c
-index 6fc8384f64..a6c88e0860 100644
+index dc13efba8b..02f2e0aa45 100644
 --- a/qemu-img.c
 +++ b/qemu-img.c
-@@ -5110,6 +5110,7 @@ static int img_dd(int argc, char **argv)
+@@ -5114,6 +5114,7 @@ static int img_dd(int argc, char **argv)
      BlockDriver *drv = NULL, *proto_drv = NULL;
      BlockBackend *blk1 = NULL, *blk2 = NULL;
      QemuOpts *opts = NULL;
@@ -57,7 +57,7 @@ index 6fc8384f64..a6c88e0860 100644
      QemuOptsList *create_opts = NULL;
      Error *local_err = NULL;
      bool image_opts = false;
-@@ -5119,6 +5120,7 @@ static int img_dd(int argc, char **argv)
+@@ -5123,6 +5124,7 @@ static int img_dd(int argc, char **argv)
      int64_t size = 0, readsize = 0;
      int64_t out_pos, in_pos;
      bool force_share = false, skip_create = false;
@@ -65,7 +65,7 @@ index 6fc8384f64..a6c88e0860 100644
      struct DdInfo dd = {
          .flags = 0,
          .count = 0,
-@@ -5156,7 +5158,7 @@ static int img_dd(int argc, char **argv)
+@@ -5160,7 +5162,7 @@ static int img_dd(int argc, char **argv)
          { 0, 0, 0, 0 }
      };
  
@@ -74,7 +74,7 @@ index 6fc8384f64..a6c88e0860 100644
          if (c == EOF) {
              break;
          }
-@@ -5179,6 +5181,19 @@ static int img_dd(int argc, char **argv)
+@@ -5183,6 +5185,19 @@ static int img_dd(int argc, char **argv)
          case 'n':
              skip_create = true;
              break;
@@ -94,7 +94,7 @@ index 6fc8384f64..a6c88e0860 100644
          case 'U':
              force_share = true;
              break;
-@@ -5238,11 +5253,24 @@ static int img_dd(int argc, char **argv)
+@@ -5242,11 +5257,24 @@ static int img_dd(int argc, char **argv)
      if (dd.flags & C_IF) {
          blk1 = img_open(image_opts, in.filename, fmt, 0, false, false,
                          force_share);
@@ -120,7 +120,7 @@ index 6fc8384f64..a6c88e0860 100644
      }
  
      if (dd.flags & C_OSIZE) {
-@@ -5397,6 +5425,7 @@ static int img_dd(int argc, char **argv)
+@@ -5401,6 +5429,7 @@ static int img_dd(int argc, char **argv)
  out:
      g_free(arg);
      qemu_opts_del(opts);
diff --git a/debian/patches/pve/0013-PVE-virtio-balloon-improve-query-balloon.patch b/debian/patches/pve/0013-PVE-virtio-balloon-improve-query-balloon.patch
index bb826a1..ec4b348 100644
--- a/debian/patches/pve/0013-PVE-virtio-balloon-improve-query-balloon.patch
+++ b/debian/patches/pve/0013-PVE-virtio-balloon-improve-query-balloon.patch
@@ -18,7 +18,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  4 files changed, 82 insertions(+), 4 deletions(-)
 
 diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c
-index 8701f00cc7..3b4c5ef403 100644
+index c6325cdcaa..7f817d622d 100644
 --- a/hw/core/machine-hmp-cmds.c
 +++ b/hw/core/machine-hmp-cmds.c
 @@ -179,7 +179,35 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict)
@@ -59,7 +59,7 @@ index 8701f00cc7..3b4c5ef403 100644
      qapi_free_BalloonInfo(info);
  }
 diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
-index afd2ad6dd6..c724218c17 100644
+index 2eb5a14fa2..aa2fd6c32f 100644
 --- a/hw/virtio/virtio-balloon.c
 +++ b/hw/virtio/virtio-balloon.c
 @@ -795,8 +795,37 @@ static uint64_t virtio_balloon_get_features(VirtIODevice *vdev, uint64_t f,
diff --git a/debian/patches/pve/0014-PVE-qapi-modify-query-machines.patch b/debian/patches/pve/0014-PVE-qapi-modify-query-machines.patch
index 9ff9090..3fa6209 100644
--- a/debian/patches/pve/0014-PVE-qapi-modify-query-machines.patch
+++ b/debian/patches/pve/0014-PVE-qapi-modify-query-machines.patch
@@ -13,10 +13,10 @@ Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
  2 files changed, 9 insertions(+), 1 deletion(-)
 
 diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
-index 130217da8f..52a6d74820 100644
+index 1bc21b84a4..93fb4bc24a 100644
 --- a/hw/core/machine-qmp-cmds.c
 +++ b/hw/core/machine-qmp-cmds.c
-@@ -90,6 +90,12 @@ MachineInfoList *qmp_query_machines(bool has_compat_props, bool compat_props,
+@@ -91,6 +91,12 @@ MachineInfoList *qmp_query_machines(bool has_compat_props, bool compat_props,
          info->numa_mem_supported = mc->numa_mem_supported;
          info->deprecated = !!mc->deprecation_reason;
          info->acpi = !!object_class_property_find(OBJECT_CLASS(mc), "acpi");
@@ -26,8 +26,8 @@ index 130217da8f..52a6d74820 100644
 +            info->is_current = true;
 +        }
 +
-         if (mc->default_cpu_type) {
-             info->default_cpu_type = g_strdup(mc->default_cpu_type);
+         if (default_cpu_type) {
+             info->default_cpu_type = g_strdup(default_cpu_type);
          }
 diff --git a/qapi/machine.json b/qapi/machine.json
 index 9f7ed0eaa0..16366b774a 100644
diff --git a/debian/patches/pve/0015-PVE-qapi-modify-spice-query.patch b/debian/patches/pve/0015-PVE-qapi-modify-spice-query.patch
index 1e4319e..cf85582 100644
--- a/debian/patches/pve/0015-PVE-qapi-modify-spice-query.patch
+++ b/debian/patches/pve/0015-PVE-qapi-modify-spice-query.patch
@@ -14,7 +14,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  2 files changed, 7 insertions(+)
 
 diff --git a/qapi/ui.json b/qapi/ui.json
-index 460a26b981..42b911bda3 100644
+index c536d4e524..c2df48959b 100644
 --- a/qapi/ui.json
 +++ b/qapi/ui.json
 @@ -312,11 +312,14 @@
@@ -33,7 +33,7 @@ index 460a26b981..42b911bda3 100644
    'if': 'CONFIG_SPICE' }
  
 diff --git a/ui/spice-core.c b/ui/spice-core.c
-index a7ecaad9c7..fecf002d50 100644
+index d523d00200..c76c224706 100644
 --- a/ui/spice-core.c
 +++ b/ui/spice-core.c
 @@ -548,6 +548,10 @@ static SpiceInfo *qmp_query_spice_real(Error **errp)
diff --git a/debian/patches/pve/0016-PVE-add-IOChannel-implementation-for-savevm-async.patch b/debian/patches/pve/0016-PVE-add-IOChannel-implementation-for-savevm-async.patch
index 31cd174..0e69c98 100644
--- a/debian/patches/pve/0016-PVE-add-IOChannel-implementation-for-savevm-async.patch
+++ b/debian/patches/pve/0016-PVE-add-IOChannel-implementation-for-savevm-async.patch
@@ -25,7 +25,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
 
 diff --git a/migration/channel-savevm-async.c b/migration/channel-savevm-async.c
 new file mode 100644
-index 0000000000..081a192f49
+index 0000000000..e57ab2ae40
 --- /dev/null
 +++ b/migration/channel-savevm-async.c
 @@ -0,0 +1,184 @@
@@ -35,7 +35,7 @@ index 0000000000..081a192f49
 +#include "qemu/osdep.h"
 +#include "migration/channel-savevm-async.h"
 +#include "qapi/error.h"
-+#include "sysemu/block-backend.h"
++#include "system/block-backend.h"
 +#include "trace.h"
 +
 +QIOChannelSavevmAsync *
@@ -271,14 +271,14 @@ index 0000000000..17ae2cb261
 +
 +#endif /* QIO_CHANNEL_SAVEVM_ASYNC_H */
 diff --git a/migration/meson.build b/migration/meson.build
-index d53cf3417a..b00d58064d 100644
+index 9aa48b290e..cf66c78681 100644
 --- a/migration/meson.build
 +++ b/migration/meson.build
-@@ -13,6 +13,7 @@ system_ss.add(files(
-   'block-dirty-bitmap.c',
+@@ -14,6 +14,7 @@ system_ss.add(files(
+   'block-active.c',
    'channel.c',
    'channel-block.c',
 +  'channel-savevm-async.c',
+   'cpr.c',
+   'cpr-transfer.c',
    'cpu-throttle.c',
-   'dirtyrate.c',
-   'exec.c',
diff --git a/debian/patches/pve/0017-PVE-add-savevm-async-for-background-state-snapshots.patch b/debian/patches/pve/0017-PVE-add-savevm-async-for-background-state-snapshots.patch
index e558da6..6e19c3d 100644
--- a/debian/patches/pve/0017-PVE-add-savevm-async-for-background-state-snapshots.patch
+++ b/debian/patches/pve/0017-PVE-add-savevm-async-for-background-state-snapshots.patch
@@ -38,13 +38,13 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  include/migration/snapshot.h |   2 +
  include/monitor/hmp.h        |   3 +
  migration/meson.build        |   1 +
- migration/savevm-async.c     | 571 +++++++++++++++++++++++++++++++++++
+ migration/savevm-async.c     | 572 +++++++++++++++++++++++++++++++++++
  monitor/hmp-cmds.c           |  38 +++
  qapi/migration.json          |  34 +++
  qapi/misc.json               |  18 ++
  qemu-options.hx              |  12 +
  system/vl.c                  |  10 +
- 11 files changed, 719 insertions(+)
+ 11 files changed, 720 insertions(+)
  create mode 100644 migration/savevm-async.c
 
 diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
@@ -129,10 +129,10 @@ index ae116d9804..2596cc2426 100644
  void coroutine_fn hmp_screendump(Monitor *mon, const QDict *qdict);
  void hmp_chardev_add(Monitor *mon, const QDict *qdict);
 diff --git a/migration/meson.build b/migration/meson.build
-index b00d58064d..075b013971 100644
+index cf66c78681..46e92249a1 100644
 --- a/migration/meson.build
 +++ b/migration/meson.build
-@@ -29,6 +29,7 @@ system_ss.add(files(
+@@ -33,6 +33,7 @@ system_ss.add(files(
    'options.c',
    'postcopy-ram.c',
    'savevm.c',
@@ -142,10 +142,10 @@ index b00d58064d..075b013971 100644
    'threadinfo.c',
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
 new file mode 100644
-index 0000000000..ee8ef316d0
+index 0000000000..7c0e857519
 --- /dev/null
 +++ b/migration/savevm-async.c
-@@ -0,0 +1,571 @@
+@@ -0,0 +1,572 @@
 +#include "qemu/osdep.h"
 +#include "migration/channel-savevm-async.h"
 +#include "migration/migration.h"
@@ -156,14 +156,14 @@ index 0000000000..ee8ef316d0
 +#include "migration/global_state.h"
 +#include "migration/ram.h"
 +#include "migration/qemu-file.h"
-+#include "sysemu/cpu-throttle.h"
-+#include "sysemu/sysemu.h"
-+#include "sysemu/runstate.h"
++#include "system/cpu-throttle.h"
++#include "system/system.h"
++#include "system/runstate.h"
 +#include "block/block.h"
-+#include "sysemu/block-backend.h"
++#include "system/block-backend.h"
 +#include "qapi/error.h"
 +#include "qapi/qmp/qerror.h"
-+#include "qapi/qmp/qdict.h"
++#include "qobject/qdict.h"
 +#include "qapi/qapi-commands-migration.h"
 +#include "qapi/qapi-commands-misc.h"
 +#include "qapi/qapi-commands-block.h"
@@ -173,6 +173,7 @@ index 0000000000..ee8ef316d0
 +#include "qemu/main-loop.h"
 +#include "qemu/rcu.h"
 +#include "qemu/yank.h"
++#include "system/iothread.h"
 +
 +/* #define DEBUG_SAVEVM_STATE */
 +
@@ -333,7 +334,7 @@ index 0000000000..ee8ef316d0
 +
 +    if (!aborted) {
 +        /* skip state saving if we aborted, snapshot will be invalid anyway */
-+        (void)qemu_savevm_state_complete_precopy(snap_state.file, false, false);
++        (void)qemu_savevm_state_complete_precopy(snap_state.file, false);
 +        ret = qemu_file_get_error(snap_state.file);
 +        if (ret < 0) {
 +            save_snapshot_error("qemu_savevm_state_complete_precopy error %d", ret);
@@ -718,7 +719,7 @@ index 0000000000..ee8ef316d0
 +    return ret;
 +}
 diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
-index f601d06ab8..874084565f 100644
+index 7ded3378cf..bade2a4b92 100644
 --- a/monitor/hmp-cmds.c
 +++ b/monitor/hmp-cmds.c
 @@ -24,6 +24,7 @@
@@ -727,10 +728,10 @@ index f601d06ab8..874084565f 100644
  #include "qapi/qapi-commands-machine.h"
 +#include "qapi/qapi-commands-migration.h"
  #include "qapi/qapi-commands-misc.h"
- #include "qapi/qmp/qdict.h"
+ #include "qobject/qdict.h"
  #include "qemu/cutils.h"
 @@ -434,3 +435,40 @@ void hmp_dumpdtb(Monitor *mon, const QDict *qdict)
-     monitor_printf(mon, "dtb dumped to %s", filename);
+     monitor_printf(mon, "DTB dumped to '%s'\n", filename);
  }
  #endif
 +
@@ -771,10 +772,10 @@ index f601d06ab8..874084565f 100644
 +    }
 +}
 diff --git a/qapi/migration.json b/qapi/migration.json
-index a605dc26db..927b1e1c7d 100644
+index 8b9c53595c..ff3479da65 100644
 --- a/qapi/migration.json
 +++ b/qapi/migration.json
-@@ -276,6 +276,40 @@
+@@ -279,6 +279,40 @@
             '*dirty-limit-throttle-time-per-round': 'uint64',
             '*dirty-limit-ring-full-time': 'uint64'} }
  
@@ -845,10 +846,10 @@ index 559b66f201..7959e89c1e 100644
  # @CommandLineParameterType:
  #
 diff --git a/qemu-options.hx b/qemu-options.hx
-index dacc9790a4..c05f411599 100644
+index dc694a99a3..defee0c06a 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
-@@ -4764,6 +4764,18 @@ SRST
+@@ -4862,6 +4862,18 @@ SRST
      Start right away with a saved state (``loadvm`` in monitor)
  ERST
  
@@ -868,10 +869,10 @@ index dacc9790a4..c05f411599 100644
  DEF("daemonize", 0, QEMU_OPTION_daemonize, \
      "-daemonize      daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
 diff --git a/system/vl.c b/system/vl.c
-index 2f855d83fb..39d451bb41 100644
+index ec93988a03..9b36ace6b4 100644
 --- a/system/vl.c
 +++ b/system/vl.c
-@@ -164,6 +164,7 @@ static const char *accelerators;
+@@ -171,6 +171,7 @@ static const char *accelerators;
  static bool have_custom_ram_size;
  static const char *ram_memdev_id;
  static QDict *machine_opts_dict;
@@ -879,7 +880,7 @@ index 2f855d83fb..39d451bb41 100644
  static QTAILQ_HEAD(, ObjectOption) object_opts = QTAILQ_HEAD_INITIALIZER(object_opts);
  static QTAILQ_HEAD(, DeviceOption) device_opts = QTAILQ_HEAD_INITIALIZER(device_opts);
  static int display_remote;
-@@ -2725,6 +2726,12 @@ void qmp_x_exit_preconfig(Error **errp)
+@@ -2814,6 +2815,12 @@ void qmp_x_exit_preconfig(Error **errp)
          RunState state = autostart ? RUN_STATE_RUNNING : runstate_get();
          load_snapshot(loadvm, NULL, false, NULL, &error_fatal);
          load_snapshot_resume(state);
@@ -892,7 +893,7 @@ index 2f855d83fb..39d451bb41 100644
      }
      if (replay_mode != REPLAY_MODE_NONE) {
          replay_vmstate_init();
-@@ -3262,6 +3269,9 @@ void qemu_init(int argc, char **argv)
+@@ -3360,6 +3367,9 @@ void qemu_init(int argc, char **argv)
              case QEMU_OPTION_loadvm:
                  loadvm = optarg;
                  break;
diff --git a/debian/patches/pve/0018-PVE-add-optional-buffer-size-to-QEMUFile.patch b/debian/patches/pve/0018-PVE-add-optional-buffer-size-to-QEMUFile.patch
index 93598cf..13d522a 100644
--- a/debian/patches/pve/0018-PVE-add-optional-buffer-size-to-QEMUFile.patch
+++ b/debian/patches/pve/0018-PVE-add-optional-buffer-size-to-QEMUFile.patch
@@ -19,7 +19,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  3 files changed, 38 insertions(+), 17 deletions(-)
 
 diff --git a/migration/qemu-file.c b/migration/qemu-file.c
-index b6d2f588bd..754dc0b3f7 100644
+index 1303a5bf58..6e2d58d5c0 100644
 --- a/migration/qemu-file.c
 +++ b/migration/qemu-file.c
 @@ -34,8 +34,8 @@
@@ -31,9 +31,9 @@ index b6d2f588bd..754dc0b3f7 100644
 +#define DEFAULT_IO_BUF_SIZE 32768
 +#define MAX_IOV_SIZE MIN_CONST(IOV_MAX, 256)
  
- struct QEMUFile {
-     QIOChannel *ioc;
-@@ -43,7 +43,8 @@ struct QEMUFile {
+ typedef struct FdEntry {
+     QTAILQ_ENTRY(FdEntry) entry;
+@@ -48,7 +48,8 @@ struct QEMUFile {
  
      int buf_index;
      int buf_size; /* 0 when writing */
@@ -43,7 +43,7 @@ index b6d2f588bd..754dc0b3f7 100644
  
      DECLARE_BITMAP(may_free, MAX_IOV_SIZE);
      struct iovec iov[MAX_IOV_SIZE];
-@@ -100,7 +101,9 @@ int qemu_file_shutdown(QEMUFile *f)
+@@ -108,7 +109,9 @@ int qemu_file_shutdown(QEMUFile *f)
      return 0;
  }
  
@@ -54,16 +54,16 @@ index b6d2f588bd..754dc0b3f7 100644
  {
      QEMUFile *f;
  
-@@ -109,6 +112,8 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
-     object_ref(ioc);
-     f->ioc = ioc;
+@@ -119,6 +122,8 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
      f->is_writable = is_writable;
+     f->can_pass_fd = qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_FD_PASS);
+     QTAILQ_INIT(&f->fds);
 +    f->buf_allocated_size = buffer_size;
 +    f->buf = malloc(buffer_size);
  
      return f;
  }
-@@ -119,17 +124,27 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
+@@ -129,17 +134,27 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
   */
  QEMUFile *qemu_file_get_return_path(QEMUFile *f)
  {
@@ -94,17 +94,17 @@ index b6d2f588bd..754dc0b3f7 100644
  }
  
  /*
-@@ -327,7 +342,7 @@ static ssize_t coroutine_mixed_fn qemu_fill_buffer(QEMUFile *f)
+@@ -339,7 +354,7 @@ static ssize_t coroutine_mixed_fn qemu_fill_buffer(QEMUFile *f)
+     }
+ 
      do {
-         len = qio_channel_read(f->ioc,
-                                (char *)f->buf + pending,
--                               IO_BUF_SIZE - pending,
-+                               f->buf_allocated_size - pending,
-                                &local_error);
+-        struct iovec iov = { f->buf + pending, IO_BUF_SIZE - pending };
++        struct iovec iov = { f->buf + pending, f->buf_allocated_size - pending };
+         len = qio_channel_readv_full(f->ioc, &iov, 1, pfds, pnfd, 0,
+                                      &local_error);
          if (len == QIO_CHANNEL_ERR_BLOCK) {
-             if (qemu_in_coroutine()) {
-@@ -367,6 +382,9 @@ int qemu_fclose(QEMUFile *f)
-         ret = ret2;
+@@ -443,6 +458,9 @@ int qemu_fclose(QEMUFile *f)
+         g_free(fde);
      }
      g_clear_pointer(&f->ioc, object_unref);
 +
@@ -113,7 +113,7 @@ index b6d2f588bd..754dc0b3f7 100644
      error_free(f->last_error_obj);
      g_free(f);
      trace_qemu_file_fclose();
-@@ -415,7 +433,7 @@ static void add_buf_to_iovec(QEMUFile *f, size_t len)
+@@ -491,7 +509,7 @@ static void add_buf_to_iovec(QEMUFile *f, size_t len)
  {
      if (!add_to_iovec(f, f->buf + f->buf_index, len, false)) {
          f->buf_index += len;
@@ -122,7 +122,7 @@ index b6d2f588bd..754dc0b3f7 100644
              qemu_fflush(f);
          }
      }
-@@ -440,7 +458,7 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, size_t size)
+@@ -516,7 +534,7 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, size_t size)
      }
  
      while (size > 0) {
@@ -131,7 +131,7 @@ index b6d2f588bd..754dc0b3f7 100644
          if (l > size) {
              l = size;
          }
-@@ -586,8 +604,8 @@ size_t coroutine_mixed_fn qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t si
+@@ -662,8 +680,8 @@ size_t coroutine_mixed_fn qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t si
      size_t index;
  
      assert(!qemu_file_is_writable(f));
@@ -142,7 +142,7 @@ index b6d2f588bd..754dc0b3f7 100644
  
      /* The 1st byte to read from */
      index = f->buf_index + offset;
-@@ -637,7 +655,7 @@ size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size
+@@ -713,7 +731,7 @@ size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size
          size_t res;
          uint8_t *src;
  
@@ -151,7 +151,7 @@ index b6d2f588bd..754dc0b3f7 100644
          if (res == 0) {
              return done;
          }
-@@ -671,7 +689,7 @@ size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size
+@@ -747,7 +765,7 @@ size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size
   */
  size_t coroutine_mixed_fn qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size)
  {
@@ -160,7 +160,7 @@ index b6d2f588bd..754dc0b3f7 100644
          size_t res;
          uint8_t *src = NULL;
  
-@@ -696,7 +714,7 @@ int coroutine_mixed_fn qemu_peek_byte(QEMUFile *f, int offset)
+@@ -772,7 +790,7 @@ int coroutine_mixed_fn qemu_peek_byte(QEMUFile *f, int offset)
      int index = f->buf_index + offset;
  
      assert(!qemu_file_is_writable(f));
@@ -170,7 +170,7 @@ index b6d2f588bd..754dc0b3f7 100644
      if (index >= f->buf_size) {
          qemu_fill_buffer(f);
 diff --git a/migration/qemu-file.h b/migration/qemu-file.h
-index 11c2120edd..edf3c5d147 100644
+index f5b9f430e0..0179b90698 100644
 --- a/migration/qemu-file.h
 +++ b/migration/qemu-file.h
 @@ -30,7 +30,9 @@
@@ -182,12 +182,12 @@ index 11c2120edd..edf3c5d147 100644
 +QEMUFile *qemu_file_new_output_sized(QIOChannel *ioc, size_t buffer_size);
  int qemu_fclose(QEMUFile *f);
  
- /*
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(QEMUFile, qemu_fclose)
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index ee8ef316d0..1e79fce9ba 100644
+index 7c0e857519..fbcf74f9e2 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
-@@ -390,7 +390,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -391,7 +391,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
  
      QIOChannel *ioc = QIO_CHANNEL(qio_channel_savevm_async_new(snap_state.target,
                                                                 &snap_state.bs_pos));
@@ -196,7 +196,7 @@ index ee8ef316d0..1e79fce9ba 100644
  
      if (!snap_state.file) {
          error_setg(errp, "failed to open '%s'", statefile);
-@@ -534,7 +534,8 @@ int load_snapshot_from_blockdev(const char *filename, Error **errp)
+@@ -535,7 +535,8 @@ int load_snapshot_from_blockdev(const char *filename, Error **errp)
      bdrv_op_block_all(bs, blocker);
  
      /* restore the VM state */
diff --git a/debian/patches/pve/0019-PVE-block-add-the-zeroinit-block-driver-filter.patch b/debian/patches/pve/0019-PVE-block-add-the-zeroinit-block-driver-filter.patch
index 360f54e..dc1145d 100644
--- a/debian/patches/pve/0019-PVE-block-add-the-zeroinit-block-driver-filter.patch
+++ b/debian/patches/pve/0019-PVE-block-add-the-zeroinit-block-driver-filter.patch
@@ -15,7 +15,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  create mode 100644 block/zeroinit.c
 
 diff --git a/block/meson.build b/block/meson.build
-index f1262ec2ba..6a60b5d6b9 100644
+index 34b1b2a306..a21d9a5411 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -39,6 +39,7 @@ block_ss.add(files(
@@ -28,7 +28,7 @@ index f1262ec2ba..6a60b5d6b9 100644
  system_ss.add(when: 'CONFIG_TCG', if_true: files('blkreplay.c'))
 diff --git a/block/zeroinit.c b/block/zeroinit.c
 new file mode 100644
-index 0000000000..2b2b194ccf
+index 0000000000..f9d513db15
 --- /dev/null
 +++ b/block/zeroinit.c
 @@ -0,0 +1,207 @@
@@ -47,8 +47,8 @@ index 0000000000..2b2b194ccf
 +#include "block/block_int.h"
 +#include "block/block-io.h"
 +#include "block/graph-lock.h"
-+#include "qapi/qmp/qdict.h"
-+#include "qapi/qmp/qstring.h"
++#include "qobject/qdict.h"
++#include "qobject/qstring.h"
 +#include "qemu/cutils.h"
 +#include "qemu/option.h"
 +#include "qemu/module.h"
diff --git a/debian/patches/pve/0020-PVE-Add-dummy-id-command-line-parameter.patch b/debian/patches/pve/0020-PVE-Add-dummy-id-command-line-parameter.patch
index 1145940..1f7383c 100644
--- a/debian/patches/pve/0020-PVE-Add-dummy-id-command-line-parameter.patch
+++ b/debian/patches/pve/0020-PVE-Add-dummy-id-command-line-parameter.patch
@@ -14,10 +14,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  2 files changed, 11 insertions(+)
 
 diff --git a/qemu-options.hx b/qemu-options.hx
-index c05f411599..0732077a0e 100644
+index defee0c06a..fb980a05cf 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
-@@ -1239,6 +1239,9 @@ legacy PC, they are not recommended for modern configurations.
+@@ -1280,6 +1280,9 @@ legacy PC, they are not recommended for modern configurations.
  
  ERST
  
@@ -28,10 +28,10 @@ index c05f411599..0732077a0e 100644
      "-fda/-fdb file  use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
  DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
 diff --git a/system/vl.c b/system/vl.c
-index 39d451bb41..e7cae51f13 100644
+index 9b36ace6b4..452742ab58 100644
 --- a/system/vl.c
 +++ b/system/vl.c
-@@ -2762,6 +2762,7 @@ void qemu_init(int argc, char **argv)
+@@ -2854,6 +2854,7 @@ void qemu_init(int argc, char **argv)
      MachineClass *machine_class;
      bool userconfig = true;
      FILE *vmstate_dump_file = NULL;
@@ -39,7 +39,7 @@ index 39d451bb41..e7cae51f13 100644
  
      qemu_add_opts(&qemu_drive_opts);
      qemu_add_drive_opts(&qemu_legacy_drive_opts);
-@@ -3374,6 +3375,13 @@ void qemu_init(int argc, char **argv)
+@@ -3472,6 +3473,13 @@ void qemu_init(int argc, char **argv)
                  machine_parse_property_opt(qemu_find_opts("smp-opts"),
                                             "smp", optarg);
                  break;
diff --git a/debian/patches/pve/0021-PVE-Config-Revert-target-i386-disable-LINT0-after-re.patch b/debian/patches/pve/0021-PVE-Config-Revert-target-i386-disable-LINT0-after-re.patch
index b353e47..67c542b 100644
--- a/debian/patches/pve/0021-PVE-Config-Revert-target-i386-disable-LINT0-after-re.patch
+++ b/debian/patches/pve/0021-PVE-Config-Revert-target-i386-disable-LINT0-after-re.patch
@@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 9 insertions(+)
 
 diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
-index 62f3bbf203..89e0c7d995 100644
+index 2a3e878c4d..efbed1aea3 100644
 --- a/hw/intc/apic_common.c
 +++ b/hw/intc/apic_common.c
 @@ -263,6 +263,15 @@ static void apic_reset_common(DeviceState *dev)
diff --git a/debian/patches/pve/0022-PVE-Up-Config-file-posix-make-locking-optiono-on-cre.patch b/debian/patches/pve/0022-PVE-Up-Config-file-posix-make-locking-optiono-on-cre.patch
index bb1b37e..bf230a5 100644
--- a/debian/patches/pve/0022-PVE-Up-Config-file-posix-make-locking-optiono-on-cre.patch
+++ b/debian/patches/pve/0022-PVE-Up-Config-file-posix-make-locking-optiono-on-cre.patch
@@ -13,10 +13,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  2 files changed, 46 insertions(+), 20 deletions(-)
 
 diff --git a/block/file-posix.c b/block/file-posix.c
-index e2ea071315..4c3dc56c8e 100644
+index cfa0b832ba..d5c28cccc9 100644
 --- a/block/file-posix.c
 +++ b/block/file-posix.c
-@@ -2884,6 +2884,7 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
+@@ -2897,6 +2897,7 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
      int fd;
      uint64_t perm, shared;
      int result = 0;
@@ -24,7 +24,7 @@ index e2ea071315..4c3dc56c8e 100644
  
      /* Validate options and set default values */
      assert(options->driver == BLOCKDEV_DRIVER_FILE);
-@@ -2924,19 +2925,22 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
+@@ -2937,19 +2938,22 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
      perm = BLK_PERM_WRITE | BLK_PERM_RESIZE;
      shared = BLK_PERM_ALL & ~BLK_PERM_RESIZE;
  
@@ -59,7 +59,7 @@ index e2ea071315..4c3dc56c8e 100644
      }
  
      /* Clear the file by truncating it to 0 */
-@@ -2990,13 +2994,15 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
+@@ -3003,13 +3007,15 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
      }
  
  out_unlock:
@@ -82,7 +82,7 @@ index e2ea071315..4c3dc56c8e 100644
      }
  
  out_close:
-@@ -3020,6 +3026,7 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
+@@ -3033,6 +3039,7 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
      PreallocMode prealloc;
      char *buf = NULL;
      Error *local_err = NULL;
@@ -90,7 +90,7 @@ index e2ea071315..4c3dc56c8e 100644
  
      /* Skip file: protocol prefix */
      strstart(filename, "file:", &filename);
-@@ -3042,6 +3049,18 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
+@@ -3055,6 +3062,18 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
          return -EINVAL;
      }
  
@@ -109,7 +109,7 @@ index e2ea071315..4c3dc56c8e 100644
      options = (BlockdevCreateOptions) {
          .driver     = BLOCKDEV_DRIVER_FILE,
          .u.file     = {
-@@ -3053,6 +3072,8 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
+@@ -3066,6 +3085,8 @@ raw_co_create_opts(BlockDriver *drv, const char *filename,
              .nocow              = nocow,
              .has_extent_size_hint = has_extent_size_hint,
              .extent_size_hint   = extent_size_hint,
@@ -119,10 +119,10 @@ index e2ea071315..4c3dc56c8e 100644
      };
      return raw_co_create(&options, errp);
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 48ba32049f..321d1fd0e1 100644
+index 0e5f148d30..1c05413916 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -4974,6 +4974,10 @@
+@@ -5016,6 +5016,10 @@
  # @extent-size-hint: Extent size hint to add to the image file; 0 for
  #     not adding an extent size hint (default: 1 MB, since 5.1)
  #
@@ -133,7 +133,7 @@ index 48ba32049f..321d1fd0e1 100644
  # Since: 2.12
  ##
  { 'struct': 'BlockdevCreateOptionsFile',
-@@ -4981,7 +4985,8 @@
+@@ -5023,7 +5027,8 @@
              'size':                 'size',
              '*preallocation':       'PreallocMode',
              '*nocow':               'bool',
diff --git a/debian/patches/pve/0023-PVE-monitor-disable-oob-capability.patch b/debian/patches/pve/0023-PVE-monitor-disable-oob-capability.patch
index c7e00c9..569fe89 100644
--- a/debian/patches/pve/0023-PVE-monitor-disable-oob-capability.patch
+++ b/debian/patches/pve/0023-PVE-monitor-disable-oob-capability.patch
@@ -18,7 +18,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/monitor/qmp.c b/monitor/qmp.c
-index eb181d5979..20fc0d20a6 100644
+index f093e256e9..78f1c8e3c8 100644
 --- a/monitor/qmp.c
 +++ b/monitor/qmp.c
 @@ -534,8 +534,7 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp)
diff --git a/debian/patches/pve/0024-PVE-Compat-4.0-used-balloon-qemu-4-0-config-size-fal.patch b/debian/patches/pve/0024-PVE-Compat-4.0-used-balloon-qemu-4-0-config-size-fal.patch
index acc6583..d180117 100644
--- a/debian/patches/pve/0024-PVE-Compat-4.0-used-balloon-qemu-4-0-config-size-fal.patch
+++ b/debian/patches/pve/0024-PVE-Compat-4.0-used-balloon-qemu-4-0-config-size-fal.patch
@@ -26,10 +26,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/hw/core/machine.c b/hw/core/machine.c
-index f29fe95964..2c327fc36a 100644
+index 63c6ef93d2..9a34017e5a 100644
 --- a/hw/core/machine.c
 +++ b/hw/core/machine.c
-@@ -180,7 +180,8 @@ GlobalProperty hw_compat_4_0[] = {
+@@ -193,7 +193,8 @@ GlobalProperty hw_compat_4_0[] = {
      { "virtio-vga",     "edid", "false" },
      { "virtio-gpu-device", "edid", "false" },
      { "virtio-device", "use-started", "false" },
diff --git a/debian/patches/pve/0025-PVE-Allow-version-code-in-machine-type.patch b/debian/patches/pve/0025-PVE-Allow-version-code-in-machine-type.patch
index 10a6bc1..14de9e8 100644
--- a/debian/patches/pve/0025-PVE-Allow-version-code-in-machine-type.patch
+++ b/debian/patches/pve/0025-PVE-Allow-version-code-in-machine-type.patch
@@ -21,10 +21,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  4 files changed, 34 insertions(+)
 
 diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
-index 52a6d74820..362128842d 100644
+index 93fb4bc24a..b9999423b4 100644
 --- a/hw/core/machine-qmp-cmds.c
 +++ b/hw/core/machine-qmp-cmds.c
-@@ -94,6 +94,11 @@ MachineInfoList *qmp_query_machines(bool has_compat_props, bool compat_props,
+@@ -95,6 +95,11 @@ MachineInfoList *qmp_query_machines(bool has_compat_props, bool compat_props,
          if (strcmp(mc->name, MACHINE_GET_CLASS(current_machine)->name) == 0) {
              info->has_is_current = true;
              info->is_current = true;
@@ -35,12 +35,12 @@ index 52a6d74820..362128842d 100644
 +            }
          }
  
-         if (mc->default_cpu_type) {
+         if (default_cpu_type) {
 diff --git a/include/hw/boards.h b/include/hw/boards.h
-index 36fbb9b59d..d1741ea121 100644
+index f22b2e7fc7..8ada4d5832 100644
 --- a/include/hw/boards.h
 +++ b/include/hw/boards.h
-@@ -268,6 +268,8 @@ struct MachineClass {
+@@ -271,6 +271,8 @@ struct MachineClass {
      const char *desc;
      const char *deprecation_reason;
  
@@ -71,10 +71,10 @@ index 16366b774a..12cfd3f260 100644
                                 'features': ['unstable'] } } }
  
 diff --git a/system/vl.c b/system/vl.c
-index e7cae51f13..3f4916ac5a 100644
+index 452742ab58..c3707b2412 100644
 --- a/system/vl.c
 +++ b/system/vl.c
-@@ -1675,6 +1675,7 @@ static MachineClass *select_machine(QDict *qdict, Error **errp)
+@@ -1674,6 +1674,7 @@ static MachineClass *select_machine(QDict *qdict, Error **errp)
  {
      ERRP_GUARD();
      const char *machine_type = qdict_get_try_str(qdict, "type");
@@ -82,7 +82,7 @@ index e7cae51f13..3f4916ac5a 100644
      g_autoptr(GSList) machines = object_class_get_list(TYPE_MACHINE, false);
      MachineClass *machine_class = NULL;
  
-@@ -1694,7 +1695,11 @@ static MachineClass *select_machine(QDict *qdict, Error **errp)
+@@ -1693,7 +1694,11 @@ static MachineClass *select_machine(QDict *qdict, Error **errp)
      if (!machine_class) {
          error_append_hint(errp,
                            "Use -machine help to list supported machines\n");
@@ -94,7 +94,7 @@ index e7cae51f13..3f4916ac5a 100644
      return machine_class;
  }
  
-@@ -3316,12 +3321,31 @@ void qemu_init(int argc, char **argv)
+@@ -3414,12 +3419,31 @@ void qemu_init(int argc, char **argv)
              case QEMU_OPTION_machine:
                  {
                      bool help;
diff --git a/debian/patches/pve/0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch b/debian/patches/pve/0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch
index efdfe39..23adf3b 100644
--- a/debian/patches/pve/0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch
+++ b/debian/patches/pve/0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch
@@ -25,7 +25,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/block/backup.c b/block/backup.c
-index a1292c01ec..2e38b30d67 100644
+index 79652bf57b..cc747e9163 100644
 --- a/block/backup.c
 +++ b/block/backup.c
 @@ -237,8 +237,8 @@ static void backup_init_bcs_bitmap(BackupBlockJob *job)
diff --git a/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch b/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
index aa60306..8b88b69 100644
--- a/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
+++ b/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
@@ -27,7 +27,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  create mode 100644 vma.h
 
 diff --git a/block/meson.build b/block/meson.build
-index 6a60b5d6b9..652c8cbdb7 100644
+index a21d9a5411..1373612c10 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -42,6 +42,8 @@ block_ss.add(files(
@@ -40,10 +40,10 @@ index 6a60b5d6b9..652c8cbdb7 100644
  system_ss.add(files('block-ram-registrar.c'))
  
 diff --git a/meson.build b/meson.build
-index 147097c652..b9b673c271 100644
+index 8ec796d835..680ab48b9b 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -2129,6 +2129,8 @@ endif
+@@ -2161,6 +2161,8 @@ endif
  
  has_gettid = cc.has_function('gettid')
  
@@ -52,7 +52,7 @@ index 147097c652..b9b673c271 100644
  # libselinux
  selinux = dependency('libselinux',
                       required: get_option('selinux'),
-@@ -4344,6 +4346,9 @@ if have_tools
+@@ -4367,6 +4369,9 @@ if have_tools
                 dependencies: [blockdev, qemuutil, selinux],
                 install: true)
  
@@ -64,7 +64,7 @@ index 147097c652..b9b673c271 100644
    foreach exe: [ 'qemu-img', 'qemu-io', 'qemu-nbd', 'qemu-storage-daemon']
 diff --git a/vma-reader.c b/vma-reader.c
 new file mode 100644
-index 0000000000..bb65ad313c
+index 0000000000..1888b21851
 --- /dev/null
 +++ b/vma-reader.c
 @@ -0,0 +1,867 @@
@@ -90,7 +90,7 @@ index 0000000000..bb65ad313c
 +#include "vma.h"
 +#include "block/block.h"
 +#include "block/graph-lock.h"
-+#include "sysemu/block-backend.h"
++#include "system/block-backend.h"
 +
 +static unsigned char zero_vma_block[VMA_BLOCK_SIZE];
 +
@@ -1759,7 +1759,7 @@ index 0000000000..3f489092df
 +}
 diff --git a/vma.c b/vma.c
 new file mode 100644
-index 0000000000..8d4b4be414
+index 0000000000..0e990b5e30
 --- /dev/null
 +++ b/vma.c
 @@ -0,0 +1,941 @@
@@ -1785,8 +1785,8 @@ index 0000000000..8d4b4be414
 +#include "qemu/main-loop.h"
 +#include "qemu/cutils.h"
 +#include "qemu/memalign.h"
-+#include "qapi/qmp/qdict.h"
-+#include "sysemu/block-backend.h"
++#include "qobject/qdict.h"
++#include "system/block-backend.h"
 +
 +static void help(void)
 +{
diff --git a/debian/patches/pve/0028-PVE-Backup-add-backup-dump-block-driver.patch b/debian/patches/pve/0028-PVE-Backup-add-backup-dump-block-driver.patch
index b0cfb58..0142439 100644
--- a/debian/patches/pve/0028-PVE-Backup-add-backup-dump-block-driver.patch
+++ b/debian/patches/pve/0028-PVE-Backup-add-backup-dump-block-driver.patch
@@ -22,7 +22,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 
 diff --git a/block/backup-dump.c b/block/backup-dump.c
 new file mode 100644
-index 0000000000..e46abf1070
+index 0000000000..354593bc10
 --- /dev/null
 +++ b/block/backup-dump.c
 @@ -0,0 +1,172 @@
@@ -38,7 +38,7 @@ index 0000000000..e46abf1070
 +
 +#include "qemu/osdep.h"
 +
-+#include "qapi/qmp/qdict.h"
++#include "qobject/qdict.h"
 +#include "qom/object_interfaces.h"
 +#include "block/block_int.h"
 +
@@ -199,7 +199,7 @@ index 0000000000..e46abf1070
 +    return bs;
 +}
 diff --git a/block/backup.c b/block/backup.c
-index 2e38b30d67..fe69723ada 100644
+index cc747e9163..6f7c45f922 100644
 --- a/block/backup.c
 +++ b/block/backup.c
 @@ -29,28 +29,6 @@
@@ -247,7 +247,7 @@ index 2e38b30d67..fe69723ada 100644
      if (perf->max_chunk && perf->max_chunk < cluster_size) {
          error_setg(errp, "Required max-chunk (%" PRIi64 ") is less than backup "
 diff --git a/block/meson.build b/block/meson.build
-index 652c8cbdb7..e1cf5a2e65 100644
+index 1373612c10..6278c4af0f 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -4,6 +4,7 @@ block_ss.add(files(
@@ -312,10 +312,10 @@ index ebb4e56a50..e717a74e5f 100644
      BDRV_TRACKED_READ,
      BDRV_TRACKED_WRITE,
 diff --git a/job.c b/job.c
-index 660ce22c56..baf54c8d60 100644
+index 0653bc2ba6..b981070ee8 100644
 --- a/job.c
 +++ b/job.c
-@@ -331,7 +331,8 @@ static bool job_started_locked(Job *job)
+@@ -337,7 +337,8 @@ static bool job_started_locked(Job *job)
  }
  
  /* Called with job_mutex held. */
diff --git a/debian/patches/pve/0029-PVE-Add-sequential-job-transaction-support.patch b/debian/patches/pve/0029-PVE-Add-sequential-job-transaction-support.patch
index db86c7f..93ce858 100644
--- a/debian/patches/pve/0029-PVE-Add-sequential-job-transaction-support.patch
+++ b/debian/patches/pve/0029-PVE-Add-sequential-job-transaction-support.patch
@@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  2 files changed, 46 insertions(+)
 
 diff --git a/include/qemu/job.h b/include/qemu/job.h
-index 2b873f2576..528cd6acb9 100644
+index a5a04155ea..562cc7eaec 100644
 --- a/include/qemu/job.h
 +++ b/include/qemu/job.h
 @@ -362,6 +362,18 @@ void job_unlock(void);
@@ -34,7 +34,7 @@ index 2b873f2576..528cd6acb9 100644
   * Release a reference that was previously acquired with job_txn_add_job or
   * job_txn_new. If it's the last reference to the object, it will be freed.
 diff --git a/job.c b/job.c
-index baf54c8d60..3ac5e5cde2 100644
+index b981070ee8..f4646866ec 100644
 --- a/job.c
 +++ b/job.c
 @@ -94,6 +94,8 @@ struct JobTxn {
@@ -72,7 +72,7 @@ index baf54c8d60..3ac5e5cde2 100644
  /* Called with job_mutex held. */
  static void job_txn_ref_locked(JobTxn *txn)
  {
-@@ -1042,6 +1063,12 @@ static void job_completed_txn_success_locked(Job *job)
+@@ -1048,6 +1069,12 @@ static void job_completed_txn_success_locked(Job *job)
       */
      QLIST_FOREACH(other_job, &txn->jobs, txn_list) {
          if (!job_is_completed_locked(other_job)) {
@@ -85,7 +85,7 @@ index baf54c8d60..3ac5e5cde2 100644
              return;
          }
          assert(other_job->ret == 0);
-@@ -1253,6 +1280,13 @@ int job_finish_sync_locked(Job *job,
+@@ -1259,6 +1286,13 @@ int job_finish_sync_locked(Job *job,
          return -EBUSY;
      }
  
diff --git a/debian/patches/pve/0030-PVE-Backup-Proxmox-backup-patches-for-QEMU.patch b/debian/patches/pve/0030-PVE-Backup-Proxmox-backup-patches-for-QEMU.patch
index 66372a5..060525f 100644
--- a/debian/patches/pve/0030-PVE-Backup-Proxmox-backup-patches-for-QEMU.patch
+++ b/debian/patches/pve/0030-PVE-Backup-Proxmox-backup-patches-for-QEMU.patch
@@ -94,17 +94,17 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  monitor/hmp-cmds.c             |   72 +++
  proxmox-backup-client.c        |  146 +++++
  proxmox-backup-client.h        |   60 ++
- pve-backup.c                   | 1090 ++++++++++++++++++++++++++++++++
+ pve-backup.c                   | 1091 ++++++++++++++++++++++++++++++++
  qapi/block-core.json           |  233 +++++++
  qapi/common.json               |   14 +
  qapi/machine.json              |   16 +-
- 14 files changed, 1709 insertions(+), 14 deletions(-)
+ 14 files changed, 1710 insertions(+), 14 deletions(-)
  create mode 100644 proxmox-backup-client.c
  create mode 100644 proxmox-backup-client.h
  create mode 100644 pve-backup.c
 
 diff --git a/block/meson.build b/block/meson.build
-index e1cf5a2e65..2367e1ac1b 100644
+index 6278c4af0f..d1b16e40e9 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -44,6 +44,11 @@ block_ss.add(files(
@@ -120,10 +120,10 @@ index e1cf5a2e65..2367e1ac1b 100644
  system_ss.add(when: 'CONFIG_TCG', if_true: files('blkreplay.c'))
  system_ss.add(files('block-ram-registrar.c'))
 diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c
-index bdf2eb50b6..439a7a14c8 100644
+index 6919a49bf5..4f30f99644 100644
 --- a/block/monitor/block-hmp-cmds.c
 +++ b/block/monitor/block-hmp-cmds.c
-@@ -1009,3 +1009,42 @@ void hmp_change_medium(Monitor *mon, const char *device, const char *target,
+@@ -1010,3 +1010,42 @@ void hmp_change_medium(Monitor *mon, const char *device, const char *target,
      qmp_blockdev_change_medium(device, NULL, target, arg, true, force,
                                 !!read_only, read_only_mode, errp);
  }
@@ -167,7 +167,7 @@ index bdf2eb50b6..439a7a14c8 100644
 +    hmp_handle_error(mon, error);
 +}
 diff --git a/blockdev.c b/blockdev.c
-index 79d47b1920..3f67eb413d 100644
+index 158ac9314b..17de5d2ae4 100644
 --- a/blockdev.c
 +++ b/blockdev.c
 @@ -37,6 +37,7 @@
@@ -265,10 +265,10 @@ index 2596cc2426..9dda91d65a 100644
  void hmp_device_add(Monitor *mon, const QDict *qdict);
  void hmp_device_del(Monitor *mon, const QDict *qdict);
 diff --git a/meson.build b/meson.build
-index b9b673c271..f6fb9b4fd8 100644
+index 680ab48b9b..1f74de1d93 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -2130,6 +2130,7 @@ endif
+@@ -2162,6 +2162,7 @@ endif
  has_gettid = cc.has_function('gettid')
  
  libuuid = cc.find_library('uuid', required: true)
@@ -277,7 +277,7 @@ index b9b673c271..f6fb9b4fd8 100644
  # libselinux
  selinux = dependency('libselinux',
 diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
-index 874084565f..bedeb81f8c 100644
+index bade2a4b92..77a2fa409a 100644
 --- a/monitor/hmp-cmds.c
 +++ b/monitor/hmp-cmds.c
 @@ -22,6 +22,7 @@
@@ -586,22 +586,23 @@ index 0000000000..8cbf645b2c
 +#endif /* PROXMOX_BACKUP_CLIENT_H */
 diff --git a/pve-backup.c b/pve-backup.c
 new file mode 100644
-index 0000000000..fea0152de0
+index 0000000000..36e5042860
 --- /dev/null
 +++ b/pve-backup.c
-@@ -0,0 +1,1090 @@
+@@ -0,0 +1,1091 @@
 +#include "proxmox-backup-client.h"
 +#include "vma.h"
 +
 +#include "qemu/osdep.h"
 +#include "qemu/module.h"
-+#include "sysemu/block-backend.h"
-+#include "sysemu/blockdev.h"
++#include "system/block-backend.h"
++#include "system/blockdev.h"
 +#include "block/block_int-global-state.h"
 +#include "block/blockjob.h"
 +#include "block/dirty-bitmap.h"
 +#include "block/graph-lock.h"
 +#include "qapi/qapi-commands-block.h"
++#include "qobject/qdict.h"
 +#include "qapi/qmp/qerror.h"
 +#include "qemu/cutils.h"
 +
@@ -1681,10 +1682,10 @@ index 0000000000..fea0152de0
 +    return ret;
 +}
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 321d1fd0e1..68caf30084 100644
+index 1c05413916..dd98e03bf1 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -851,6 +851,239 @@
+@@ -855,6 +855,239 @@
  { 'command': 'query-block', 'returns': ['BlockInfo'],
    'allow-preconfig': true }
  
@@ -1925,13 +1926,13 @@ index 321d1fd0e1..68caf30084 100644
  # @BlockDeviceTimedStats:
  #
 diff --git a/qapi/common.json b/qapi/common.json
-index 6ffc7a3789..9c6c671ece 100644
+index 0e3a0bbbfb..554680c716 100644
 --- a/qapi/common.json
 +++ b/qapi/common.json
-@@ -212,3 +212,17 @@
+@@ -226,3 +226,17 @@
  ##
- { 'struct': 'HumanReadableText',
-   'data': { 'human-readable-text': 'str' } }
+ { 'enum': 'EndianMode',
+   'data': [ 'unspecified', 'little', 'big' ] }
 +
 +##
 +# @UuidInfo:
diff --git a/debian/patches/pve/0031-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch b/debian/patches/pve/0031-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch
index 0aefed3..618dedd 100644
--- a/debian/patches/pve/0031-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch
+++ b/debian/patches/pve/0031-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch
@@ -14,10 +14,10 @@ Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  create mode 100644 pbs-restore.c
 
 diff --git a/meson.build b/meson.build
-index f6fb9b4fd8..f666d0f028 100644
+index 1f74de1d93..8508aab9c9 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -4350,6 +4350,10 @@ if have_tools
+@@ -4373,6 +4373,10 @@ if have_tools
    vma = executable('vma', files('vma.c', 'vma-reader.c') + genh,
                     dependencies: [authz, block, crypto, io, qemuutil, qom], install: true)
  
@@ -30,7 +30,7 @@ index f6fb9b4fd8..f666d0f028 100644
    foreach exe: [ 'qemu-img', 'qemu-io', 'qemu-nbd', 'qemu-storage-daemon']
 diff --git a/pbs-restore.c b/pbs-restore.c
 new file mode 100644
-index 0000000000..f03d9bab8d
+index 0000000000..f165f418af
 --- /dev/null
 +++ b/pbs-restore.c
 @@ -0,0 +1,236 @@
@@ -57,8 +57,8 @@ index 0000000000..f03d9bab8d
 +#include "qemu/main-loop.h"
 +#include "qemu/cutils.h"
 +#include "qapi/error.h"
-+#include "qapi/qmp/qdict.h"
-+#include "sysemu/block-backend.h"
++#include "qobject/qdict.h"
++#include "system/block-backend.h"
 +
 +#include <proxmox-backup-qemu.h>
 +
diff --git a/debian/patches/pve/0032-PVE-Add-PBS-block-driver-to-map-backup-archives-into.patch b/debian/patches/pve/0032-PVE-Add-PBS-block-driver-to-map-backup-archives-into.patch
index eaac4e5..80363f0 100644
--- a/debian/patches/pve/0032-PVE-Add-PBS-block-driver-to-map-backup-archives-into.patch
+++ b/debian/patches/pve/0032-PVE-Add-PBS-block-driver-to-map-backup-archives-into.patch
@@ -23,7 +23,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  create mode 100644 block/pbs.c
 
 diff --git a/block/meson.build b/block/meson.build
-index 2367e1ac1b..e178047ec9 100644
+index d1b16e40e9..d243372c41 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -49,6 +49,8 @@ block_ss.add(files(
@@ -37,7 +37,7 @@ index 2367e1ac1b..e178047ec9 100644
  system_ss.add(files('block-ram-registrar.c'))
 diff --git a/block/pbs.c b/block/pbs.c
 new file mode 100644
-index 0000000000..2d5e28ce8f
+index 0000000000..3e41421716
 --- /dev/null
 +++ b/block/pbs.c
 @@ -0,0 +1,306 @@
@@ -47,8 +47,8 @@ index 0000000000..2d5e28ce8f
 +
 +#include "qemu/osdep.h"
 +#include "qapi/error.h"
-+#include "qapi/qmp/qdict.h"
-+#include "qapi/qmp/qstring.h"
++#include "qobject/qdict.h"
++#include "qobject/qstring.h"
 +#include "qemu/module.h"
 +#include "qemu/option.h"
 +#include "qemu/cutils.h"
@@ -348,10 +348,10 @@ index 0000000000..2d5e28ce8f
 +
 +block_init(bdrv_pbs_init);
 diff --git a/meson.build b/meson.build
-index f666d0f028..4c85736ec3 100644
+index 8508aab9c9..9c39f54f86 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -4815,7 +4815,7 @@ summary_info += {'Query Processing Library support': qpl}
+@@ -4838,7 +4838,7 @@ summary_info += {'Query Processing Library support': qpl}
  summary_info += {'UADK Library support': uadk}
  summary_info += {'qatzip support':    qatzip}
  summary_info += {'NUMA host support': numa}
@@ -361,10 +361,10 @@ index f666d0f028..4c85736ec3 100644
  summary_info += {'libdaxctl support': libdaxctl}
  summary_info += {'libcbor support':   libcbor}
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 68caf30084..d45e8975a7 100644
+index dd98e03bf1..0c3ebfa74e 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -3466,6 +3466,7 @@
+@@ -3470,6 +3470,7 @@
              'parallels', 'preallocate', 'qcow', 'qcow2', 'qed', 'quorum',
              'raw', 'rbd',
              { 'name': 'replication', 'if': 'CONFIG_REPLICATION' },
@@ -372,7 +372,7 @@ index 68caf30084..d45e8975a7 100644
              'ssh', 'throttle', 'vdi', 'vhdx',
              { 'name': 'virtio-blk-vfio-pci', 'if': 'CONFIG_BLKIO' },
              { 'name': 'virtio-blk-vhost-user', 'if': 'CONFIG_BLKIO' },
-@@ -3552,6 +3553,33 @@
+@@ -3556,6 +3557,33 @@
  { 'struct': 'BlockdevOptionsNull',
    'data': { '*size': 'int', '*latency-ns': 'uint64', '*read-zeroes': 'bool' } }
  
@@ -406,7 +406,7 @@ index 68caf30084..d45e8975a7 100644
  ##
  # @BlockdevOptionsNVMe:
  #
-@@ -4993,6 +5021,7 @@
+@@ -5003,6 +5031,7 @@
        'nfs':        'BlockdevOptionsNfs',
        'null-aio':   'BlockdevOptionsNull',
        'null-co':    'BlockdevOptionsNull',
diff --git a/debian/patches/pve/0033-PVE-redirect-stderr-to-journal-when-daemonized.patch b/debian/patches/pve/0033-PVE-redirect-stderr-to-journal-when-daemonized.patch
index 4f88337..760ce46 100644
--- a/debian/patches/pve/0033-PVE-redirect-stderr-to-journal-when-daemonized.patch
+++ b/debian/patches/pve/0033-PVE-redirect-stderr-to-journal-when-daemonized.patch
@@ -14,10 +14,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 4c85736ec3..57f666d722 100644
+index 9c39f54f86..60af7fa723 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -2130,6 +2130,7 @@ endif
+@@ -2162,6 +2162,7 @@ endif
  has_gettid = cc.has_function('gettid')
  
  libuuid = cc.find_library('uuid', required: true)
@@ -25,7 +25,7 @@ index 4c85736ec3..57f666d722 100644
  libproxmox_backup_qemu = cc.find_library('proxmox_backup_qemu', required: true)
  
  # libselinux
-@@ -3744,7 +3745,7 @@ if have_block
+@@ -3766,7 +3767,7 @@ if have_block
    if host_os == 'windows'
      system_ss.add(files('os-win32.c'))
    else
@@ -35,7 +35,7 @@ index 4c85736ec3..57f666d722 100644
  endif
  
 diff --git a/os-posix.c b/os-posix.c
-index 43f9a43f3f..a47e46d1c2 100644
+index 52925c23d3..84b96d3da9 100644
 --- a/os-posix.c
 +++ b/os-posix.c
 @@ -29,6 +29,8 @@
diff --git a/debian/patches/pve/0034-PVE-Migrate-dirty-bitmap-state-via-savevm.patch b/debian/patches/pve/0034-PVE-Migrate-dirty-bitmap-state-via-savevm.patch
index b794959..45a968b 100644
--- a/debian/patches/pve/0034-PVE-Migrate-dirty-bitmap-state-via-savevm.patch
+++ b/debian/patches/pve/0034-PVE-Migrate-dirty-bitmap-state-via-savevm.patch
@@ -26,19 +26,19 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  create mode 100644 migration/pbs-state.c
 
 diff --git a/include/migration/misc.h b/include/migration/misc.h
-index 804eb23c06..c75b146ae6 100644
+index 8fd36eba1d..e963e93e71 100644
 --- a/include/migration/misc.h
 +++ b/include/migration/misc.h
-@@ -106,4 +106,7 @@ bool migration_incoming_postcopy_advised(void);
- /* True if background snapshot is active */
- bool migration_in_bg_snapshot(void);
+@@ -140,4 +140,7 @@ bool multifd_device_state_save_thread_should_exit(void);
+ void multifd_abort_device_state_save_threads(void);
+ bool multifd_join_device_state_save_threads(void);
  
 +/* migration/pbs-state.c */
 +void pbs_state_mig_init(void);
 +
  #endif
 diff --git a/migration/meson.build b/migration/meson.build
-index 075b013971..eca57cb2a3 100644
+index 46e92249a1..fb3fd7d7d0 100644
 --- a/migration/meson.build
 +++ b/migration/meson.build
 @@ -8,6 +8,7 @@ migration_files = files(
@@ -49,7 +49,7 @@ index 075b013971..eca57cb2a3 100644
  
  system_ss.add(files(
    'block-dirty-bitmap.c',
-@@ -27,6 +28,7 @@ system_ss.add(files(
+@@ -31,6 +32,7 @@ system_ss.add(files(
    'multifd-zlib.c',
    'multifd-zero-page.c',
    'options.c',
@@ -58,10 +58,10 @@ index 075b013971..eca57cb2a3 100644
    'savevm.c',
    'savevm-async.c',
 diff --git a/migration/migration.c b/migration/migration.c
-index 8c5bd0a75c..491d9aa017 100644
+index d46e776e24..2f3430f440 100644
 --- a/migration/migration.c
 +++ b/migration/migration.c
-@@ -266,6 +266,7 @@ void migration_object_init(void)
+@@ -319,6 +319,7 @@ void migration_object_init(void)
  
      /* Initialize cpu throttle timers */
      cpu_throttle_init();
@@ -180,10 +180,10 @@ index 0000000000..a97187e4d7
 +                         NULL);
 +}
 diff --git a/pve-backup.c b/pve-backup.c
-index fea0152de0..faa6a9b93c 100644
+index 36e5042860..11ea4b5c56 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
-@@ -1083,6 +1083,7 @@ ProxmoxSupportStatus *qmp_query_proxmox_support(Error **errp)
+@@ -1084,6 +1084,7 @@ ProxmoxSupportStatus *qmp_query_proxmox_support(Error **errp)
      ret->pbs_library_version = g_strdup(proxmox_backup_qemu_version());
      ret->pbs_dirty_bitmap = true;
      ret->pbs_dirty_bitmap_savevm = true;
@@ -192,10 +192,10 @@ index fea0152de0..faa6a9b93c 100644
      ret->pbs_masterkey = true;
      ret->backup_max_workers = true;
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index d45e8975a7..9795247c1f 100644
+index 0c3ebfa74e..6838187607 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1004,6 +1004,11 @@
+@@ -1008,6 +1008,11 @@
  # @pbs-dirty-bitmap-savevm: True if 'dirty-bitmaps' migration capability can
  #                           safely be set for savevm-async.
  #
@@ -207,7 +207,7 @@ index d45e8975a7..9795247c1f 100644
  # @pbs-masterkey: True if the QMP backup call supports the 'master_keyfile'
  #                 parameter.
  #
-@@ -1017,6 +1022,7 @@
+@@ -1021,6 +1026,7 @@
    'data': { 'pbs-dirty-bitmap': 'bool',
              'query-bitmap-info': 'bool',
              'pbs-dirty-bitmap-savevm': 'bool',
diff --git a/debian/patches/pve/0035-migration-block-dirty-bitmap-migrate-other-bitmaps-e.patch b/debian/patches/pve/0035-migration-block-dirty-bitmap-migrate-other-bitmaps-e.patch
index 364824d..a8f20ad 100644
--- a/debian/patches/pve/0035-migration-block-dirty-bitmap-migrate-other-bitmaps-e.patch
+++ b/debian/patches/pve/0035-migration-block-dirty-bitmap-migrate-other-bitmaps-e.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
-index a7d55048c2..44078ea670 100644
+index f2c352d4a7..931a8481e9 100644
 --- a/migration/block-dirty-bitmap.c
 +++ b/migration/block-dirty-bitmap.c
 @@ -539,7 +539,11 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockDriverState *bs,
diff --git a/debian/patches/pve/0036-PVE-fall-back-to-open-iscsi-initiatorname.patch b/debian/patches/pve/0036-PVE-fall-back-to-open-iscsi-initiatorname.patch
index 0dc48df..773ee14 100644
--- a/debian/patches/pve/0036-PVE-fall-back-to-open-iscsi-initiatorname.patch
+++ b/debian/patches/pve/0036-PVE-fall-back-to-open-iscsi-initiatorname.patch
@@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 30 insertions(+)
 
 diff --git a/block/iscsi.c b/block/iscsi.c
-index 979bf90cb7..961714a4be 100644
+index 2f0f4dac09..b523137cff 100644
 --- a/block/iscsi.c
 +++ b/block/iscsi.c
 @@ -1392,12 +1392,42 @@ static char *get_initiator_name(QemuOpts *opts)
diff --git a/debian/patches/pve/0037-PVE-block-stream-increase-chunk-size.patch b/debian/patches/pve/0037-PVE-block-stream-increase-chunk-size.patch
index 32fd8ca..9edb3ec 100644
--- a/debian/patches/pve/0037-PVE-block-stream-increase-chunk-size.patch
+++ b/debian/patches/pve/0037-PVE-block-stream-increase-chunk-size.patch
@@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/block/stream.c b/block/stream.c
-index 9076203193..1d1c65f061 100644
+index 999d9e56d4..e187cd1262 100644
 --- a/block/stream.c
 +++ b/block/stream.c
 @@ -27,7 +27,7 @@ enum {
diff --git a/debian/patches/pve/0038-block-add-alloc-track-driver.patch b/debian/patches/pve/0038-block-add-alloc-track-driver.patch
index 6d1056b..5a527e4 100644
--- a/debian/patches/pve/0038-block-add-alloc-track-driver.patch
+++ b/debian/patches/pve/0038-block-add-alloc-track-driver.patch
@@ -42,7 +42,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 
 diff --git a/block/alloc-track.c b/block/alloc-track.c
 new file mode 100644
-index 0000000000..b4a9851144
+index 0000000000..cb9829ae36
 --- /dev/null
 +++ b/block/alloc-track.c
 @@ -0,0 +1,366 @@
@@ -63,13 +63,13 @@ index 0000000000..b4a9851144
 +#include "block/block_int.h"
 +#include "block/dirty-bitmap.h"
 +#include "block/graph-lock.h"
-+#include "qapi/qmp/qdict.h"
-+#include "qapi/qmp/qstring.h"
++#include "qobject/qdict.h"
++#include "qobject/qstring.h"
 +#include "qemu/cutils.h"
 +#include "qemu/error-report.h"
 +#include "qemu/option.h"
 +#include "qemu/module.h"
-+#include "sysemu/block-backend.h"
++#include "system/block-backend.h"
 +
 +#define TRACK_OPT_AUTO_REMOVE "auto-remove"
 +
@@ -413,7 +413,7 @@ index 0000000000..b4a9851144
 +
 +block_init(bdrv_alloc_track_init);
 diff --git a/block/meson.build b/block/meson.build
-index e178047ec9..7ef7250d31 100644
+index d243372c41..9b45b5256d 100644
 --- a/block/meson.build
 +++ b/block/meson.build
 @@ -2,6 +2,7 @@ block_ss.add(genh)
@@ -425,7 +425,7 @@ index e178047ec9..7ef7250d31 100644
    'backup.c',
    'backup-dump.c',
 diff --git a/block/stream.c b/block/stream.c
-index 1d1c65f061..d499c8883f 100644
+index e187cd1262..0b61029399 100644
 --- a/block/stream.c
 +++ b/block/stream.c
 @@ -120,6 +120,40 @@ static int stream_prepare(Job *job)
diff --git a/debian/patches/pve/0039-Revert-block-rbd-workaround-for-ceph-issue-53784.patch b/debian/patches/pve/0039-Revert-block-rbd-workaround-for-ceph-issue-53784.patch
index 0c4243a..a47e99d 100644
--- a/debian/patches/pve/0039-Revert-block-rbd-workaround-for-ceph-issue-53784.patch
+++ b/debian/patches/pve/0039-Revert-block-rbd-workaround-for-ceph-issue-53784.patch
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 2 insertions(+), 40 deletions(-)
 
 diff --git a/block/rbd.c b/block/rbd.c
-index 728bce3b1e..6c9a8e0add 100644
+index bf143fac00..70d92966f7 100644
 --- a/block/rbd.c
 +++ b/block/rbd.c
 @@ -1515,7 +1515,6 @@ static int coroutine_fn qemu_rbd_co_block_status(BlockDriverState *bs,
diff --git a/debian/patches/pve/0040-Revert-block-rbd-fix-handling-of-holes-in-.bdrv_co_b.patch b/debian/patches/pve/0040-Revert-block-rbd-fix-handling-of-holes-in-.bdrv_co_b.patch
index 95158ce..6659112 100644
--- a/debian/patches/pve/0040-Revert-block-rbd-fix-handling-of-holes-in-.bdrv_co_b.patch
+++ b/debian/patches/pve/0040-Revert-block-rbd-fix-handling-of-holes-in-.bdrv_co_b.patch
@@ -14,7 +14,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/block/rbd.c b/block/rbd.c
-index 6c9a8e0add..6f5fe90f3a 100644
+index 70d92966f7..931b513828 100644
 --- a/block/rbd.c
 +++ b/block/rbd.c
 @@ -1474,11 +1474,11 @@ static int qemu_rbd_diff_iterate_cb(uint64_t offs, size_t len,
diff --git a/debian/patches/pve/0041-Revert-block-rbd-implement-bdrv_co_block_status.patch b/debian/patches/pve/0041-Revert-block-rbd-implement-bdrv_co_block_status.patch
index ed8bc16..9ed49f1 100644
--- a/debian/patches/pve/0041-Revert-block-rbd-implement-bdrv_co_block_status.patch
+++ b/debian/patches/pve/0041-Revert-block-rbd-implement-bdrv_co_block_status.patch
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  1 file changed, 112 deletions(-)
 
 diff --git a/block/rbd.c b/block/rbd.c
-index 6f5fe90f3a..24e820d056 100644
+index 931b513828..4ab9bb5e02 100644
 --- a/block/rbd.c
 +++ b/block/rbd.c
 @@ -108,12 +108,6 @@ typedef struct RBDTask {
diff --git a/debian/patches/pve/0042-alloc-track-error-out-when-auto-remove-is-not-set.patch b/debian/patches/pve/0042-alloc-track-error-out-when-auto-remove-is-not-set.patch
index c0e323a..c65479d 100644
--- a/debian/patches/pve/0042-alloc-track-error-out-when-auto-remove-is-not-set.patch
+++ b/debian/patches/pve/0042-alloc-track-error-out-when-auto-remove-is-not-set.patch
@@ -17,7 +17,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/block/alloc-track.c b/block/alloc-track.c
-index b4a9851144..fc7d58a5d0 100644
+index cb9829ae36..30fac992fa 100644
 --- a/block/alloc-track.c
 +++ b/block/alloc-track.c
 @@ -34,7 +34,6 @@ typedef struct {
diff --git a/debian/patches/pve/0043-alloc-track-avoid-seemingly-superfluous-child-permis.patch b/debian/patches/pve/0043-alloc-track-avoid-seemingly-superfluous-child-permis.patch
index 5e1683b..5113d34 100644
--- a/debian/patches/pve/0043-alloc-track-avoid-seemingly-superfluous-child-permis.patch
+++ b/debian/patches/pve/0043-alloc-track-avoid-seemingly-superfluous-child-permis.patch
@@ -20,7 +20,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 26 deletions(-)
 
 diff --git a/block/alloc-track.c b/block/alloc-track.c
-index fc7d58a5d0..b56425b7f0 100644
+index 30fac992fa..718aaabf2a 100644
 --- a/block/alloc-track.c
 +++ b/block/alloc-track.c
 @@ -25,15 +25,9 @@
diff --git a/debian/patches/pve/0044-PVE-backup-add-fleecing-option.patch b/debian/patches/pve/0044-PVE-backup-add-fleecing-option.patch
index 8663a33..b6eaade 100644
--- a/debian/patches/pve/0044-PVE-backup-add-fleecing-option.patch
+++ b/debian/patches/pve/0044-PVE-backup-add-fleecing-option.patch
@@ -63,15 +63,15 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
 ---
  block/monitor/block-hmp-cmds.c |   1 +
- pve-backup.c                   | 135 ++++++++++++++++++++++++++++++++-
+ pve-backup.c                   | 134 ++++++++++++++++++++++++++++++++-
  qapi/block-core.json           |  10 ++-
- 3 files changed, 142 insertions(+), 4 deletions(-)
+ 3 files changed, 141 insertions(+), 4 deletions(-)
 
 diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c
-index 439a7a14c8..d0e7771dcc 100644
+index 4f30f99644..66d16d342f 100644
 --- a/block/monitor/block-hmp-cmds.c
 +++ b/block/monitor/block-hmp-cmds.c
-@@ -1044,6 +1044,7 @@ void coroutine_fn hmp_backup(Monitor *mon, const QDict *qdict)
+@@ -1045,6 +1045,7 @@ void coroutine_fn hmp_backup(Monitor *mon, const QDict *qdict)
          NULL, NULL,
          devlist, qdict_haskey(qdict, "speed"), speed,
          false, 0, // BackupPerf max-workers
@@ -80,22 +80,18 @@ index 439a7a14c8..d0e7771dcc 100644
  
      hmp_handle_error(mon, error);
 diff --git a/pve-backup.c b/pve-backup.c
-index faa6a9b93c..4b0820c8a7 100644
+index 11ea4b5c56..257cd0b0e1 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
-@@ -7,9 +7,11 @@
- #include "sysemu/blockdev.h"
+@@ -7,6 +7,7 @@
+ #include "system/blockdev.h"
  #include "block/block_int-global-state.h"
  #include "block/blockjob.h"
 +#include "block/copy-before-write.h"
  #include "block/dirty-bitmap.h"
  #include "block/graph-lock.h"
  #include "qapi/qapi-commands-block.h"
-+#include "qapi/qmp/qdict.h"
- #include "qapi/qmp/qerror.h"
- #include "qemu/cutils.h"
- 
-@@ -80,8 +82,15 @@ static void pvebackup_init(void)
+@@ -81,8 +82,15 @@ static void pvebackup_init(void)
  // initialize PVEBackupState at startup
  opts_init(pvebackup_init);
  
@@ -111,7 +107,7 @@ index faa6a9b93c..4b0820c8a7 100644
      size_t size;
      uint64_t block_size;
      uint8_t dev_id;
-@@ -353,6 +362,22 @@ static void pvebackup_complete_cb(void *opaque, int ret)
+@@ -354,6 +362,22 @@ static void pvebackup_complete_cb(void *opaque, int ret)
      PVEBackupDevInfo *di = opaque;
      di->completed_ret = ret;
  
@@ -134,7 +130,7 @@ index faa6a9b93c..4b0820c8a7 100644
      /*
       * Needs to happen outside of coroutine, because it takes the graph write lock.
       */
-@@ -519,9 +544,77 @@ static void create_backup_jobs_bh(void *opaque) {
+@@ -520,9 +544,77 @@ static void create_backup_jobs_bh(void *opaque) {
          }
          bdrv_drained_begin(di->bs);
  
@@ -214,7 +210,7 @@ index faa6a9b93c..4b0820c8a7 100644
              BLOCKDEV_ON_ERROR_REPORT, JOB_DEFAULT, pvebackup_complete_cb, di, backup_state.txn,
              &local_err);
  
-@@ -577,6 +670,14 @@ static void create_backup_jobs_bh(void *opaque) {
+@@ -578,6 +670,14 @@ static void create_backup_jobs_bh(void *opaque) {
      aio_co_enter(data->ctx, data->co);
  }
  
@@ -229,7 +225,7 @@ index faa6a9b93c..4b0820c8a7 100644
  /*
   * Returns a list of device infos, which needs to be freed by the caller. In
   * case of an error, errp will be set, but the returned value might still be a
-@@ -584,6 +685,7 @@ static void create_backup_jobs_bh(void *opaque) {
+@@ -585,6 +685,7 @@ static void create_backup_jobs_bh(void *opaque) {
   */
  static GList coroutine_fn GRAPH_RDLOCK *get_device_info(
      const char *devlist,
@@ -237,7 +233,7 @@ index faa6a9b93c..4b0820c8a7 100644
      Error **errp)
  {
      gchar **devs = NULL;
-@@ -607,6 +709,31 @@ static GList coroutine_fn GRAPH_RDLOCK *get_device_info(
+@@ -608,6 +709,31 @@ static GList coroutine_fn GRAPH_RDLOCK *get_device_info(
              }
              PVEBackupDevInfo *di = g_new0(PVEBackupDevInfo, 1);
              di->bs = bs;
@@ -269,7 +265,7 @@ index faa6a9b93c..4b0820c8a7 100644
              di_list = g_list_append(di_list, di);
              d++;
          }
-@@ -656,6 +783,7 @@ UuidInfo coroutine_fn *qmp_backup(
+@@ -657,6 +783,7 @@ UuidInfo coroutine_fn *qmp_backup(
      const char *devlist,
      bool has_speed, int64_t speed,
      bool has_max_workers, int64_t max_workers,
@@ -277,7 +273,7 @@ index faa6a9b93c..4b0820c8a7 100644
      Error **errp)
  {
      assert(qemu_in_coroutine());
-@@ -684,7 +812,7 @@ UuidInfo coroutine_fn *qmp_backup(
+@@ -685,7 +812,7 @@ UuidInfo coroutine_fn *qmp_backup(
      format = has_format ? format : BACKUP_FORMAT_VMA;
  
      bdrv_graph_co_rdlock();
@@ -286,7 +282,7 @@ index faa6a9b93c..4b0820c8a7 100644
      bdrv_graph_co_rdunlock();
      if (local_err) {
          error_propagate(errp, local_err);
-@@ -1087,5 +1215,6 @@ ProxmoxSupportStatus *qmp_query_proxmox_support(Error **errp)
+@@ -1088,5 +1215,6 @@ ProxmoxSupportStatus *qmp_query_proxmox_support(Error **errp)
      ret->query_bitmap_info = true;
      ret->pbs_masterkey = true;
      ret->backup_max_workers = true;
@@ -294,10 +290,10 @@ index faa6a9b93c..4b0820c8a7 100644
      return ret;
  }
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 9795247c1f..c581f1f238 100644
+index 6838187607..9bdcfa31ea 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -948,6 +948,10 @@
+@@ -952,6 +952,10 @@
  #
  # @max-workers: see @BackupPerf for details. Default 16.
  #
@@ -308,7 +304,7 @@ index 9795247c1f..c581f1f238 100644
  # Returns: the uuid of the backup job
  #
  ##
-@@ -968,7 +972,8 @@
+@@ -972,7 +976,8 @@
                                      '*firewall-file': 'str',
                                      '*devlist': 'str',
                                      '*speed': 'int',
@@ -318,7 +314,7 @@ index 9795247c1f..c581f1f238 100644
    'returns': 'UuidInfo', 'coroutine': true }
  
  ##
-@@ -1014,6 +1019,8 @@
+@@ -1018,6 +1023,8 @@
  #
  # @pbs-library-version: Running version of libproxmox-backup-qemu0 library.
  #
@@ -327,7 +323,7 @@ index 9795247c1f..c581f1f238 100644
  # @backup-max-workers: Whether the 'max-workers' @BackupPerf setting is
  #     supported or not.
  #
-@@ -1025,6 +1032,7 @@
+@@ -1029,6 +1036,7 @@
              'pbs-dirty-bitmap-migration': 'bool',
              'pbs-masterkey': 'bool',
              'pbs-library-version': 'str',
diff --git a/debian/patches/pve/0045-PVE-backup-improve-error-when-copy-before-write-fail.patch b/debian/patches/pve/0045-PVE-backup-improve-error-when-copy-before-write-fail.patch
index dbbf64a..e6cecc4 100644
--- a/debian/patches/pve/0045-PVE-backup-improve-error-when-copy-before-write-fail.patch
+++ b/debian/patches/pve/0045-PVE-backup-improve-error-when-copy-before-write-fail.patch
@@ -21,13 +21,13 @@ Tested-by: Friedrich Weber <f.weber at proxmox.com>
  3 files changed, 22 insertions(+), 6 deletions(-)
 
 diff --git a/block/copy-before-write.c b/block/copy-before-write.c
-index 81afeff1c7..fdf9cdc0cd 100644
+index fd470f5f92..5c23b578ef 100644
 --- a/block/copy-before-write.c
 +++ b/block/copy-before-write.c
 @@ -27,6 +27,7 @@
- #include "qapi/qmp/qjson.h"
+ #include "qobject/qjson.h"
  
- #include "sysemu/block-backend.h"
+ #include "system/block-backend.h"
 +#include "qemu/atomic.h"
  #include "qemu/cutils.h"
  #include "qapi/error.h"
@@ -96,7 +96,7 @@ index 2a5d4ba693..969da3620f 100644
  
  #endif /* COPY_BEFORE_WRITE_H */
 diff --git a/pve-backup.c b/pve-backup.c
-index 4b0820c8a7..81697d9bf9 100644
+index 257cd0b0e1..ffcfaa649d 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -374,6 +374,15 @@ static void pvebackup_complete_cb(void *opaque, int ret)
diff --git a/debian/patches/pve/0046-PVE-backup-fixup-error-handling-for-fleecing.patch b/debian/patches/pve/0046-PVE-backup-fixup-error-handling-for-fleecing.patch
index 1b4fdd2..49a2256 100644
--- a/debian/patches/pve/0046-PVE-backup-fixup-error-handling-for-fleecing.patch
+++ b/debian/patches/pve/0046-PVE-backup-fixup-error-handling-for-fleecing.patch
@@ -18,7 +18,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 25 insertions(+), 13 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 81697d9bf9..320c660589 100644
+index ffcfaa649d..718a31e4ca 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -357,22 +357,23 @@ static void coroutine_fn pvebackup_co_complete_stream(void *opaque)
diff --git a/debian/patches/pve/0047-PVE-backup-factor-out-setting-up-snapshot-access-for.patch b/debian/patches/pve/0047-PVE-backup-factor-out-setting-up-snapshot-access-for.patch
index ebd47dc..af8e0dd 100644
--- a/debian/patches/pve/0047-PVE-backup-factor-out-setting-up-snapshot-access-for.patch
+++ b/debian/patches/pve/0047-PVE-backup-factor-out-setting-up-snapshot-access-for.patch
@@ -15,7 +15,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 58 insertions(+), 37 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 320c660589..d8d0c04b0f 100644
+index 718a31e4ca..3551bd6c92 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -525,6 +525,62 @@ static int coroutine_fn pvebackup_co_add_config(
diff --git a/debian/patches/pve/0048-PVE-backup-save-device-name-in-device-info-structure.patch b/debian/patches/pve/0048-PVE-backup-save-device-name-in-device-info-structure.patch
index 891e584..3523164 100644
--- a/debian/patches/pve/0048-PVE-backup-save-device-name-in-device-info-structure.patch
+++ b/debian/patches/pve/0048-PVE-backup-save-device-name-in-device-info-structure.patch
@@ -17,7 +17,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 15 insertions(+), 14 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index d8d0c04b0f..e2110ce0db 100644
+index 3551bd6c92..25f65952a0 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -94,6 +94,7 @@ typedef struct PVEBackupDevInfo {
diff --git a/debian/patches/pve/0049-PVE-backup-include-device-name-in-error-when-setting.patch b/debian/patches/pve/0049-PVE-backup-include-device-name-in-error-when-setting.patch
index 807609a..477beca 100644
--- a/debian/patches/pve/0049-PVE-backup-include-device-name-in-error-when-setting.patch
+++ b/debian/patches/pve/0049-PVE-backup-include-device-name-in-error-when-setting.patch
@@ -10,7 +10,7 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index e2110ce0db..32352fb5ec 100644
+index 25f65952a0..b411d58a9a 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -626,7 +626,8 @@ static void create_backup_jobs_bh(void *opaque) {
diff --git a/debian/patches/pve/0050-adapt-machine-version-deprecation-for-Proxmox-VE.patch b/debian/patches/pve/0050-adapt-machine-version-deprecation-for-Proxmox-VE.patch
index f80b21c..6e587fa 100644
--- a/debian/patches/pve/0050-adapt-machine-version-deprecation-for-Proxmox-VE.patch
+++ b/debian/patches/pve/0050-adapt-machine-version-deprecation-for-Proxmox-VE.patch
@@ -22,10 +22,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 51 insertions(+), 27 deletions(-)
 
 diff --git a/include/hw/boards.h b/include/hw/boards.h
-index d1741ea121..3f9befda14 100644
+index 8ada4d5832..f9f3b75284 100644
 --- a/include/hw/boards.h
 +++ b/include/hw/boards.h
-@@ -631,42 +631,66 @@ struct MachineState {
+@@ -636,42 +636,66 @@ struct MachineState {
  
  
  /*
@@ -117,7 +117,7 @@ index d1741ea121..3f9befda14 100644
  
  /*
   * Evaluates true when a machine type with (major, minor)
-@@ -675,7 +699,7 @@ struct MachineState {
+@@ -680,7 +704,7 @@ struct MachineState {
   * lifecycle rules
   */
  #define MACHINE_VER_IS_DEPRECATED(...) \
@@ -126,7 +126,7 @@ index d1741ea121..3f9befda14 100644
  
  /*
   * Evaluates true when a machine type with (major, minor)
-@@ -684,7 +708,7 @@ struct MachineState {
+@@ -689,7 +713,7 @@ struct MachineState {
   * lifecycle rules
   */
  #define MACHINE_VER_SHOULD_DELETE(...) \
diff --git a/debian/patches/pve/0051-Revert-hpet-avoid-timer-storms-on-periodic-timers.patch b/debian/patches/pve/0051-Revert-hpet-avoid-timer-storms-on-periodic-timers.patch
index 3ff1ee4..e4bbb4b 100644
--- a/debian/patches/pve/0051-Revert-hpet-avoid-timer-storms-on-periodic-timers.patch
+++ b/debian/patches/pve/0051-Revert-hpet-avoid-timer-storms-on-periodic-timers.patch
@@ -11,10 +11,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 2 insertions(+), 11 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index 5399f1b2a3..8ccc421cbb 100644
+index ccb97b6806..0f45af8bbe 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -59,7 +59,6 @@ typedef struct HPETTimer {  /* timers */
+@@ -61,7 +61,6 @@ typedef struct HPETTimer {  /* timers */
      uint8_t wrap_flag;      /* timer pop will indicate wrap for one-shot 32-bit
                               * mode. Next pop will be actual timer expiration.
                               */
@@ -22,7 +22,7 @@ index 5399f1b2a3..8ccc421cbb 100644
  } HPETTimer;
  
  struct HPETState {
-@@ -267,7 +266,6 @@ static int hpet_post_load(void *opaque, int version_id)
+@@ -262,7 +261,6 @@ static int hpet_post_load(void *opaque, int version_id)
      for (i = 0; i < s->num_timers; i++) {
          HPETTimer *t = &s->timer[i];
          t->cmp64 = hpet_calculate_cmp64(t, s->hpet_counter, t->cmp);
@@ -30,7 +30,7 @@ index 5399f1b2a3..8ccc421cbb 100644
      }
      /* Recalculate the offset between the main counter and guest time */
      if (!s->hpet_offset_saved) {
-@@ -366,15 +364,8 @@ static const VMStateDescription vmstate_hpet = {
+@@ -350,15 +348,8 @@ static const VMStateDescription vmstate_hpet = {
  
  static void hpet_arm(HPETTimer *t, uint64_t tick)
  {
diff --git a/debian/patches/pve/0052-Revert-hpet-store-full-64-bit-target-value-of-the-co.patch b/debian/patches/pve/0052-Revert-hpet-store-full-64-bit-target-value-of-the-co.patch
index 482940c..c366356 100644
--- a/debian/patches/pve/0052-Revert-hpet-store-full-64-bit-target-value-of-the-co.patch
+++ b/debian/patches/pve/0052-Revert-hpet-store-full-64-bit-target-value-of-the-co.patch
@@ -7,14 +7,14 @@ This reverts commit 242d665396407f83a6acbffc804882eeb21cfdad.
 
 Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 ---
- hw/timer/hpet.c | 111 +++++++++++++++++++++++++++---------------------
- 1 file changed, 62 insertions(+), 49 deletions(-)
+ hw/timer/hpet.c | 109 +++++++++++++++++++++++++++---------------------
+ 1 file changed, 61 insertions(+), 48 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index 8ccc421cbb..415a9433f1 100644
+index 0f45af8bbe..635a060d38 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -54,7 +54,6 @@ typedef struct HPETTimer {  /* timers */
+@@ -56,7 +56,6 @@ typedef struct HPETTimer {  /* timers */
      uint64_t cmp;           /* comparator */
      uint64_t fsb;           /* FSB route */
      /* Hidden register state */
@@ -22,7 +22,7 @@ index 8ccc421cbb..415a9433f1 100644
      uint64_t period;        /* Last value written to comparator */
      uint8_t wrap_flag;      /* timer pop will indicate wrap for one-shot 32-bit
                               * mode. Next pop will be actual timer expiration.
-@@ -116,6 +115,11 @@ static uint32_t timer_enabled(HPETTimer *t)
+@@ -119,6 +118,11 @@ static uint32_t timer_enabled(HPETTimer *t)
  }
  
  static uint32_t hpet_time_after(uint64_t a, uint64_t b)
@@ -34,7 +34,7 @@ index 8ccc421cbb..415a9433f1 100644
  {
      return ((int64_t)(b - a) < 0);
  }
-@@ -152,32 +156,27 @@ static uint64_t hpet_get_ticks(HPETState *s)
+@@ -155,32 +159,27 @@ static uint64_t hpet_get_ticks(HPETState *s)
      return ns_to_ticks(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->hpet_offset);
  }
  
@@ -82,7 +82,7 @@ index 8ccc421cbb..415a9433f1 100644
  }
  
  static void update_irq(struct HPETTimer *timer, int set)
-@@ -261,12 +260,7 @@ static bool hpet_validate_num_timers(void *opaque, int version_id)
+@@ -256,12 +255,7 @@ static bool hpet_validate_num_timers(void *opaque, int version_id)
  static int hpet_post_load(void *opaque, int version_id)
  {
      HPETState *s = opaque;
@@ -95,7 +95,7 @@ index 8ccc421cbb..415a9433f1 100644
      /* Recalculate the offset between the main counter and guest time */
      if (!s->hpet_offset_saved) {
          s->hpet_offset = ticks_to_ns(s->hpet_counter)
-@@ -362,10 +356,14 @@ static const VMStateDescription vmstate_hpet = {
+@@ -346,10 +340,14 @@ static const VMStateDescription vmstate_hpet = {
      }
  };
  
@@ -113,7 +113,7 @@ index 8ccc421cbb..415a9433f1 100644
  }
  
  /*
-@@ -374,44 +372,54 @@ static void hpet_arm(HPETTimer *t, uint64_t tick)
+@@ -358,44 +356,54 @@ static void hpet_arm(HPETTimer *t, uint64_t tick)
  static void hpet_timer(void *opaque)
  {
      HPETTimer *t = opaque;
@@ -163,13 +163,12 @@ index 8ccc421cbb..415a9433f1 100644
      t->wrap_flag = 0;
 -    t->cmp64 = hpet_calculate_cmp64(t, cur_tick, t->cmp);
 -    if (t->config & HPET_TN_32BIT) {
--
++    diff = hpet_calculate_diff(t, cur_tick);
+ 
 -        /* hpet spec says in one-shot 32-bit mode, generate an interrupt when
 -         * counter wraps in addition to an interrupt with comparator match.
 -         */
 -        if (!timer_is_periodic(t) && t->cmp64 > hpet_next_wrap(cur_tick)) {
-+    diff = hpet_calculate_diff(t, cur_tick);
-+
 +    /* hpet spec says in one-shot 32-bit mode, generate an interrupt when
 +     * counter wraps in addition to an interrupt with comparator match.
 +     */
@@ -187,7 +186,7 @@ index 8ccc421cbb..415a9433f1 100644
  }
  
  static void hpet_del_timer(HPETTimer *t)
-@@ -542,7 +550,12 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -526,7 +534,12 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                  timer->cmp = deposit64(timer->cmp, shift, len, value);
              }
              if (timer_is_periodic(timer)) {
diff --git a/debian/patches/pve/0053-Revert-hpet-accept-64-bit-reads-and-writes.patch b/debian/patches/pve/0053-Revert-hpet-accept-64-bit-reads-and-writes.patch
index b47b823..37d8d3a 100644
--- a/debian/patches/pve/0053-Revert-hpet-accept-64-bit-reads-and-writes.patch
+++ b/debian/patches/pve/0053-Revert-hpet-accept-64-bit-reads-and-writes.patch
@@ -12,10 +12,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  2 files changed, 96 insertions(+), 44 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index 415a9433f1..e1ac877759 100644
+index 635a060d38..5f4bb5667d 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -437,7 +437,6 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
+@@ -421,7 +421,6 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
                                unsigned size)
  {
      HPETState *s = opaque;
@@ -23,7 +23,7 @@ index 415a9433f1..e1ac877759 100644
      uint64_t cur_tick;
  
      trace_hpet_ram_read(addr);
-@@ -452,33 +451,52 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
+@@ -436,33 +435,52 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
              return 0;
          }
  
@@ -88,7 +88,7 @@ index 415a9433f1..e1ac877759 100644
          default:
              trace_hpet_ram_read_invalid();
              break;
-@@ -492,11 +510,11 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -476,11 +494,11 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
  {
      int i;
      HPETState *s = opaque;
@@ -102,7 +102,7 @@ index 415a9433f1..e1ac877759 100644
  
      /*address range of all TN regs*/
      if (addr >= 0x100 && addr <= 0x3ff) {
-@@ -508,12 +526,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -492,12 +510,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
              trace_hpet_timer_id_out_of_range(timer_id);
              return;
          }
@@ -117,7 +117,7 @@ index 415a9433f1..e1ac877759 100644
              if (deactivating_bit(old_val, new_val, HPET_TN_TYPE_LEVEL)) {
                  /*
                   * Do this before changing timer->config; otherwise, if
-@@ -521,7 +536,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -505,7 +520,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                   */
                  update_irq(timer, 0);
              }
@@ -127,7 +127,7 @@ index 415a9433f1..e1ac877759 100644
              if (activating_bit(old_val, new_val, HPET_TN_ENABLE)
                  && (s->isr & (1 << timer_id))) {
                  update_irq(timer, 1);
-@@ -534,28 +550,56 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -518,28 +534,56 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                  hpet_set_timer(timer);
              }
              break;
@@ -194,7 +194,7 @@ index 415a9433f1..e1ac877759 100644
              }
              timer->config &= ~HPET_TN_SETVAL;
              if (hpet_enabled(s)) {
-@@ -563,7 +607,10 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -547,7 +591,10 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
              }
              break;
          case HPET_TN_ROUTE:
@@ -206,7 +206,7 @@ index 415a9433f1..e1ac877759 100644
              break;
          default:
              trace_hpet_ram_write_invalid();
-@@ -571,14 +618,12 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -555,14 +602,12 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
          }
          return;
      } else {
@@ -223,7 +223,7 @@ index 415a9433f1..e1ac877759 100644
              if (activating_bit(old_val, new_val, HPET_CFG_ENABLE)) {
                  /* Enable main counter and interrupt generation. */
                  s->hpet_offset =
-@@ -608,8 +653,10 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -592,8 +637,10 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                  qemu_set_irq(s->irqs[RTC_ISA_IRQ], s->rtc_irq_level);
              }
              break;
@@ -235,7 +235,7 @@ index 415a9433f1..e1ac877759 100644
              cleared = new_val & s->isr;
              for (i = 0; i < s->num_timers; i++) {
                  if (cleared & (1 << i)) {
-@@ -621,7 +668,15 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -605,7 +652,15 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
              if (hpet_enabled(s)) {
                  trace_hpet_ram_write_counter_write_while_enabled();
              }
@@ -252,7 +252,7 @@ index 415a9433f1..e1ac877759 100644
              break;
          default:
              trace_hpet_ram_write_invalid();
-@@ -635,11 +690,7 @@ static const MemoryRegionOps hpet_ram_ops = {
+@@ -619,11 +674,7 @@ static const MemoryRegionOps hpet_ram_ops = {
      .write = hpet_ram_write,
      .valid = {
          .min_access_size = 4,
@@ -266,7 +266,7 @@ index 415a9433f1..e1ac877759 100644
      .endianness = DEVICE_NATIVE_ENDIAN,
  };
 diff --git a/hw/timer/trace-events b/hw/timer/trace-events
-index 5cfc369fba..219747df2f 100644
+index c5b6db49f5..dd8a53c690 100644
 --- a/hw/timer/trace-events
 +++ b/hw/timer/trace-events
 @@ -114,7 +114,8 @@ hpet_ram_read_reading_counter(uint8_t reg_off, uint64_t cur_tick) "reading count
diff --git a/debian/patches/pve/0054-Revert-hpet-place-read-only-bits-directly-in-new_val.patch b/debian/patches/pve/0054-Revert-hpet-place-read-only-bits-directly-in-new_val.patch
index 85b0989..8742f85 100644
--- a/debian/patches/pve/0054-Revert-hpet-place-read-only-bits-directly-in-new_val.patch
+++ b/debian/patches/pve/0054-Revert-hpet-place-read-only-bits-directly-in-new_val.patch
@@ -11,10 +11,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 8 insertions(+), 7 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index e1ac877759..b12bbaf10d 100644
+index 5f4bb5667d..5e3bf1f153 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -510,7 +510,7 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -494,7 +494,7 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
  {
      int i;
      HPETState *s = opaque;
@@ -23,7 +23,7 @@ index e1ac877759..b12bbaf10d 100644
  
      trace_hpet_ram_write(addr, value);
      old_val = hpet_ram_read(opaque, addr, 4);
-@@ -536,12 +536,13 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -520,12 +520,13 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                   */
                  update_irq(timer, 0);
              }
@@ -39,7 +39,7 @@ index e1ac877759..b12bbaf10d 100644
              if (new_val & HPET_TN_32BIT) {
                  timer->cmp = (uint32_t)timer->cmp;
                  timer->period = (uint32_t)timer->period;
-@@ -622,8 +623,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -606,8 +607,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
          case HPET_ID:
              return;
          case HPET_CFG:
@@ -50,7 +50,7 @@ index e1ac877759..b12bbaf10d 100644
              if (activating_bit(old_val, new_val, HPET_CFG_ENABLE)) {
                  /* Enable main counter and interrupt generation. */
                  s->hpet_offset =
-@@ -657,9 +658,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -641,9 +642,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
              trace_hpet_invalid_hpet_cfg(4);
              break;
          case HPET_STATUS:
diff --git a/debian/patches/pve/0055-Revert-hpet-remove-unnecessary-variable-index.patch b/debian/patches/pve/0055-Revert-hpet-remove-unnecessary-variable-index.patch
index c8aa6ad..d962aeb 100644
--- a/debian/patches/pve/0055-Revert-hpet-remove-unnecessary-variable-index.patch
+++ b/debian/patches/pve/0055-Revert-hpet-remove-unnecessary-variable-index.patch
@@ -11,10 +11,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 8 insertions(+), 7 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index b12bbaf10d..6f83d88516 100644
+index 5e3bf1f153..daef12c8cf 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -437,12 +437,12 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
+@@ -421,12 +421,12 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
                                unsigned size)
  {
      HPETState *s = opaque;
@@ -30,7 +30,7 @@ index b12bbaf10d..6f83d88516 100644
          uint8_t timer_id = (addr - 0x100) / 0x20;
          HPETTimer *timer = &s->timer[timer_id];
  
-@@ -469,7 +469,7 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
+@@ -453,7 +453,7 @@ static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
              break;
          }
      } else {
@@ -39,7 +39,7 @@ index b12bbaf10d..6f83d88516 100644
          case HPET_ID:
              return s->capability;
          case HPET_PERIOD:
-@@ -510,14 +510,15 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -494,14 +494,15 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
  {
      int i;
      HPETState *s = opaque;
@@ -57,7 +57,7 @@ index b12bbaf10d..6f83d88516 100644
          uint8_t timer_id = (addr - 0x100) / 0x20;
          HPETTimer *timer = &s->timer[timer_id];
  
-@@ -619,7 +620,7 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -603,7 +604,7 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
          }
          return;
      } else {
diff --git a/debian/patches/pve/0056-Revert-hpet-ignore-high-bits-of-comparator-in-32-bit.patch b/debian/patches/pve/0056-Revert-hpet-ignore-high-bits-of-comparator-in-32-bit.patch
index 0fde8dd..e09c8ba 100644
--- a/debian/patches/pve/0056-Revert-hpet-ignore-high-bits-of-comparator-in-32-bit.patch
+++ b/debian/patches/pve/0056-Revert-hpet-ignore-high-bits-of-comparator-in-32-bit.patch
@@ -12,10 +12,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  2 files changed, 5 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index 6f83d88516..509986c0a9 100644
+index daef12c8cf..927263e2ff 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -585,10 +585,6 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -569,10 +569,6 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
              }
              break;
          case HPET_TN_CMP + 4: // comparator register high order
@@ -27,7 +27,7 @@ index 6f83d88516..509986c0a9 100644
              if (!timer_is_periodic(timer)
                  || (timer->config & HPET_TN_SETVAL)) {
 diff --git a/hw/timer/trace-events b/hw/timer/trace-events
-index 219747df2f..b86870fb22 100644
+index dd8a53c690..2b81ee0812 100644
 --- a/hw/timer/trace-events
 +++ b/hw/timer/trace-events
 @@ -117,7 +117,6 @@ hpet_ram_write_timer_id(uint64_t timer_id) "hpet_ram_writel timer_id = 0x%" PRIx
diff --git a/debian/patches/pve/0057-Revert-hpet-fix-and-cleanup-persistence-of-interrupt.patch b/debian/patches/pve/0057-Revert-hpet-fix-and-cleanup-persistence-of-interrupt.patch
index 0c58bae..312df20 100644
--- a/debian/patches/pve/0057-Revert-hpet-fix-and-cleanup-persistence-of-interrupt.patch
+++ b/debian/patches/pve/0057-Revert-hpet-fix-and-cleanup-persistence-of-interrupt.patch
@@ -12,10 +12,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 19 insertions(+), 41 deletions(-)
 
 diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
-index 509986c0a9..402cc960f0 100644
+index 927263e2ff..5aae09f166 100644
 --- a/hw/timer/hpet.c
 +++ b/hw/timer/hpet.c
-@@ -196,31 +196,21 @@ static void update_irq(struct HPETTimer *timer, int set)
+@@ -199,31 +199,21 @@ static void update_irq(struct HPETTimer *timer, int set)
      }
      s = timer->state;
      mask = 1 << timer->tn;
@@ -58,7 +58,7 @@ index 509986c0a9..402cc960f0 100644
      }
  }
  
-@@ -424,13 +414,8 @@ static void hpet_set_timer(HPETTimer *t)
+@@ -408,13 +398,8 @@ static void hpet_set_timer(HPETTimer *t)
  
  static void hpet_del_timer(HPETTimer *t)
  {
@@ -73,7 +73,7 @@ index 509986c0a9..402cc960f0 100644
  }
  
  static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
-@@ -530,26 +515,20 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -514,26 +499,20 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
          switch ((addr - 0x100) % 0x20) {
          case HPET_TN_CFG:
              trace_hpet_ram_write_tn_cfg();
@@ -105,7 +105,7 @@ index 509986c0a9..402cc960f0 100644
              }
              break;
          case HPET_TN_CFG + 4: // Interrupt capabilities
-@@ -627,10 +606,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
+@@ -611,10 +590,9 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
                  s->hpet_offset =
                      ticks_to_ns(s->hpet_counter) - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
                  for (i = 0; i < s->num_timers; i++) {
diff --git a/debian/patches/pve/0058-savevm-async-improve-setting-state-of-snapshot-opera.patch b/debian/patches/pve/0058-savevm-async-improve-setting-state-of-snapshot-opera.patch
index 30c1e45..8751ede 100644
--- a/debian/patches/pve/0058-savevm-async-improve-setting-state-of-snapshot-opera.patch
+++ b/debian/patches/pve/0058-savevm-async-improve-setting-state-of-snapshot-opera.patch
@@ -28,10 +28,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 15 insertions(+), 18 deletions(-)
 
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index 1e79fce9ba..e63dc6d8a3 100644
+index fbcf74f9e2..2163bf50b1 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
-@@ -450,23 +450,22 @@ static void coroutine_fn wait_for_close_co(void *opaque)
+@@ -451,23 +451,22 @@ static void coroutine_fn wait_for_close_co(void *opaque)
  {
      int64_t timeout;
  
@@ -70,7 +70,7 @@ index 1e79fce9ba..e63dc6d8a3 100644
      }
  
      // File closed and no other error, so ensure next snapshot can be started.
-@@ -497,8 +496,6 @@ void qmp_savevm_end(Error **errp)
+@@ -498,8 +497,6 @@ void qmp_savevm_end(Error **errp)
          snap_state.saved_vm_running = false;
      }
  
diff --git a/debian/patches/pve/0059-savevm-async-rename-saved_vm_running-to-vm_needs_sta.patch b/debian/patches/pve/0059-savevm-async-rename-saved_vm_running-to-vm_needs_sta.patch
index c313b95..706089c 100644
--- a/debian/patches/pve/0059-savevm-async-rename-saved_vm_running-to-vm_needs_sta.patch
+++ b/debian/patches/pve/0059-savevm-async-rename-saved_vm_running-to-vm_needs_sta.patch
@@ -12,10 +12,10 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
  1 file changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index e63dc6d8a3..1e34c31e8b 100644
+index 2163bf50b1..657a4ec9f6 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
-@@ -51,7 +51,7 @@ static struct SnapshotState {
+@@ -52,7 +52,7 @@ static struct SnapshotState {
      int state;
      Error *error;
      Error *blocker;
@@ -24,7 +24,7 @@ index e63dc6d8a3..1e34c31e8b 100644
      QEMUFile *file;
      int64_t total_time;
      QEMUBH *finalize_bh;
-@@ -224,9 +224,9 @@ static void process_savevm_finalize(void *opaque)
+@@ -225,9 +225,9 @@ static void process_savevm_finalize(void *opaque)
          save_snapshot_error("process_savevm_cleanup: invalid state: %d",
                              snap_state.state);
      }
@@ -36,7 +36,7 @@ index e63dc6d8a3..1e34c31e8b 100644
      }
  
      DPRINTF("timing: process_savevm_finalize (full) took %ld ms\n",
-@@ -352,7 +352,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -353,7 +353,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
      }
  
      /* initialize snapshot info */
@@ -45,7 +45,7 @@ index e63dc6d8a3..1e34c31e8b 100644
      snap_state.bs_pos = 0;
      snap_state.total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
      snap_state.blocker = NULL;
-@@ -440,9 +440,9 @@ restart:
+@@ -441,9 +441,9 @@ restart:
  
      save_snapshot_error("setup failed");
  
@@ -57,7 +57,7 @@ index e63dc6d8a3..1e34c31e8b 100644
      }
  }
  
-@@ -491,9 +491,9 @@ void qmp_savevm_end(Error **errp)
+@@ -492,9 +492,9 @@ void qmp_savevm_end(Error **errp)
          return;
      }
  
diff --git a/debian/patches/pve/0060-savevm-async-improve-runstate-preservation-cleanup-e.patch b/debian/patches/pve/0060-savevm-async-improve-runstate-preservation-cleanup-e.patch
index 0487c02..8afd450 100644
--- a/debian/patches/pve/0060-savevm-async-improve-runstate-preservation-cleanup-e.patch
+++ b/debian/patches/pve/0060-savevm-async-improve-runstate-preservation-cleanup-e.patch
@@ -23,10 +23,10 @@ Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 10 insertions(+), 15 deletions(-)
 
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index 1e34c31e8b..d8d2c80475 100644
+index 657a4ec9f6..d70ae737bd 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
-@@ -178,6 +178,7 @@ static void process_savevm_finalize(void *opaque)
+@@ -179,6 +179,7 @@ static void process_savevm_finalize(void *opaque)
       */
      blk_set_aio_context(snap_state.target, qemu_get_aio_context(), NULL);
  
@@ -34,7 +34,7 @@ index 1e34c31e8b..d8d2c80475 100644
      ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
      if (ret < 0) {
          save_snapshot_error("vm_stop_force_state error %d", ret);
-@@ -352,7 +353,6 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -353,7 +354,6 @@ void qmp_savevm_start(const char *statefile, Error **errp)
      }
  
      /* initialize snapshot info */
@@ -42,7 +42,7 @@ index 1e34c31e8b..d8d2c80475 100644
      snap_state.bs_pos = 0;
      snap_state.total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
      snap_state.blocker = NULL;
-@@ -364,13 +364,14 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -365,13 +365,14 @@ void qmp_savevm_start(const char *statefile, Error **errp)
      }
  
      if (!statefile) {
@@ -58,7 +58,7 @@ index 1e34c31e8b..d8d2c80475 100644
      }
  
      /* Open the image */
-@@ -380,12 +381,12 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -381,12 +382,12 @@ void qmp_savevm_start(const char *statefile, Error **errp)
      snap_state.target = blk_new_open(statefile, NULL, options, bdrv_oflags, &local_err);
      if (!snap_state.target) {
          error_setg(errp, "failed to open '%s'", statefile);
@@ -73,7 +73,7 @@ index 1e34c31e8b..d8d2c80475 100644
      }
  
      QIOChannel *ioc = QIO_CHANNEL(qio_channel_savevm_async_new(snap_state.target,
-@@ -394,7 +395,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -395,7 +396,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
  
      if (!snap_state.file) {
          error_setg(errp, "failed to open '%s'", statefile);
@@ -82,7 +82,7 @@ index 1e34c31e8b..d8d2c80475 100644
      }
  
      /*
-@@ -402,8 +403,8 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -403,8 +404,8 @@ void qmp_savevm_start(const char *statefile, Error **errp)
       * State is cleared in process_savevm_co, but has to be initialized
       * here (blocking main thread, from QMP) to avoid race conditions.
       */
@@ -93,7 +93,7 @@ index 1e34c31e8b..d8d2c80475 100644
      }
      memset(&mig_stats, 0, sizeof(mig_stats));
      ms->to_dst_file = snap_state.file;
-@@ -418,7 +419,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -419,7 +420,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
      if (ret != 0) {
          error_setg_errno(errp, -ret, "savevm state setup failed: %s",
                           local_err ? error_get_pretty(local_err) : "unknown error");
@@ -102,7 +102,7 @@ index 1e34c31e8b..d8d2c80475 100644
      }
  
      /* Async processing from here on out happens in iohandler context, so let
-@@ -436,14 +437,8 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -437,14 +438,8 @@ void qmp_savevm_start(const char *statefile, Error **errp)
  
      return;
  
diff --git a/debian/patches/pve/0061-savevm-async-use-dedicated-iothread-for-state-file.patch b/debian/patches/pve/0061-savevm-async-use-dedicated-iothread-for-state-file.patch
index 2b9c9ed..1e2c9e1 100644
--- a/debian/patches/pve/0061-savevm-async-use-dedicated-iothread-for-state-file.patch
+++ b/debian/patches/pve/0061-savevm-async-use-dedicated-iothread-for-state-file.patch
@@ -66,22 +66,14 @@ Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 [WB: update to the changed error handling in the previous commit]
 Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
 ---
- migration/savevm-async.c | 42 ++++++++++++++++++++++++++++------------
- 1 file changed, 30 insertions(+), 12 deletions(-)
+ migration/savevm-async.c | 41 ++++++++++++++++++++++++++++------------
+ 1 file changed, 29 insertions(+), 12 deletions(-)
 
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index d8d2c80475..11ea4c601d 100644
+index d70ae737bd..2236f32784 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
-@@ -25,6 +25,7 @@
- #include "qemu/main-loop.h"
- #include "qemu/rcu.h"
- #include "qemu/yank.h"
-+#include "sysemu/iothread.h"
- 
- /* #define DEBUG_SAVEVM_STATE */
- 
-@@ -57,6 +58,7 @@ static struct SnapshotState {
+@@ -58,6 +58,7 @@ static struct SnapshotState {
      QEMUBH *finalize_bh;
      Coroutine *co;
      QemuCoSleep target_close_wait;
@@ -89,7 +81,7 @@ index d8d2c80475..11ea4c601d 100644
  } snap_state;
  
  static bool savevm_aborted(void)
-@@ -256,16 +258,13 @@ static void coroutine_fn process_savevm_co(void *opaque)
+@@ -257,16 +258,13 @@ static void coroutine_fn process_savevm_co(void *opaque)
          uint64_t threshold = 400 * 1000;
  
          /*
@@ -108,7 +100,7 @@ index d8d2c80475..11ea4c601d 100644
          pending_size = pend_precopy + pend_postcopy;
  
          /*
-@@ -332,11 +331,17 @@ static void coroutine_fn process_savevm_co(void *opaque)
+@@ -333,11 +331,17 @@ static void coroutine_fn process_savevm_co(void *opaque)
      qemu_bh_schedule(snap_state.finalize_bh);
  }
  
@@ -127,7 +119,7 @@ index d8d2c80475..11ea4c601d 100644
      BlockDriverState *target_bs = NULL;
      int ret = 0;
  
-@@ -374,6 +379,19 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -375,6 +379,19 @@ void qmp_savevm_start(const char *statefile, Error **errp)
          goto fail;
      }
  
@@ -147,7 +139,7 @@ index d8d2c80475..11ea4c601d 100644
      /* Open the image */
      QDict *options = NULL;
      options = qdict_new();
-@@ -422,22 +440,20 @@ void qmp_savevm_start(const char *statefile, Error **errp)
+@@ -423,22 +440,20 @@ void qmp_savevm_start(const char *statefile, Error **errp)
          goto fail;
      }
  
@@ -174,7 +166,7 @@ index d8d2c80475..11ea4c601d 100644
      save_snapshot_error("setup failed");
  }
  
-@@ -463,6 +479,8 @@ static void coroutine_fn wait_for_close_co(void *opaque)
+@@ -464,6 +479,8 @@ static void coroutine_fn wait_for_close_co(void *opaque)
          DPRINTF("savevm-end: no target file open\n");
      }
  
diff --git a/debian/patches/pve/0062-savevm-async-treat-failure-to-set-iothread-context-a.patch b/debian/patches/pve/0062-savevm-async-treat-failure-to-set-iothread-context-a.patch
index 7d431fd..1def7ac 100644
--- a/debian/patches/pve/0062-savevm-async-treat-failure-to-set-iothread-context-a.patch
+++ b/debian/patches/pve/0062-savevm-async-treat-failure-to-set-iothread-context-a.patch
@@ -15,7 +15,7 @@ Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/migration/savevm-async.c b/migration/savevm-async.c
-index 11ea4c601d..f2b10b5519 100644
+index 2236f32784..730b815494 100644
 --- a/migration/savevm-async.c
 +++ b/migration/savevm-async.c
 @@ -442,9 +442,9 @@ void qmp_savevm_start(const char *statefile, Error **errp)
diff --git a/debian/patches/pve/0063-PVE-backup-clean-up-directly-in-setup_snapshot_acces.patch b/debian/patches/pve/0063-PVE-backup-clean-up-directly-in-setup_snapshot_acces.patch
index d92c06c..a5582bd 100644
--- a/debian/patches/pve/0063-PVE-backup-clean-up-directly-in-setup_snapshot_acces.patch
+++ b/debian/patches/pve/0063-PVE-backup-clean-up-directly-in-setup_snapshot_acces.patch
@@ -18,7 +18,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 32352fb5ec..2408f182bc 100644
+index b411d58a9a..9b66788ab5 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -576,6 +576,9 @@ static int setup_snapshot_access(PVEBackupDevInfo *di, Error **errp)
diff --git a/debian/patches/pve/0064-PVE-backup-factor-out-helper-to-clear-backup-state-s.patch b/debian/patches/pve/0064-PVE-backup-factor-out-helper-to-clear-backup-state-s.patch
index 8829ab3..83aa736 100644
--- a/debian/patches/pve/0064-PVE-backup-factor-out-helper-to-clear-backup-state-s.patch
+++ b/debian/patches/pve/0064-PVE-backup-factor-out-helper-to-clear-backup-state-s.patch
@@ -12,7 +12,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 18 insertions(+), 10 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 2408f182bc..915649b5f9 100644
+index 9b66788ab5..588ee98ffc 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -811,6 +811,23 @@ err:
diff --git a/debian/patches/pve/0065-PVE-backup-factor-out-helper-to-initialize-backup-st.patch b/debian/patches/pve/0065-PVE-backup-factor-out-helper-to-initialize-backup-st.patch
index 3fc1e85..8cebc9f 100644
--- a/debian/patches/pve/0065-PVE-backup-factor-out-helper-to-initialize-backup-st.patch
+++ b/debian/patches/pve/0065-PVE-backup-factor-out-helper-to-initialize-backup-st.patch
@@ -12,7 +12,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 38 insertions(+), 24 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 915649b5f9..88a981f81c 100644
+index 588ee98ffc..3be9930ad3 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -828,6 +828,43 @@ static void clear_backup_state_bitmap_list(void) {
diff --git a/debian/patches/pve/0066-PVE-backup-add-target-ID-in-backup-state.patch b/debian/patches/pve/0066-PVE-backup-add-target-ID-in-backup-state.patch
index 48c925d..b7d3a2c 100644
--- a/debian/patches/pve/0066-PVE-backup-add-target-ID-in-backup-state.patch
+++ b/debian/patches/pve/0066-PVE-backup-add-target-ID-in-backup-state.patch
@@ -15,7 +15,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 14 insertions(+), 1 deletion(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 88a981f81c..8789a0667a 100644
+index 3be9930ad3..87778f7e76 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -70,6 +70,7 @@ static struct PVEBackupState {
diff --git a/debian/patches/pve/0067-PVE-backup-get-device-info-allow-caller-to-specify-f.patch b/debian/patches/pve/0067-PVE-backup-get-device-info-allow-caller-to-specify-f.patch
index 85240aa..6011524 100644
--- a/debian/patches/pve/0067-PVE-backup-get-device-info-allow-caller-to-specify-f.patch
+++ b/debian/patches/pve/0067-PVE-backup-get-device-info-allow-caller-to-specify-f.patch
@@ -15,7 +15,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 8789a0667a..755f1abcf1 100644
+index 87778f7e76..bd81621d51 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -719,7 +719,7 @@ static void create_backup_jobs_bh(void *opaque) {
diff --git a/debian/patches/pve/0068-PVE-backup-implement-backup-access-setup-and-teardow.patch b/debian/patches/pve/0068-PVE-backup-implement-backup-access-setup-and-teardow.patch
index ed39fa4..9e665ca 100644
--- a/debian/patches/pve/0068-PVE-backup-implement-backup-access-setup-and-teardow.patch
+++ b/debian/patches/pve/0068-PVE-backup-implement-backup-access-setup-and-teardow.patch
@@ -47,7 +47,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  create mode 100644 pve-backup.h
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 755f1abcf1..091b5bd231 100644
+index bd81621d51..78ed6c980c 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -1,4 +1,5 @@
@@ -396,10 +396,10 @@ index 0000000000..4033bc848f
 +
 +#endif /* PVE_BACKUP_H */
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index c581f1f238..3f092221ce 100644
+index 9bdcfa31ea..8d499650a8 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1019,6 +1019,9 @@
+@@ -1023,6 +1023,9 @@
  #
  # @pbs-library-version: Running version of libproxmox-backup-qemu0 library.
  #
@@ -409,7 +409,7 @@ index c581f1f238..3f092221ce 100644
  # @backup-fleecing: Whether backup fleecing is supported or not.
  #
  # @backup-max-workers: Whether the 'max-workers' @BackupPerf setting is
-@@ -1032,6 +1035,7 @@
+@@ -1036,6 +1039,7 @@
              'pbs-dirty-bitmap-migration': 'bool',
              'pbs-masterkey': 'bool',
              'pbs-library-version': 'str',
@@ -417,7 +417,7 @@ index c581f1f238..3f092221ce 100644
              'backup-fleecing': 'bool',
              'backup-max-workers': 'bool' } }
  
-@@ -1098,6 +1102,51 @@
+@@ -1102,6 +1106,51 @@
  ##
  { 'command': 'query-pbs-bitmap-info', 'returns': ['PBSBitmapInfo'] }
  
@@ -470,18 +470,18 @@ index c581f1f238..3f092221ce 100644
  # @BlockDeviceTimedStats:
  #
 diff --git a/system/runstate.c b/system/runstate.c
-index c2c9afa905..6f93d7c2fb 100644
+index 272801d307..73026a3884 100644
 --- a/system/runstate.c
 +++ b/system/runstate.c
 @@ -60,6 +60,7 @@
- #include "sysemu/sysemu.h"
- #include "sysemu/tpm.h"
+ #include "system/system.h"
+ #include "system/tpm.h"
  #include "trace.h"
 +#include "pve-backup.h"
  
  static NotifierList exit_notifiers =
      NOTIFIER_LIST_INITIALIZER(exit_notifiers);
-@@ -920,6 +921,11 @@ void qemu_cleanup(int status)
+@@ -921,6 +922,11 @@ void qemu_cleanup(int status)
       * requests happening from here on anyway.
       */
      bdrv_drain_all_begin();
diff --git a/debian/patches/pve/0069-PVE-backup-factor-out-get_single_device_info-helper.patch b/debian/patches/pve/0069-PVE-backup-factor-out-get_single_device_info-helper.patch
index 367f78d..85346c3 100644
--- a/debian/patches/pve/0069-PVE-backup-factor-out-get_single_device_info-helper.patch
+++ b/debian/patches/pve/0069-PVE-backup-factor-out-get_single_device_info-helper.patch
@@ -11,7 +11,7 @@ Sigend-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  1 file changed, 53 insertions(+), 37 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 091b5bd231..8b7414f057 100644
+index 78ed6c980c..681d25b97e 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -760,6 +760,57 @@ static bool fleecing_all(const char *device_id)
diff --git a/debian/patches/pve/0070-PVE-backup-implement-bitmap-support-for-external-bac.patch b/debian/patches/pve/0070-PVE-backup-implement-bitmap-support-for-external-bac.patch
index ea810af..597eabe 100644
--- a/debian/patches/pve/0070-PVE-backup-implement-bitmap-support-for-external-bac.patch
+++ b/debian/patches/pve/0070-PVE-backup-implement-bitmap-support-for-external-bac.patch
@@ -52,11 +52,11 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  4 files changed, 220 insertions(+), 16 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 8b7414f057..0490d1f421 100644
+index 681d25b97e..bd4d5e2579 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -15,6 +15,7 @@
- #include "qapi/qmp/qdict.h"
+ #include "qobject/qdict.h"
  #include "qapi/qmp/qerror.h"
  #include "qemu/cutils.h"
 +#include "qemu/error-report.h"
@@ -387,10 +387,10 @@ index 4033bc848f..9ebeef7c8f 100644
  
  #endif /* PVE_BACKUP_H */
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 3f092221ce..873db3f276 100644
+index 8d499650a8..61307ed1d7 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1114,9 +1114,33 @@
+@@ -1118,9 +1118,33 @@
  #
  # @size: the size of the block device in bytes.
  #
@@ -425,7 +425,7 @@ index 3f092221ce..873db3f276 100644
  
  ##
  # @backup-access-setup:
-@@ -1126,14 +1150,13 @@
+@@ -1130,14 +1154,13 @@
  #
  # @target-id: the unique ID of the backup target.
  #
@@ -442,7 +442,7 @@ index 3f092221ce..873db3f276 100644
    'returns': [ 'BackupAccessInfo' ], 'coroutine': true }
  
  ##
-@@ -1143,8 +1166,11 @@
+@@ -1147,8 +1170,11 @@
  #
  # @target-id: the ID of the backup target.
  #
@@ -456,10 +456,10 @@ index 3f092221ce..873db3f276 100644
  
  ##
 diff --git a/system/runstate.c b/system/runstate.c
-index 6f93d7c2fb..ef3277930f 100644
+index 73026a3884..cf775213bd 100644
 --- a/system/runstate.c
 +++ b/system/runstate.c
-@@ -925,7 +925,7 @@ void qemu_cleanup(int status)
+@@ -926,7 +926,7 @@ void qemu_cleanup(int status)
       * The backup access is set up by a QMP command, but is neither owned by a monitor nor
       * associated to a BlockBackend. Need to tear it down manually here.
       */
diff --git a/debian/patches/pve/0071-PVE-backup-backup-access-api-indicate-situation-wher.patch b/debian/patches/pve/0071-PVE-backup-backup-access-api-indicate-situation-wher.patch
index 3c182e0..d33d173 100644
--- a/debian/patches/pve/0071-PVE-backup-backup-access-api-indicate-situation-wher.patch
+++ b/debian/patches/pve/0071-PVE-backup-backup-access-api-indicate-situation-wher.patch
@@ -17,7 +17,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  2 files changed, 13 insertions(+), 2 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 0490d1f421..8909842292 100644
+index bd4d5e2579..788647a22d 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -1119,7 +1119,11 @@ BackupAccessInfoList *coroutine_fn qmp_backup_access_setup(
@@ -34,10 +34,10 @@ index 0490d1f421..8909842292 100644
                  /* track clean chunks as reused */
                  dirty = MIN(bdrv_get_dirty_count(bitmap), di->size);
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 873db3f276..58586170d9 100644
+index 61307ed1d7..d94c856160 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1067,9 +1067,16 @@
+@@ -1071,9 +1071,16 @@
  #           base snapshot did not match the base given for the current job or
  #           the crypt mode has changed.
  #
diff --git a/debian/patches/pve/0072-PVE-backup-backup-access-api-explicit-bitmap-mode-pa.patch b/debian/patches/pve/0072-PVE-backup-backup-access-api-explicit-bitmap-mode-pa.patch
index b9346e4..5d38ad2 100644
--- a/debian/patches/pve/0072-PVE-backup-backup-access-api-explicit-bitmap-mode-pa.patch
+++ b/debian/patches/pve/0072-PVE-backup-backup-access-api-explicit-bitmap-mode-pa.patch
@@ -15,7 +15,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
  2 files changed, 35 insertions(+), 2 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 8909842292..18bcf29533 100644
+index 788647a22d..f657aba68d 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -1043,7 +1043,16 @@ BackupAccessInfoList *coroutine_fn qmp_backup_access_setup(
@@ -50,10 +50,10 @@ index 8909842292..18bcf29533 100644
              BdrvDirtyBitmap *old_bitmap = bdrv_find_dirty_bitmap(di->bs, old_bitmap_name);
              if (!old_bitmap) {
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 58586170d9..09beb3217c 100644
+index d94c856160..cde92071a1 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1145,9 +1145,27 @@
+@@ -1149,9 +1149,27 @@
  #     in the result to see if you can actually re-use the bitmap or if it had to
  #     be newly created.
  #
diff --git a/debian/patches/pve/0073-PVE-backup-backup-access-api-simplify-bitmap-logic.patch b/debian/patches/pve/0073-PVE-backup-backup-access-api-simplify-bitmap-logic.patch
index ac22dc1..1074469 100644
--- a/debian/patches/pve/0073-PVE-backup-backup-access-api-simplify-bitmap-logic.patch
+++ b/debian/patches/pve/0073-PVE-backup-backup-access-api-simplify-bitmap-logic.patch
@@ -20,7 +20,7 @@ Reviewed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
  2 files changed, 26 insertions(+), 61 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index 18bcf29533..0ea0343b22 100644
+index f657aba68d..0450303017 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
 @@ -74,7 +74,6 @@ static struct PVEBackupState {
@@ -168,10 +168,10 @@ index 18bcf29533..0ea0343b22 100644
      }
      g_list_free(backup_state.di_list);
 diff --git a/qapi/block-core.json b/qapi/block-core.json
-index 09beb3217c..02c043f0f7 100644
+index cde92071a1..2fb51215f2 100644
 --- a/qapi/block-core.json
 +++ b/qapi/block-core.json
-@@ -1140,18 +1140,12 @@
+@@ -1144,18 +1144,12 @@
  #
  # @device: the block device name.
  #
@@ -192,7 +192,7 @@ index 09beb3217c..02c043f0f7 100644
  
  ##
  # @BackupAccessSetupBitmapMode:
-@@ -1175,7 +1169,10 @@
+@@ -1179,7 +1173,10 @@
  #
  # @target-id: the unique ID of the backup target.
  #
diff --git a/debian/patches/series b/debian/patches/series
index 18cd6ba..fd151eb 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,14 +1,5 @@
 extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch
 extra/0002-ide-avoid-potential-deadlock-when-draining-during-tr.patch
-extra/0003-tcg-Reset-free_temps-before-tcg_optimize.patch
-extra/0004-target-i386-Reset-TSCs-of-parked-vCPUs-too-on-VM-res.patch
-extra/0005-i386-cpu-Mark-avx10_version-filtered-when-prefix-is-.patch
-extra/0006-net-Fix-announce_self.patch
-extra/0007-net-dump-Correctly-compute-Ethernet-packet-offset.patch
-extra/0008-pci-acpi-Windows-PCI-Label-Id-bug-workaround.patch
-extra/0009-hw-usb-hcd-xhci-pci-Use-modulo-to-select-MSI-vector-.patch
-extra/0010-pci-ensure-valid-link-status-bits-for-downstream-por.patch
-extra/0011-pci-msix-Fix-msix-pba-read-vector-poll-end-calculati.patch
 bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch
 bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch
 bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch
diff --git a/qemu b/qemu
index ae35f03..ff3419c 160000
--- a/qemu
+++ b/qemu
@@ -1 +1 @@
-Subproject commit ae35f033b874c627d81d51070187fbf55f0bf1a7
+Subproject commit ff3419cbacdc9ad0715c716afeed65bb21a2bbbc
-- 
2.39.5





More information about the pve-devel mailing list