Avi Kivity <a...@redhat.com> writes: > On 09/13/2012 05:42 PM, Eric Blake wrote: >> On 09/13/2012 08:34 AM, Avi Kivity wrote: >>> On 09/13/2012 05:22 PM, Gleb Natapov wrote: >>>>> >>>>> It's much easier for us to call into qemu-ga to do the time correction >>>>> whenever this event occurs than to try and have libvirt figure out when >>>>> it's necessary. >>> >>>> And if guest does not have qemu-ga what is better inject interrupts like >>>> crazy for next 2 minutes or leave guest with incorrect time? >>> >>> We can try to S3 and resume the guest. The guest will assume that it >>> has slept for an unknown amount of time and resync from the RTC. >> >> Just restating to make sure I'm clear: you are proposing that after host >> suspend and host wakeup, _then_ qemu asks the guest to go into S3 >> followed by an immediate resume. During the time that the guest goes >> into S3, its clock is way off; but then the immediate resume will be the >> necessary kick to the guest to resync, and at that point, the guest can >> assume that it has been off since the host originally suspended (rather >> than the instant window where qemu actually bounced S3 after the host >> had already resumed). > > Correct. In theory we can shut down networking while this is happening > so the guest can't tell it's in a time machine. > >> >>> This may not work for really old server oriented guests. >> >> S3 requires guest cooperation, period. But so does qemu-ga. It's >> better than nothing, and we can't get perfection without guest cooperation. > > qemu-ga requires either an admin/tool to install qemu-ga, or for qemu-ga > to be preinstalled by the OS vendor. S3 requires S3 support to be > provided by the host vendor, and for it to be functional. A > significantly easier bar to clear.
We can easily generate an ISO that includes a pre-built version of qemu-ga. Plus, there's a whole variety of other features enabled once we can assume qemu-ga is available. It's worth solving that problem. Regards, Anthony Liguori > > > -- > error compiling committee.c: too many arguments to function