qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/4] vfio/migration: Add save_{iterate,complete_precopy}_star


From: Maciej S. Szmigiero
Subject: Re: [PATCH 1/4] vfio/migration: Add save_{iterate,complete_precopy}_started trace events
Date: Fri, 1 Nov 2024 17:48:35 +0100
User-agent: Mozilla Thunderbird

On 31.10.2024 23:17, Maciej S. Szmigiero wrote:
Hi Avihai,

On 31.10.2024 15:21, Avihai Horon wrote:
Hi Maciej,

On 29/10/2024 16:58, Maciej S. Szmigiero wrote:
External email: Use caution opening links or attachments


From: "Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>

This way both the start and end points of migrating a particular VFIO
device are known.

Add also a vfio_save_iterate_empty_hit trace event so it is known when
there's no more data to send for that device.

Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
---
  hw/vfio/migration.c           | 13 +++++++++++++
  hw/vfio/trace-events          |  3 +++
  include/hw/vfio/vfio-common.h |  3 +++
  3 files changed, 19 insertions(+)

diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 992dc3b10257..1b1ddf527d69 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
(..)
In any case, I think the above could fit better in vfio_save_block(), where 
ENOMSG indicates that the device has no more data to send during pre-copy phase:

...
if (data_size < 0) {
     /*
      * Pre-copy emptied all the device state for now. For more information,
      * please refer to the Linux kernel VFIO uAPI.
      */
     if (errno == ENOMSG) {
trace_vfio_save_iterate_empty_hit(vbasedev->name) <--------------- move it here
         return 0;
     }

     return -errno;
}
...

If you move the trace there, maybe renaming it to 
trace_vfio_precopy_empty_hit() will be more accurate?

This move and rename seems sensible to me.

And trying to avoid adding the extra VFIOMigration->save_iterate_empty_hit 
flag, can we simply trace it every time?

Will have to do some tests to be sure but if there's possibility that
we get ENOMSG many times then obviously we don't want to flood logs with
this trace event in this case - we want to only log the
"data present" -> "data not present" edge/change.


Indeed - it needs to be triggered only on the "non-empty"/"empty" change
otherwise there are 3 repeats of this trace event per VFIO device in
a rapid succession.

So some kind of a flag here is necessary: with the trace event being
"re-armed" by a non-empty read from the VFIO device I get just one such
event per device.

Thanks,
Maciej




reply via email to

[Prev in Thread] Current Thread [Next in Thread]