I'm implementing live migration and I have a few questions: * Do the stop-and-copy and stopped states have any effect on the operation of the device? E.g. is it legitimate to access registers of other regions except the ones of the migration region? Can the device effectively "shut down" apart from functionality related to handling the the stop-and-copy state? * What happens if an iteration has started (pending_bytes has been read), but pending_bytes is read again without the migration data having been read entirely? I suppose this is a user bug? * Regarding the pending_bytes register, can its value fluctuate in time or must it decrease monotonically and by data_size bytes during each iteration? E.g. can the size of migration data increase during e.g. the pre-copy phase? * What are the semantics of reading data_offset or data_size if an iteration hasn't started? I suppose the read value is undefined? * Regarding the following statement: "Read on data_offset and data_size should return the offset and size of the current buffer if the user application reads data_offset and data_size more than once here." I'm not sure I understand here, does this mean that data_size and data_offset don't change during an iteration, even if the user reads migration data without multiple read(2) calls during an iteration?