Hi, The patch is correct. There is a small improved point. > > /* In doubt sent page as normal */ > bytes_sent = -1; > @@ -990,16 +996,17 @@ static inline void *host_from_stream_offset(QEMUFile *f, > int flags) > { > static RAMBlock *block = NULL; RAMBlock *block = NULL;
> + static uint8_t *ram_ptr; > char id[256]; > uint8_t len; > > if (flags & RAM_SAVE_FLAG_CONTINUE) { > - if (!block) { > + if (!block || !ram_ptr) { if (!ram_ptr) { Best regards ChenLiang > fprintf(stderr, "Ack, bad migration stream!\n"); > return NULL; > } > > - return memory_region_get_ram_ptr(block->mr) + offset; > + return ram_ptr + offset; > } > > len = qemu_get_byte(f); > @@ -1007,8 +1014,10 @@ static inline void *host_from_stream_offset(QEMUFile > *f, > id[len] = 0; > > QTAILQ_FOREACH(block, &ram_list.blocks, next) { > - if (!strncmp(id, block->idstr, sizeof(id))) > - return memory_region_get_ram_ptr(block->mr) + offset; > + if (!strncmp(id, block->idstr, sizeof(id))) { > + ram_ptr = memory_region_get_ram_ptr(block->mr); > + return ram_ptr + offset; > + } > } > > fprintf(stderr, "Can't find block %s!\n", id); > -- > 1.7.9.5 > >