On 10 September 2014 09:38, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 09/09/2014 22:51, Michael S. Tsirkin ha scritto: >> Sorry I still don't understand. Why do stuff from vmstate callback then? >> How is it different? > > Reconstructing internal state from post_load is okay. > > What is not okay (and I think it should be a rule) is to touch other > devices from post_load, unless you know that they are deserialized > first. For example it's okay for a PCI device to talk to the parent > bridge in its post_load function.
I don't think it's right to talk to another device even if you do know it's deserialized first. Talking to it might make it change its state, which would be wrong (since its correct state is the state it's just deserialized). I would suggest the rule should be "never do something that can change the state of another device in post-load". (We have similar issues with reset, except worse in that we don't have a coherent rule to cause everything to come out of reset in the right state.) thanks -- PMM