On Mon, Jul 29, 2019 at 09:45:24AM +0200, David Hildenbrand wrote: >On 28.07.19 15:13, Wei Yang wrote: >> When there is no hint, the first un-overlapped range is the proper one. >> Just break the loop instead of iterate the whole list. >> >> Signed-off-by: Wei Yang <richardw.y...@linux.intel.com> >> --- >> hw/mem/memory-device.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c >> index df3261b32a..413b514586 100644 >> --- a/hw/mem/memory-device.c >> +++ b/hw/mem/memory-device.c >> @@ -180,6 +180,8 @@ static uint64_t memory_device_get_free_addr(MachineState >> *ms, >> range_make_empty(&new); >> break; >> } >> + } else if (!hint) { >> + break; >> } >> } >> >> > >I think > >a) This is fine. I was not able to construct a counter-example where >this would not work. Whenever we modify the range, we check against the >next one in the sorted list. If there is no overlap, it fits. And, it >won't overlap with any other range (and therefore never be changed again) > >b) This should therefore not change the assignment order / break migration. > >Maybe mention that this will not change the assigned addresses compared >to old code in all scenarios. >
Thanks, let me add this in change log. >Reviewed-by: David Hildenbrand <da...@redhat.com> > >-- > >Thanks, > >David / dhildenb -- Wei Yang Help you, Help me