Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: f1bf3be14bd5d6e6a2cfbbe64cdd4d58a8595d68
      
https://github.com/qemu/qemu/commit/f1bf3be14bd5d6e6a2cfbbe64cdd4d58a8595d68
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: remove outdated comments about AioContext locking

AioContext locking was removed in commit b49f4755c7 ("block: remove
AioContext locking").

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-2-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: e1d681b3e1d8256047dbfc6d2c796028b9694eaf
      
https://github.com/qemu/qemu/commit/e1d681b3e1d8256047dbfc6d2c796028b9694eaf
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: move drain outside of read-locked bdrv_reopen_queue_child()

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

More granular draining is not trivially possible, because
bdrv_reopen_queue_child() can recursively call itself.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-3-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: d4c5f8c980f1073356d2f18d51dc68d42bebb59d
      
https://github.com/qemu/qemu/commit/d4c5f8c980f1073356d2f18d51dc68d42bebb59d
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block/snapshot.c
    M blockdev.c
    M qemu-img.c

  Log Message:
  -----------
  block/snapshot: move drain outside of read-locked bdrv_snapshot_delete()

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

More granular draining is not trivially possible, because
bdrv_snapshot_delete() can recursively call itself.

The return value of bdrv_all_delete_snapshot() changes from -1 to
-errno propagated from failed sub-calls. This is fine for the existing
callers of bdrv_all_delete_snapshot().

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-4-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 841998e08650f5b4476fa2d1eb84a592ab405f51
      
https://github.com/qemu/qemu/commit/841998e08650f5b4476fa2d1eb84a592ab405f51
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: move drain outside of read-locked bdrv_inactivate_recurse()

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

More granular draining is not trivially possible, because
bdrv_inactivate_recurse() can recursively call itself.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-5-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 3758733959af93b5eb3283659d868ad5b24152b4
      
https://github.com/qemu/qemu/commit/3758733959af93b5eb3283659d868ad5b24152b4
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: mark bdrv_parent_change_aio_context() GRAPH_RDLOCK

This is a small step in preparation to mark bdrv_drained_begin() as
GRAPH_UNLOCKED. More concretely, it allows marking the
change_aio_ctx() callback GRAPH_RDLOCK_PTR, which is the next step.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-6-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 844d550d09ac29ff2b1b49069587ae6a989df31d
      
https://github.com/qemu/qemu/commit/844d550d09ac29ff2b1b49069587ae6a989df31d
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/block-backend.c
    M blockjob.c
    M include/block/block_int-common.h

  Log Message:
  -----------
  block: mark change_aio_ctx() callback and instances as GRAPH_RDLOCK(_PTR)

This is a small step in preparation to mark bdrv_drained_begin() as
GRAPH_UNLOCKED. More concretely, it is in preparation to move the
drain out of bdrv_change_aio_context() and marking that function as
GRAPH_RDLOCK.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-7-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 469422c45b3a816eaf36e7edc895c81e0f3d38bb
      
https://github.com/qemu/qemu/commit/469422c45b3a816eaf36e7edc895c81e0f3d38bb
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M include/block/block-global-state.h

  Log Message:
  -----------
  block: mark bdrv_child_change_aio_context() GRAPH_RDLOCK

This is a small step in preparation to mark bdrv_drained_begin() as
GRAPH_UNLOCKED. More concretely, it is in preparation to move the
drain out of bdrv_change_aio_context() and marking that function as
GRAPH_RDLOCK.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-8-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 91ba0e1c382bd4a4b9c6a200f8a175d6ff30ab99
      
https://github.com/qemu/qemu/commit/91ba0e1c382bd4a4b9c6a200f8a175d6ff30ab99
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M include/block/block_int-common.h

  Log Message:
  -----------
  block: move drain outside of bdrv_change_aio_context() and mark GRAPH_RDLOCK

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

Note that even if bdrv_drained_begin() were already marked as
GRAPH_UNLOCKED, TSA would not complain about the instance in
bdrv_change_aio_context() before this change, because it is preceded
by a bdrv_graph_rdunlock_main_loop() call. It is not correct to
release the lock here, and in case the caller holds a write lock, it
wouldn't actually release the lock.

In combination with block-stream, there is a deadlock that can happen
because of this [0]. In particular, it can happen that
main thread              IO thread
1. acquires write lock
                         in blk_co_do_preadv_part():
                         2. have non-zero blk->in_flight
                         3. try to acquire read lock
4. begin drain

Steps 3 and 4 might be switched. Draining will poll and get stuck,
because it will see the non-zero in_flight counter. But the IO thread
will not make any progress either, because it cannot acquire the read
lock.

After this change, all paths to bdrv_change_aio_context() drain:
bdrv_change_aio_context() is called by:
1. bdrv_child_cb_change_aio_ctx() which is only called via the
   change_aio_ctx() callback, see below.
2. bdrv_child_change_aio_context(), see below.
3. bdrv_try_change_aio_context(), where a drained section is
   introduced.

The change_aio_ctx() callback is called by:
1. bdrv_attach_child_common_abort(), where a drained section is
   introduced.
2. bdrv_attach_child_common(), where a drained section is introduced.
3. bdrv_parent_change_aio_context(), see below.

bdrv_child_change_aio_context() is called by:
1. bdrv_change_aio_context(), i.e. recursive, so being in a drained
   section is invariant.
2. child_job_change_aio_ctx(), which is only called via the
   change_aio_ctx() callback, see above.

bdrv_parent_change_aio_context() is called by:
1. bdrv_change_aio_context(), i.e. recursive, so being in a drained
   section is invariant.

This resolves all code paths. Note that bdrv_attach_child_common()
and bdrv_attach_child_common_abort() hold the graph write lock and
callers of bdrv_try_change_aio_context() might too, so they are not
actually allowed to drain either. This will be addressed in the
following commits.

More granular draining is not trivially possible, because
bdrv_change_aio_context() can recursively call itself e.g. via
bdrv_child_change_aio_context().

[0]: 
https://lore.kernel.org/qemu-devel/73839c04-7616-407e-b057-80ca69e63...@virtuozzo.com/

Reported-by: Andrey Drobyshev <andrey.drobys...@virtuozzo.com>
Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-9-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: a1ea8eb5912256c0b2be16fae5d3786aebc80cb1
      
https://github.com/qemu/qemu/commit/a1ea8eb5912256c0b2be16fae5d3786aebc80cb1
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M blockdev.c
    M include/block/block-global-state.h
    M tests/unit/test-bdrv-drain.c

  Log Message:
  -----------
  block: move drain outside of bdrv_try_change_aio_context()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

Convert the function to a _locked() version that has to be called with
the graph lock held and add a convenience wrapper that has to be
called with the graph unlocked, which drains and takes the lock
itself. Since bdrv_try_change_aio_context() is global state code, the
wrapper is too.

Callers are adapted to use the appropriate variant, depending on
whether the caller already holds the lock. In the
test_set_aio_context() unit test, prior drains can be removed, because
draining already happens inside the new wrapper.

Note that bdrv_attach_child_common_abort(), bdrv_attach_child_common()
and bdrv_root_unref_child() hold the graph lock and are not actually
allowed to drain either. This will be addressed in the following
commits.

Functions like qmp_blockdev_mirror() query the nodes to act on before
draining and locking. In theory, draining could invalidate those nodes.
This kind of issue is not addressed by these commits.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-10-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 2b833595aa21679145cfe67ba720113b165c19ef
      
https://github.com/qemu/qemu/commit/2b833595aa21679145cfe67ba720113b165c19ef
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: move drain outside of bdrv_attach_child_common(_abort)()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The function bdrv_attach_child_common_abort() is used only as the
abort callback in bdrv_attach_child_common_drv transactions, so the
tran_finalize() calls of such transactions need to be in drained
sections too.

All code paths are covered:
The bdrv_attach_child_common_drv transactions are only used in
bdrv_attach_child_common(), so it is enough to check callers of
bdrv_attach_child_common() following the transactions.

bdrv_attach_child_common() is called by:
1. bdrv_attach_child_noperm(), which does not finalize the
   transaction yet.
2. bdrv_root_attach_child(), where a drained section is introduced.

bdrv_attach_child_noperm() is called by:
1. bdrv_attach_child(), where a drained section is introduced.
2. bdrv_set_file_or_backing_noperm(), which does not finalize the
   transaction yet.
3. bdrv_append(), where a drained section is introduced.

bdrv_set_file_or_backing_noperm() is called by:
1. bdrv_set_backing_hd_drained(), where a drained section is
   introduced.
2. bdrv_reopen_parse_file_or_backing(), which does not finalize the
   transaction yet. Draining the old child bs currently happens under
   the graph lock there. This is replaced with an assertion, because
   the drain will be moved further up to the caller.

bdrv_reopen_parse_file_or_backing() is called by:
1. bdrv_reopen_prepare(), which does not finalize the transaction yet.

bdrv_reopen_prepare() is called by:
1. bdrv_reopen_multiple(), which does finalize the transaction. It is
   called after bdrv_reopen_queue(), which starts a drained section.
   The drained section ends, when bdrv_reopen_queue_free() is called
   at the end of bdrv_reopen_multiple().

This resolves all code paths.

The functions bdrv_set_backing_hd_drained(), bdrv_attach_child() and
bdrv_root_attach_child() run under the graph lock, so they are not
actually allowed to drain. This will be addressed in the following
commits.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-11-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: e66dbda11eab2b4a091d470f3508a4d6ca60eaf5
      
https://github.com/qemu/qemu/commit/e66dbda11eab2b4a091d470f3508a4d6ca60eaf5
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/stream.c

  Log Message:
  -----------
  block: move drain outside of bdrv_set_backing_hd_drained()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The function bdrv_set_backing_hd_drained() holds the graph lock, so it
is not allowed to drain. It is called by:
1. bdrv_set_backing_hd(), where a drained section is introduced,
   replacing the previously present bs-specific drains.
2. stream_prepare(), where a drained section is introduced replacing
   the previously present bs-specific drains.

The drain_bs variable in bdrv_set_backing_hd_drained() is now
superfluous and thus dropped.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-12-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: ffdcd081f52544f065020c780a6c522dace6b0af
      
https://github.com/qemu/qemu/commit/ffdcd081f52544f065020c780a6c522dace6b0af
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/backup.c
    M block/block-backend.c
    M block/commit.c
    M block/mirror.c
    M block/stream.c
    M blockjob.c
    M include/block/blockjob.h
    M tests/unit/test-bdrv-drain.c

  Log Message:
  -----------
  block: move drain outside of bdrv_root_attach_child()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The function bdrv_root_attach_child() runs under the graph lock, so it
is not allowed to drain. It is called by:
1. blk_insert_bs(), where a drained section is introduced.
2. block_job_add_bdrv(), which holds the graph lock itself.

block_job_add_bdrv() is called by:
1. mirror_start_job()
2. stream_start()
3. commit_start()
4. backup_job_create()
5. block_job_create()
6. In the test_blockjob_common_drain_node() unit test

In all callers, a drained section is introduced.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-13-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 77f3965ba7fed5b35212171a1e41c20c05a7ef11
      
https://github.com/qemu/qemu/commit/77f3965ba7fed5b35212171a1e41c20c05a7ef11
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/quorum.c
    M block/replication.c
    M tests/unit/test-bdrv-drain.c
    M tests/unit/test-bdrv-graph-mod.c

  Log Message:
  -----------
  block: move drain outside of bdrv_attach_child()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The function bdrv_attach_child() runs under the graph lock, so it is
not allowed to drain. It is called by:
1. replication_start()
2. quorum_add_child()
3. bdrv_open_child_common()
4. Throughout test-bdrv-graph-mod.c and test-bdrv-drain.c unit tests.

In all callers, a drained section is introduced.

The function quorum_add_child() runs under the graph lock, so it is
not actually allowed to drain. This will be addressed by the following
commit.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Message-ID: <20250530151125.955508-14-f.eb...@proxmox.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 0414930d3adfa89299eaea5ce92accab15d9fba5
      
https://github.com/qemu/qemu/commit/0414930d3adfa89299eaea5ce92accab15d9fba5
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/quorum.c
    M blockdev.c
    M include/block/block_int-common.h

  Log Message:
  -----------
  block: move drain outside of quorum_add_child()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The quorum_add_child() callback runs under the graph lock, so it is
not allowed to drain. It is only called as the .bdrv_add_child()
callback, which is only called in the bdrv_add_child() function, which
also runs under the graph lock.

The bdrv_add_child() function is called by qmp_x_blockdev_change(),
where a drained section is introduced.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-15-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: b13f54654546cbc0661d3fe9d25f7543535c2bee
      
https://github.com/qemu/qemu/commit/b13f54654546cbc0661d3fe9d25f7543535c2bee
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/block-backend.c
    M block/qcow2.c
    M block/quorum.c
    M block/replication.c
    M block/snapshot.c
    M block/vmdk.c
    M blockjob.c
    M tests/unit/test-bdrv-drain.c

  Log Message:
  -----------
  block: move drain outside of bdrv_root_unref_child()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

bdrv_root_unref_child() is called by:
1. blk_remove_bs(), where a drained section is introduced.
2. bdrv_unref_child(), which runs under the graph lock, so the drain
   will be moved further up to its callers.
3. block_job_remove_all_bdrv(), where a drained section is introduced.

For all callers of bdrv_unref_child() and its generated
bdrv_co_unref_child() coroutine variant, a drained section is
introduced, they are not explicilty listed here. The caller
quorum_del_child() holds the graph lock, so it is not actually allowed
to drain. This will be addressed in the next commit.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-16-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: d75f8ed1d7fc27cf1643e549cd006a68d3bf6ef1
      
https://github.com/qemu/qemu/commit/d75f8ed1d7fc27cf1643e549cd006a68d3bf6ef1
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block.c
    M block/quorum.c
    M include/block/block_int-common.h

  Log Message:
  -----------
  block: move drain outside of quorum_del_child()

The quorum_del_child() callback runs under the graph lock, so it is
not allowed to drain. It is only called as the .bdrv_del_child()
callback, which is only called in the bdrv_del_child() function, which
also runs under the graph lock.

The bdrv_del_child() function is called by qmp_x_blockdev_change().
A drained section was already introduced there by commit "block: move
drain out of quorum_add_child()".

This finally finishes moving out the drain to places that are not
under the graph lock started in "block: move draining out of
bdrv_change_aio_context() and mark GRAPH_RDLOCK".

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-17-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 6f101614f95c889399352b8301917c0ac7919ae7
      
https://github.com/qemu/qemu/commit/6f101614f95c889399352b8301917c0ac7919ae7
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev: drain while unlocked in internal_snapshot_action()

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-18-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 195a8a946a8681dfe7e8aa8d49db415693db5311
      
https://github.com/qemu/qemu/commit/195a8a946a8681dfe7e8aa8d49db415693db5311
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev: drain while unlocked in external_snapshot_action()

This is in preparation to mark bdrv_drained_begin() as GRAPH_UNLOCKED.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-19-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: fc1d2f3eac7946658b160db0b813b81288fb1778
      
https://github.com/qemu/qemu/commit/fc1d2f3eac7946658b160db0b813b81288fb1778
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M include/block/block-global-state.h
    M include/block/block-io.h

  Log Message:
  -----------
  block: mark bdrv_drained_begin() and friends as GRAPH_UNLOCKED

All of bdrv_drain_all_begin(), bdrv_drain_all() and
bdrv_drained_begin() poll and are not allowed to be called with the
block graph lock held. Mark the function as such.

Suggested-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-20-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: ed8c62927e8facebb1e41b417daee3109e398712
      
https://github.com/qemu/qemu/commit/ed8c62927e8facebb1e41b417daee3109e398712
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M tests/qemu-iotests/tests/graph-changes-while-io

  Log Message:
  -----------
  iotests/graph-changes-while-io: remove image file after test

Suggested-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-21-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 09d98a018e1fd2db0bb73bbe9b4a7110c8ae354f
      
https://github.com/qemu/qemu/commit/09d98a018e1fd2db0bb73bbe9b4a7110c8ae354f
  Author: Andrey Drobyshev <andrey.drobys...@virtuozzo.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M tests/qemu-iotests/tests/graph-changes-while-io
    M tests/qemu-iotests/tests/graph-changes-while-io.out

  Log Message:
  -----------
  iotests/graph-changes-while-io: add test case with removal of lower snapshot

This case is catching potential deadlock which takes place when job-dismiss
is issued when I/O requests are processed in a separate iothread.

See https://mail.gnu.org/archive/html/qemu-devel/2025-04/msg04421.html

Signed-off-by: Andrey Drobyshev <andrey.drobys...@virtuozzo.com>
[FE: re-use top image and rename snap1->mid as suggested by Kevin Wolf
     remove image file after test as suggested by Kevin Wolf
     add type annotation for function argument to make mypy happy]
Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-22-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: b04b7c79c478743d414a684673519431b022c808
      
https://github.com/qemu/qemu/commit/b04b7c79c478743d414a684673519431b022c808
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M block/io.c

  Log Message:
  -----------
  block/io: remove duplicate GLOBAL_STATE_CODE() in bdrv_do_drained_end()

Both commit ab61335025 ("block: drain from main loop thread in
bdrv_co_yield_to_drain()") and commit d05ab380db ("block: Mark drain
related functions GRAPH_RDLOCK") introduced a GLOBAL_STATE_CODE()
macro in bdrv_do_drained_end(). The assertion of being in the main
thread cannot change here, so keep only the earlier instance.

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250530151125.955508-23-f.eb...@proxmox.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: 2e887187454e57d04522099d4f04d17137d6e05c
      
https://github.com/qemu/qemu/commit/2e887187454e57d04522099d4f04d17137d6e05c
  Author: Stefan Hajnoczi <stefa...@redhat.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M tests/qemu-iotests/240
    M tests/qemu-iotests/240.out

  Log Message:
  -----------
  iotests: fix 240

Commit 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
removed the limitation that virtio-scsi devices must successfully set
the AioContext on their BlockBackends. This was made possible thanks to
the QEMU multi-queue block layer.

This change broke qemu-iotests 240, which checks that adding a
virtio-scsi device with a drive that is already in another AioContext
will fail.

Update the test to take the relaxed behavior into account. I considered
removing this test case entirely, but the code coverage still seems
valuable.

Fixes: 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
Reported-by: Thomas Huth <th...@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
Reviewed-by: Eric Blake <ebl...@redhat.com>
Tested-by: Eric Blake <ebl...@redhat.com>
Message-ID: <20250529203147.180338-1-stefa...@redhat.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: eef2dd03f948a512499775043bdc0c5c88d8a2dd
      
https://github.com/qemu/qemu/commit/eef2dd03f948a512499775043bdc0c5c88d8a2dd
  Author: Fiona Ebner <f.eb...@proxmox.com>
  Date:   2025-06-04 (Wed, 04 Jun 2025)

  Changed paths:
    M hw/core/qdev-properties-system.c

  Log Message:
  -----------
  hw/core/qdev-properties-system: Add missing return in set_drive_helper()

Currently, changing the 'drive' property of e.g. a scsi-hd object will
result in an assertion failure if the aio context of the block node
it's replaced with doesn't match the current aio context:

> bdrv_replace_child_noperm: Assertion `bdrv_get_aio_context(old_bs) ==
> bdrv_get_aio_context(new_bs)' failed.

The problematic scenario is already detected, but a 'return' statement
was missing.

Cc: qemu-sta...@nongnu.org
Fixes: d1a58c176a ("qdev: allow setting drive property for realized device")
Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
Message-ID: <20250523070211.280498-1-f.eb...@proxmox.com>
Reviewed-by: Daniel P. Berrangé <berra...@redhat.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Kevin Wolf <kw...@redhat.com>


  Commit: aca0a504522ec2e5d077bf78a2acdb165f1e0ae2
      
https://github.com/qemu/qemu/commit/aca0a504522ec2e5d077bf78a2acdb165f1e0ae2
  Author: Edmund Raile <edmund.ra...@protonmail.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/igd.c

  Log Message:
  -----------
  vfio/igd: OpRegion not found fix error typo

Signed-off-by: Edmund Raile <edmund.ra...@protonmail.com>
Reviewed-by: Tomita Moeko <tomitamo...@gmail.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/MFFbQoTpea_CK5ELq8oJ-a3Q57wo7ywQlrIqDvdIDKhUuCm59VUz2QzvdojO5r_wb_7SHifU0Kym3loj4eASPhdzYpjtiMCTePzyg1zrroo=@protonmail.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 493a06a2eda3346923f2aab760d8280c78039dc7
      
https://github.com/qemu/qemu/commit/493a06a2eda3346923f2aab760d8280c78039dc7
  Author: John Levon <john.le...@nutanix.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M include/hw/vfio/vfio-container-base.h

  Log Message:
  -----------
  vfio: add more VFIOIOMMUClass docs

Add some additional doc comments for these class methods.

Signed-off-by: John Levon <john.le...@nutanix.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250520162530.2194548-1-john.le...@nutanix.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 33528f255a710d394ec692de54baebff1f494b5b
      
https://github.com/qemu/qemu/commit/33528f255a710d394ec692de54baebff1f494b5b
  Author: John Levon <john.le...@nutanix.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/pci.c

  Log Message:
  -----------
  vfio: move more cleanup into vfio_pci_put_device()

All of the cleanup can be done in the same place, and vfio-user will
want to do the same.

Signed-off-by: John Levon <john.le...@nutanix.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250520150419.2172078-3-john.le...@nutanix.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 15399459467ff62fff7e28a554f44364fbf4204d
      
https://github.com/qemu/qemu/commit/15399459467ff62fff7e28a554f44364fbf4204d
  Author: John Levon <john.le...@nutanix.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/pci.c

  Log Message:
  -----------
  vfio: move config space read into vfio_pci_config_setup()

Small cleanup that reduces duplicate code for vfio-user and reduces the
size of vfio_realize(); while we're here, correct that name to
vfio_pci_realize().

Signed-off-by: John Levon <john.le...@nutanix.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250520150419.2172078-4-john.le...@nutanix.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: a483ad534734ad0c9e1fea34d959d0e62838b89e
      
https://github.com/qemu/qemu/commit/a483ad534734ad0c9e1fea34d959d0e62838b89e
  Author: John Levon <john.le...@nutanix.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/pci.c

  Log Message:
  -----------
  vfio: refactor out IRQ signalling setup

This makes for a slightly more readable vfio_msix_vector_do_use()
implementation, and we will rely on this shortly.

Signed-off-by: John Levon <john.le...@nutanix.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250520150419.2172078-5-john.le...@nutanix.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 1c729ca8860a5197da62d1fa68d6085a6ec0acd3
      
https://github.com/qemu/qemu/commit/1c729ca8860a5197da62d1fa68d6085a6ec0acd3
  Author: Zhenzhong Duan <zhenzhong.d...@intel.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/iommufd.c

  Log Message:
  -----------
  vfio/iommufd: Add comment emphasizing no movement of hiod->realize() call

The nested IOMMU support needs device and hwpt id which are generated
only after attachment. Hiod encapsulates these information in realize()
and passes to vIOMMU.

Suggested-by: Cédric Le Goater <c...@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250521110301.3313877-1-zhenzhong.d...@intel.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 0992ea07dbb58d347c37d31e65d87893280b7f23
      
https://github.com/qemu/qemu/commit/0992ea07dbb58d347c37d31e65d87893280b7f23
  Author: Tomita Moeko <tomitamo...@gmail.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/igd.c

  Log Message:
  -----------
  vfio/igd: Fix incorrect error propagation in vfio_pci_igd_opregion_detect()

In vfio_pci_igd_opregion_detect(), errp will be set when the device does
not have OpRegion or is hotplugged. This errp will be propagated to
pci_qdev_realize(), which interprets it as failure, causing unexpected
termination on devices without OpRegion like SR-IOV VFs or discrete
GPUs. Fix it by not setting errp in vfio_pci_igd_opregion_detect().

This patch also checks if the device has OpRegion before hotplug status
to prevent unwanted warning messages on non-IGD devices.

Fixes: c0273e77f2d7 ("vfio/igd: Detect IGD device by OpRegion")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2968
Reported-by: Edmund Raile <edmund.ra...@protonmail.com>
Link: 
https://lore.kernel.org/qemu-devel/30044d14-17ec-46e3-b9c3-63d27a5bd...@gmail.com
Tested-by: Edmund Raile <edmund.ra...@protonmail.com>
Signed-off-by: Tomita Moeko <tomitamo...@gmail.com>
Reviewed-by: Alex Williamson <alex.william...@redhat.com>
Reviewed-by: Corvin Köhne <c.koe...@beckhoff.com>
Link: 
https://lore.kernel.org/qemu-devel/20250522151636.20001-1-tomitamo...@gmail.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: e3353d63e15d0b1109257d55e265a889e8c508f8
      
https://github.com/qemu/qemu/commit/e3353d63e15d0b1109257d55e265a889e8c508f8
  Author: Steve Sistare <steven.sist...@oracle.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/listener.c
    M hw/virtio/vhost-vdpa.c
    M include/system/memory.h
    M system/memory.c

  Log Message:
  -----------
  vfio: return mr from vfio_get_xlat_addr

Modify memory_get_xlat_addr and vfio_get_xlat_addr to return the memory
region that the translated address is found in.  This will be needed by
CPR in a subsequent patch to map blocks using IOMMU_IOAS_MAP_FILE.

Also return the xlat offset, so we can simplify the interface by removing
the out parameters that can be trivially derived from mr and xlat.

Lastly, rename the functions to  to memory_translate_iotlb() and
vfio_translate_iotlb().

Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Acked-by: David Hildenbrand <da...@redhat.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: John Levon <john.le...@nutanix.com>
Acked-by: Michael S. Tsirkin <m...@redhat.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Link: 
https://lore.kernel.org/qemu-devel/1747661203-136490-1-git-send-email-steven.sist...@oracle.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 44d0acf834b090c2717934983ac7678a602b2da5
      
https://github.com/qemu/qemu/commit/44d0acf834b090c2717934983ac7678a602b2da5
  Author: John Levon <john.le...@nutanix.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/container-base.c
    M hw/vfio/container.c
    M hw/vfio/iommufd.c
    M hw/vfio/listener.c
    M include/hw/vfio/vfio-container-base.h

  Log Message:
  -----------
  vfio/container: pass MemoryRegion to DMA operations

Pass through the MemoryRegion to DMA operation handlers of vfio
containers. The vfio-user container will need this later, to translate
the vaddr into an offset for the dma map vfio-user message; CPR will
also will need this.

Originally-by: John Johnson <john.g.john...@oracle.com>
Signed-off-by: Jagannathan Raman <jag.ra...@oracle.com>
Signed-off-by: Elena Ufimtseva <elena.ufimts...@oracle.com>
Signed-off-by: John Levon <john.le...@nutanix.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Steve Sistare <steven.sist...@oracle.com>
Link: 
https://lore.kernel.org/qemu-devel/20250521215534.2688540-1-john.le...@nutanix.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 5c47679cb6e6d07cdc47b611f719df88308673aa
      
https://github.com/qemu/qemu/commit/5c47679cb6e6d07cdc47b611f719df88308673aa
  Author: Zhenzhong Duan <zhenzhong.d...@intel.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M backends/iommufd.c
    M backends/trace-events
    M include/system/iommufd.h

  Log Message:
  -----------
  backends/iommufd: Add a helper to invalidate user-managed HWPT

This helper passes cache invalidation request from guest to invalidate
stage-1 page table cache in host hardware.

Signed-off-by: Nicolin Chen <nicol...@nvidia.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Eric Auger <eric.au...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250604062115.4004200-2-zhenzhong.d...@intel.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 98962d62984440a3905e83492c33a854861def0f
      
https://github.com/qemu/qemu/commit/98962d62984440a3905e83492c33a854861def0f
  Author: Zhenzhong Duan <zhenzhong.d...@intel.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M backends/iommufd.c
    M hw/vfio/iommufd.c
    M include/system/iommufd.h

  Log Message:
  -----------
  vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD

Enhance HostIOMMUDeviceIOMMUFD object with 3 new members, specific
to the iommufd BE + 2 new class functions.

IOMMUFD BE includes IOMMUFD handle, devid and hwpt_id. IOMMUFD handle
and devid are used to allocate/free ioas and hwpt. hwpt_id is used to
re-attach IOMMUFD backed device to its default VFIO sub-system created
hwpt, i.e., when vIOMMU is disabled by guest. These properties are
initialized in hiod::realize() after attachment.

2 new class functions are [at|de]tach_hwpt(). They are used to
attach/detach hwpt. VFIO and VDPA can have different implementions,
so implementation will be in sub-class instead of HostIOMMUDeviceIOMMUFD,
e.g., in HostIOMMUDeviceIOMMUFDVFIO.

Add two wrappers host_iommu_device_iommufd_[at|de]tach_hwpt to wrap the
two functions.

Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Eric Auger <eric.au...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250604062115.4004200-3-zhenzhong.d...@intel.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: e50a3ead976d23bd1b4fdf50baea8df2303128a5
      
https://github.com/qemu/qemu/commit/e50a3ead976d23bd1b4fdf50baea8df2303128a5
  Author: Zhenzhong Duan <zhenzhong.d...@intel.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/iommufd.c

  Log Message:
  -----------
  vfio/iommufd: Implement [at|de]tach_hwpt handlers

Implement [at|de]tach_hwpt handlers in VFIO subsystem. vIOMMU
utilizes them to attach to or detach from hwpt on host side.

Signed-off-by: Yi Liu <yi.l....@intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Eric Auger <eric.au...@redhat.com>
Reviewed-by: Nicolin Chen <nicol...@nvidia.com>
Link: 
https://lore.kernel.org/qemu-devel/20250604062115.4004200-4-zhenzhong.d...@intel.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 1ab3d93fd24b9ca0f415bb7ef38c4a4e2e9e62ef
      
https://github.com/qemu/qemu/commit/1ab3d93fd24b9ca0f415bb7ef38c4a4e2e9e62ef
  Author: Zhenzhong Duan <zhenzhong.d...@intel.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/iommufd.c
    M include/system/host_iommu_device.h

  Log Message:
  -----------
  vfio/iommufd: Save vendor specific device info

Some device information returned by ioctl(IOMMU_GET_HW_INFO) are vendor
specific. Save them as raw data in a union supporting different vendors,
then vendor IOMMU can query the raw data with its fixed format for
capability directly.

Because IOMMU_GET_HW_INFO is only supported in linux, so declare those
capability related structures with CONFIG_LINUX.

Suggested-by: Eric Auger <eric.au...@redhat.com>
Suggested-by: Nicolin Chen <nicol...@nvidia.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Nicolin Chen <nicol...@nvidia.com>
Reviewed-by: Eric Auger <eric.au...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/20250604062115.4004200-5-zhenzhong.d...@intel.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 9942c711835f06805e82fbe9d1da98f6ff7b9311
      
https://github.com/qemu/qemu/commit/9942c711835f06805e82fbe9d1da98f6ff7b9311
  Author: Steve Sistare <steven.sist...@oracle.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Add reviewer for CPR

CPR is integrated with live migration, and has the same maintainers.
But, add a CPR section to add a reviewer.

Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Link: 
https://lore.kernel.org/qemu-devel/1748546679-154091-2-git-send-email-steven.sist...@oracle.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 2372f8d94ae27b1b8a1c5704c668baabd48d1c99
      
https://github.com/qemu/qemu/commit/2372f8d94ae27b1b8a1c5704c668baabd48d1c99
  Author: Steve Sistare <steven.sist...@oracle.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M hw/vfio/listener.c
    M include/hw/vfio/vfio-container-base.h

  Log Message:
  -----------
  vfio: vfio_find_ram_discard_listener

Define vfio_find_ram_discard_listener as a subroutine so additional calls to
it may be added in a subsequent patch.

Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Link: 
https://lore.kernel.org/qemu-devel/1748546679-154091-8-git-send-email-steven.sist...@oracle.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 3ed34463a2d8ab8aabfa1d612f12b56600c87983
      
https://github.com/qemu/qemu/commit/3ed34463a2d8ab8aabfa1d612f12b56600c87983
  Author: Steve Sistare <steven.sist...@oracle.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M MAINTAINERS
    M hw/vfio/container.c
    M hw/vfio/cpr.c
    M hw/vfio/iommufd.c
    R hw/vfio/vfio-cpr.h
    A include/hw/vfio/vfio-cpr.h

  Log Message:
  -----------
  vfio: move vfio-cpr.h

Move vfio-cpr.h to include/hw/vfio, because it will need to be included by
other files there.

Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
Reviewed-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Link: 
https://lore.kernel.org/qemu-devel/1748546679-154091-9-git-send-email-steven.sist...@oracle.com
Signed-off-by: Cédric Le Goater <c...@redhat.com>


  Commit: 83c2201fc47bd0dfa656bde7202bd0e2539d54a0
      
https://github.com/qemu/qemu/commit/83c2201fc47bd0dfa656bde7202bd0e2539d54a0
  Author: Stefan Hajnoczi <stefa...@redhat.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M block.c
    M block/backup.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/block-backend.c
    M block/commit.c
    M block/io.c
    M block/mirror.c
    M block/qcow2.c
    M block/quorum.c
    M block/replication.c
    M block/snapshot.c
    M block/stream.c
    M block/vmdk.c
    M blockdev.c
    M blockjob.c
    M hw/core/qdev-properties-system.c
    M include/block/block-global-state.h
    M include/block/block-io.h
    M include/block/block_int-common.h
    M include/block/blockjob.h
    M qemu-img.c
    M tests/qemu-iotests/240
    M tests/qemu-iotests/240.out
    M tests/qemu-iotests/tests/graph-changes-while-io
    M tests/qemu-iotests/tests/graph-changes-while-io.out
    M tests/unit/test-bdrv-drain.c
    M tests/unit/test-bdrv-graph-mod.c

  Log Message:
  -----------
  Merge tag 'for-upstream' of https://repo.or.cz/qemu/kevin into staging

Block layer patches

- Deadlock fixes: Do not drain while holding the graph lock
- qdev-properties-system: Fix assertion failure in set_drive_helper()
- iotests: fix 240

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCgAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmhAiH8RHGt3b2xmQHJl
# ZGhhdC5jb20ACgkQfwmycsiPL9asxBAAniUnM2ysT85wgi1+KUVcURYJWAOTyHUK
# CxKQFXALeNYb1of4OEvFGxTJV9fIi7lY2P6Fh+ANUvAk6r8mGk7PKTV7qyJcv0r0
# Xu5BXPRBtOVeQ1QtWc36NhUJ5Oo9AZdutXKuHtt0FjlL5bxOvwY40ddDhQcg0dWF
# H4Eozi9oPACCsjbkHU0JAkMAS9Vvn4FNuDjzCfu1AlAKQnY64xRwVQwQeOC5WzvB
# 6vUs0W/ZZS5T30rtdgXtRA+00CIPC00cF1DbeL9cZEN4Rkux7JPoosCQq8lZ9YsR
# EPsHbSve6cgJP/KB1UzBjcoKI4e+8Z3KBaYOC30F65dU6e7N1wZMjCHHK/gt5bxs
# 48qWautEyot1VKBHeXZQkqR8OXk5GlyfMnQfPre6gMaAJ4H6z8GHBwxidsB9G1Da
# 27tmpZP1DyPjcH0Btz+DmhFTABaG6pgRamDmdHNJdkBX1qydZ6A1UYKf0KZRsEIu
# B43dIJ4fL4riTc+vkR0SlakQvGNAvv559uvblkDp0/2wdUzE1U7g8+tuSrsP5I1x
# BMjPPgdV5iiPvOMEO0dl1HLGZi7ORd/3FJfzvWkzWlnw6ByArXmHceXGIvhgoyjR
# iT6XwmJ85Sl0F/3HlXgcgI86AnpieE0PE8nw3gBuw0rZFJChQuHUzxokLZ88U9VQ
# UePwpYPDn58=
# =tetv
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 04 Jun 2025 13:55:11 EDT
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kw...@redhat.com"
# gpg: Good signature from "Kevin Wolf <kw...@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* tag 'for-upstream' of https://repo.or.cz/qemu/kevin: (24 commits)
  hw/core/qdev-properties-system: Add missing return in set_drive_helper()
  iotests: fix 240
  block/io: remove duplicate GLOBAL_STATE_CODE() in bdrv_do_drained_end()
  iotests/graph-changes-while-io: add test case with removal of lower snapshot
  iotests/graph-changes-while-io: remove image file after test
  block: mark bdrv_drained_begin() and friends as GRAPH_UNLOCKED
  blockdev: drain while unlocked in external_snapshot_action()
  blockdev: drain while unlocked in internal_snapshot_action()
  block: move drain outside of quorum_del_child()
  block: move drain outside of bdrv_root_unref_child()
  block: move drain outside of quorum_add_child()
  block: move drain outside of bdrv_attach_child()
  block: move drain outside of bdrv_root_attach_child()
  block: move drain outside of bdrv_set_backing_hd_drained()
  block: move drain outside of bdrv_attach_child_common(_abort)()
  block: move drain outside of bdrv_try_change_aio_context()
  block: move drain outside of bdrv_change_aio_context() and mark GRAPH_RDLOCK
  block: mark bdrv_child_change_aio_context() GRAPH_RDLOCK
  block: mark change_aio_ctx() callback and instances as GRAPH_RDLOCK(_PTR)
  block: mark bdrv_parent_change_aio_context() GRAPH_RDLOCK
  ...

Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>


  Commit: 2a53c4f5c534a1ab825ba03e0d3ec45a7c2b90d8
      
https://github.com/qemu/qemu/commit/2a53c4f5c534a1ab825ba03e0d3ec45a7c2b90d8
  Author: Stefan Hajnoczi <stefa...@redhat.com>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M MAINTAINERS
    M backends/iommufd.c
    M backends/trace-events
    M hw/vfio/container-base.c
    M hw/vfio/container.c
    M hw/vfio/cpr.c
    M hw/vfio/igd.c
    M hw/vfio/iommufd.c
    M hw/vfio/listener.c
    M hw/vfio/pci.c
    R hw/vfio/vfio-cpr.h
    M hw/virtio/vhost-vdpa.c
    M include/hw/vfio/vfio-container-base.h
    A include/hw/vfio/vfio-cpr.h
    M include/system/host_iommu_device.h
    M include/system/iommufd.h
    M include/system/memory.h
    M system/memory.c

  Log Message:
  -----------
  Merge tag 'pull-vfio-20250605' of https://github.com/legoater/qemu into 
staging

vfio queue:

* Fixed OpRegion detection in IGD
* Added prerequisite rework for IOMMU nesting support
* Added prerequisite rework for vfio-user
* Added prerequisite rework for VFIO live update
* Modified memory_get_xlat_addr() to return a MemoryRegion

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmhBWBgACgkQUaNDx8/7
# 7KEg8RAAyNuFzKs1dUHc24QeApjnd56PF3DhmjT++19hh2VH/CpKeJkWnNuWQupo
# 7yqQmYuxYMrHrh0ncdv5S+sIU2fHGMuxsL4d129H3/BPaAr92Zgtk2ID5deFTG9c
# Ns5sC/1Z6UyRqgh5PRxDmkfMVxyJ73dofTWyAQGNwwt5ASV876JEApMSO4smGpyy
# cu0tpya6WVaYp/Ry2MjpK1N6utr1pJgzIVWQ2ww595OtaqQMa9OD5Sepafp5kf+y
# ZqihINpMY9eGuu4olDQYcaUKThH0DAWR4Eb6ndgG9gOSh0M2YI0YygvG9q9giQzA
# WXlmM2e9ZVAULl2Y8Eb4PVybyk3U9eDK3MzI9PzKBLNdROjJNwNK9ahjtFgPWN9H
# cIYnBEnTP2d1e4BOtJIoQRXdDFOQHqzzEPwFhqMLEnzu1beVRnnt8SiYPKV/pEO0
# ZEAzWka7WN27DDoqgSNzc8ptIzbM6yO66dvLwOhXyr+WyqVaiehxhvfZiEbpeIWa
# 6LuCnyJkgEcAX7I7BaqZxAVvBqwR0z0TElfxadAj6YXgjVEUTahaBV+6M7bBDoid
# BlXTFBrdhlTOjrzV0LkZe9ac9VbxPc9fW/uGoYntD0cRsuWqpDpgNoDlmHDjVudz
# b4TCVksIsfrVkNqQclXfYuSNMZV0KwBADD1wVqZ42nyx1KcgqMQ=
# =tHwb
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 05 Jun 2025 04:40:56 EDT
# gpg:                using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1
# gpg: Good signature from "Cédric Le Goater <c...@redhat.com>" [full]
# gpg:                 aka "Cédric Le Goater <c...@kaod.org>" [full]
# Primary key fingerprint: A0F6 6548 F048 95EB FE6B  0B60 51A3 43C7 CFFB ECA1

* tag 'pull-vfio-20250605' of https://github.com/legoater/qemu:
  vfio: move vfio-cpr.h
  vfio: vfio_find_ram_discard_listener
  MAINTAINERS: Add reviewer for CPR
  vfio/iommufd: Save vendor specific device info
  vfio/iommufd: Implement [at|de]tach_hwpt handlers
  vfio/iommufd: Add properties and handlers to TYPE_HOST_IOMMU_DEVICE_IOMMUFD
  backends/iommufd: Add a helper to invalidate user-managed HWPT
  vfio/container: pass MemoryRegion to DMA operations
  vfio: return mr from vfio_get_xlat_addr
  vfio/igd: Fix incorrect error propagation in vfio_pci_igd_opregion_detect()
  vfio/iommufd: Add comment emphasizing no movement of hiod->realize() call
  vfio: refactor out IRQ signalling setup
  vfio: move config space read into vfio_pci_config_setup()
  vfio: move more cleanup into vfio_pci_put_device()
  vfio: add more VFIOIOMMUClass docs
  vfio/igd: OpRegion not found fix error typo

Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>


Compare: https://github.com/qemu/qemu/compare/f8a113701dd2...2a53c4f5c534

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications

Reply via email to