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. -- error compiling committee.c: too many arguments to function