> From: Paolo Bonzini [mailto:paolo.bonz...@gmail.com] On Behalf Of Paolo 
> Bonzini
> Il 28/07/2014 11:54, Pavel Dovgaluk ha scritto:
> >>> > > +        VMSTATE_TIMER_V(timer, RTL8139State, 5),
> >> >
> >> > timer need not be migrated, because it is reinstated by 
> >> > rtl8139_post_load.
> >> >
> >   That's true for normal execution.
> >   In replay execution mode post_load can be called before cached virtual 
> > clock
> > values are loaded. This may cause invalid setting of the timer and raising
> > an IRQ which didn't happen in record mode.
> >   I will update this patch to fix post_load function and avoid this
> > non-deterministic behavior.
> 
> This is what worries me of this series.  These invariants are not
> documented anywhere, and people will break them unless you add
> assertions that also hold in normal mode.

Assertions is a good idea, we added such warning message to qemu_get_timedate 
function
to be sure, that it is used correctly with replay.

Another thing, that could help for making snapshots - find a way to load replay 
structures
before all other ones. Are there any priorities in migration states list?
Priorities could also solve some other issues, because sometimes post_load 
function
of one device uses other devices' functions. And the second ones could be not 
loaded yet.

Pavel Dovgalyuk


Reply via email to