Re: [PATCH 06/14] vfio: Add Error** argument to vfio_devices_dma_logging_start()

2024-02-07 Thread Philippe Mathieu-Daudé

On 7/2/24 14:33, Cédric Le Goater wrote:

This allows to update the Error argument of the VFIO log_global_start()
handler. Errors detected when device level logging is started will be
propagated up to qemu_savevm_state_setup() when the ram save_setup()
handler is executed.

The vfio_set_migration_error() call becomes redudant. Remove it.


Typo "redundant".



Signed-off-by: Cédric Le Goater 
---
  hw/vfio/common.c | 21 +
  1 file changed, 9 insertions(+), 12 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé 




[PATCH 06/14] vfio: Add Error** argument to vfio_devices_dma_logging_start()

2024-02-07 Thread Cédric Le Goater
This allows to update the Error argument of the VFIO log_global_start()
handler. Errors detected when device level logging is started will be
propagated up to qemu_savevm_state_setup() when the ram save_setup()
handler is executed.

The vfio_set_migration_error() call becomes redudant. Remove it.

Signed-off-by: Cédric Le Goater 
---
 hw/vfio/common.c | 21 +
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index 
03f2059d903eca335b02f633b07cd35ef3dd6237..a5d53e67efaa921e89ad918390a22506c7b1ed66
 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -1036,7 +1036,8 @@ static void vfio_device_feature_dma_logging_start_destroy(
 g_free(feature);
 }
 
-static int vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer)
+static int vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer,
+  Error **errp)
 {
 struct vfio_device_feature *feature;
 VFIODirtyRanges ranges;
@@ -1058,8 +1059,8 @@ static int 
vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer)
 ret = ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature);
 if (ret) {
 ret = -errno;
-error_report("%s: Failed to start DMA logging, err %d (%s)",
- vbasedev->name, ret, strerror(errno));
+error_setg(errp, "%s: Failed to start DMA logging, err %d (%s)",
+   vbasedev->name, ret, strerror(errno));
 goto out;
 }
 vbasedev->dirty_tracking = true;
@@ -1083,15 +1084,13 @@ static void 
vfio_listener_log_global_start(MemoryListener *listener,
 int ret;
 
 if (vfio_devices_all_device_dirty_tracking(bcontainer)) {
-ret = vfio_devices_dma_logging_start(bcontainer);
+ret = vfio_devices_dma_logging_start(bcontainer, errp);
 } else {
-ret = vfio_container_set_dirty_page_tracking(bcontainer, true, NULL);
+ret = vfio_container_set_dirty_page_tracking(bcontainer, true, errp);
 }
 
 if (ret) {
-error_report("vfio: Could not start dirty page tracking, err: %d (%s)",
- ret, strerror(-ret));
-vfio_set_migration_error(ret);
+error_prepend(errp, "vfio: Could not start dirty page tracking - ");
 }
 }
 
@@ -1105,13 +1104,11 @@ static void 
vfio_listener_log_global_stop(MemoryListener *listener,
 if (vfio_devices_all_device_dirty_tracking(bcontainer)) {
 vfio_devices_dma_logging_stop(bcontainer);
 } else {
-ret = vfio_container_set_dirty_page_tracking(bcontainer, false, NULL);
+ret = vfio_container_set_dirty_page_tracking(bcontainer, false, errp);
 }
 
 if (ret) {
-error_report("vfio: Could not stop dirty page tracking, err: %d (%s)",
- ret, strerror(-ret));
-vfio_set_migration_error(ret);
+error_prepend(errp, "vfio: Could not stop dirty page tracking - ");
 }
 }
 
-- 
2.43.0