"Dr. David Alan Gilbert" <dgilb...@redhat.com> wrote: > * Juan Quintela (quint...@redhat.com) wrote: >> "Dr. David Alan Gilbert" <dgilb...@redhat.com> wrote: >> > * Juan Quintela (quint...@redhat.com) wrote: >> >> This implements the zero page dection and handling. >> >> >> >> Signed-off-by: Juan Quintela <quint...@redhat.com> >> >> >> >> --- >> >> >> >> Add comment for offset (dave) >> >> } >> >> } >> >> >> >> + for (int i = 0; i < p->zero_num; i++) { >> >> + memset(p->host + p->zero[i], 0, qemu_target_page_size()); >> >> + } >> >> + >> > >> > On the existing code, it tries to avoid doing the memset if the target >> > page size matches; that avoids allocating the zero pages on the >> > destination host; should we try and do the same here? >> > >> > Dave >> >> Hi Dave >> >> That only happens on postcopy. >> With precopy we have to do the memset, because we can have: >> >> write non zero to page 50 >> migrate page 50 >> write zeros to page 50 >> Another migration pass >> If we don't write here, we have garbage on the page. >> >> Or I am missing something? > > You're missing the call to buffer_is_zero: > > void ram_handle_compressed(void *host, uint8_t ch, uint64_t size) > { > if (ch != 0 || !buffer_is_zero(host, size)) { > memset(host, ch, size); > } > }
Aha, I didn't understood you the 1st time. Thanks, will add that. Later, Juan.