From: "Cédric Le Goater" <clg@redhat.com>
To: Eric Auger <eauger@redhat.com>, qemu-devel@nongnu.org
Cc: "Peter Xu" <peterx@redhat.com>, "Fabiano Rosas" <farosas@suse.de>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Avihai Horon" <avihaih@nvidia.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [PATCH v6 2/9] vfio: Add Error** argument to vfio_devices_dma_logging_start()
Date: Wed, 15 May 2024 19:09:52 +0200 [thread overview]
Message-ID: <ccec0165-d09e-4642-a738-156262ed7f0b@redhat.com> (raw)
In-Reply-To: <9cb94f2a-7274-45c7-b440-75b9a537e533@redhat.com>
On 5/15/24 08:53, Eric Auger wrote:
> Hi Cédric,
> On 5/14/24 17:31, Cédric Le Goater wrote:
>> This allows to update the Error argument of the VFIO log_global_start()
>> handler. Errors for container based logging will also be propagated to
>> qemu_savevm_state_setup() when the ram save_setup() handler is executed.
> nit: also now collect & print errors from
> vfio_container_set_dirty_page_tracking()
OK. To avoid resending, I amended the commit log with :
"Also, errors from vfio_container_set_dirty_page_tracking() are now
collected and reported."
Thanks,
C.
>>
>> The vfio_set_migration_error() call becomes redundant in
>> vfio_listener_log_global_start(). Remove it.
>>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Reviewed-by: Avihai Horon <avihaih@nvidia.com>
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> ---
>>
>> Changes in v6:
>>
>> - Commit log improvements (Avihai)
>>
>> Changes in v5:
>>
>> - Used error_setg_errno() in vfio_devices_dma_logging_start()
>>
>> hw/vfio/common.c | 26 +++++++++++++++-----------
>> 1 file changed, 15 insertions(+), 11 deletions(-)
>>
>> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
>> index 485e53916491f1164d29e739fb7106c0c77df737..b5102f54a6474a50c6366e8fbce23812d55e384e 100644
>> --- a/hw/vfio/common.c
>> +++ b/hw/vfio/common.c
>> @@ -1027,7 +1027,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;
>> @@ -1038,6 +1039,7 @@ static int vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer)
>> feature = vfio_device_feature_dma_logging_start_create(bcontainer,
>> &ranges);
>> if (!feature) {
>> + error_setg_errno(errp, errno, "Failed to prepare DMA logging");
>> return -errno;
>> }
>>
>> @@ -1049,8 +1051,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_errno(errp, errno, "%s: Failed to start DMA logging",
>> + vbasedev->name);
>> goto out;
>> }
>> vbasedev->dirty_tracking = true;
>> @@ -1069,20 +1071,19 @@ out:
>> static bool vfio_listener_log_global_start(MemoryListener *listener,
>> Error **errp)
>> {
>> + ERRP_GUARD();
>> VFIOContainerBase *bcontainer = container_of(listener, VFIOContainerBase,
>> 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 - ");
>> }
>> return !ret;
>> }
>> @@ -1091,17 +1092,20 @@ static void vfio_listener_log_global_stop(MemoryListener *listener)
>> {
>> VFIOContainerBase *bcontainer = container_of(listener, VFIOContainerBase,
>> listener);
>> + Error *local_err = NULL;
>> int ret = 0;
>>
>> 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,
>> + &local_err);
>> }
>>
>> if (ret) {
>> - error_report("vfio: Could not stop dirty page tracking, err: %d (%s)",
>> - ret, strerror(-ret));
>> + error_prepend(&local_err,
>> + "vfio: Could not stop dirty page tracking - ");
>> + error_report_err(local_err);
>> vfio_set_migration_error(ret);
>> }
>> }
>
> Reviewed-by: Eric Auger <eric.auger@redhat.com>
>
> Eric
>
next prev parent reply other threads:[~2024-05-15 17:11 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-14 15:31 [PATCH v6 0/9] vfio: Improve error reporting (part 2 Cédric Le Goater
2024-05-14 15:31 ` [PATCH v6 1/9] vfio: Add Error** argument to .set_dirty_page_tracking() handler Cédric Le Goater
2024-05-15 6:40 ` Eric Auger
2024-05-15 16:55 ` Cédric Le Goater
2024-05-14 15:31 ` [PATCH v6 2/9] vfio: Add Error** argument to vfio_devices_dma_logging_start() Cédric Le Goater
2024-05-15 6:53 ` Eric Auger
2024-05-15 17:09 ` Cédric Le Goater [this message]
2024-05-14 15:31 ` [PATCH v6 3/9] migration: Extend migration_file_set_error() with Error* argument Cédric Le Goater
2024-05-15 7:04 ` Eric Auger
2024-05-15 17:15 ` Cédric Le Goater
2024-05-14 15:31 ` [PATCH v6 4/9] vfio/migration: Add an Error** argument to vfio_migration_set_state() Cédric Le Goater
2024-05-15 7:20 ` Eric Auger
2024-05-16 7:17 ` Cédric Le Goater
2024-05-16 8:18 ` Avihai Horon
2024-05-16 12:07 ` Cédric Le Goater
2024-05-14 15:31 ` [PATCH v6 5/9] vfio/migration: Add Error** argument to .vfio_save_config() handler Cédric Le Goater
2024-05-15 9:20 ` Eric Auger
2024-05-16 8:22 ` Avihai Horon
2024-05-14 15:31 ` [PATCH v6 6/9] vfio: Reverse test on vfio_get_xlat_addr() Cédric Le Goater
2024-05-15 9:22 ` Eric Auger
2024-05-14 15:31 ` [PATCH v6 7/9] memory: Add Error** argument to memory_get_xlat_addr() Cédric Le Goater
2024-05-15 9:25 ` Eric Auger
2024-05-16 8:25 ` Avihai Horon
2024-05-14 15:31 ` [PATCH v6 8/9] vfio: Add Error** argument to .get_dirty_bitmap() handler Cédric Le Goater
2024-05-15 9:34 ` Eric Auger
2024-05-16 8:42 ` Avihai Horon
2024-05-16 12:22 ` Cédric Le Goater
2024-05-14 15:31 ` [PATCH v6 9/9] vfio: Also trace event failures in vfio_save_complete_precopy() Cédric Le Goater
2024-05-15 9:34 ` Eric Auger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ccec0165-d09e-4642-a738-156262ed7f0b@redhat.com \
--to=clg@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=armbru@redhat.com \
--cc=avihaih@nvidia.com \
--cc=eauger@redhat.com \
--cc=farosas@suse.de \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.