74 lines
2.7 KiB
Diff
74 lines
2.7 KiB
Diff
|
From 8f27893a37e55a31180bb66cd9eae7199911881b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Volker=20R=C3=BCmelin?= <vr_qemu@t-online.de>
|
||
|
Date: Fri, 29 Dec 2023 21:38:54 +0100
|
||
|
Subject: [PATCH 060/101] hw/vfio: fix iteration over global VFIODevice list
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
RH-Author: Eric Auger <eric.auger@redhat.com>
|
||
|
RH-MergeRequest: 211: IOMMUFD backend backport
|
||
|
RH-Jira: RHEL-19302 RHEL-21057
|
||
|
RH-Acked-by: Cédric Le Goater <clg@redhat.com>
|
||
|
RH-Acked-by: Sebastian Ott <sebott@redhat.com>
|
||
|
RH-Commit: [59/67] f926e1233c8c5ad418e8794b1a103371c9dc5eb0 (eauger1/centos-qemu-kvm)
|
||
|
|
||
|
Commit 3d779abafe ("vfio/common: Introduce a global VFIODevice list")
|
||
|
introduced a global VFIODevice list, but forgot to update the list
|
||
|
element field name when iterating over the new list. Change the code
|
||
|
to use the correct list element field.
|
||
|
|
||
|
Fixes: 3d779abafe ("vfio/common: Introduce a global VFIODevice list")
|
||
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2061
|
||
|
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
|
||
|
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
|
||
|
Reviewed-by: Cédric Le Goater <clg@redhat.com>
|
||
|
Reviewed-by: Eric Auger <eric.auger@redhat.com>
|
||
|
(cherry picked from commit 9353b6da430f90e47f352dbf6dc31120c8914da6)
|
||
|
Signed-off-by: Eric Auger <eric.auger@redhat.com>
|
||
|
---
|
||
|
hw/vfio/common.c | 8 ++++----
|
||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
|
||
|
index 0d4d8b8416..0b3352f2a9 100644
|
||
|
--- a/hw/vfio/common.c
|
||
|
+++ b/hw/vfio/common.c
|
||
|
@@ -73,7 +73,7 @@ bool vfio_mig_active(void)
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
- QLIST_FOREACH(vbasedev, &vfio_device_list, next) {
|
||
|
+ QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
|
||
|
if (vbasedev->migration_blocker) {
|
||
|
return false;
|
||
|
}
|
||
|
@@ -94,7 +94,7 @@ static bool vfio_multiple_devices_migration_is_supported(void)
|
||
|
unsigned int device_num = 0;
|
||
|
bool all_support_p2p = true;
|
||
|
|
||
|
- QLIST_FOREACH(vbasedev, &vfio_device_list, next) {
|
||
|
+ QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
|
||
|
if (vbasedev->migration) {
|
||
|
device_num++;
|
||
|
|
||
|
@@ -1366,13 +1366,13 @@ void vfio_reset_handler(void *opaque)
|
||
|
{
|
||
|
VFIODevice *vbasedev;
|
||
|
|
||
|
- QLIST_FOREACH(vbasedev, &vfio_device_list, next) {
|
||
|
+ QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
|
||
|
if (vbasedev->dev->realized) {
|
||
|
vbasedev->ops->vfio_compute_needs_reset(vbasedev);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- QLIST_FOREACH(vbasedev, &vfio_device_list, next) {
|
||
|
+ QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
|
||
|
if (vbasedev->dev->realized && vbasedev->needs_reset) {
|
||
|
vbasedev->ops->vfio_hot_reset_multi(vbasedev);
|
||
|
}
|
||
|
--
|
||
|
2.39.3
|
||
|
|