memory: fix subregion collision warning

Instead of the offset property use the proper addr property to calculate
the offsets.

Additionally, be a little more verbose on the warning and print the
subregion name.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
Michael Walle 2011-09-15 23:16:49 +02:00 committed by Avi Kivity
parent be9c4183c4
commit 860329b251
1 changed files with 8 additions and 5 deletions

View File

@ -1190,16 +1190,19 @@ static void memory_region_add_subregion_common(MemoryRegion *mr,
if (subregion->may_overlap || other->may_overlap) {
continue;
}
if (offset >= other->offset + other->size
|| offset + subregion->size <= other->offset) {
if (offset >= other->addr + other->size
|| offset + subregion->size <= other->addr) {
continue;
}
#if 0
printf("warning: subregion collision %llx/%llx vs %llx/%llx\n",
printf("warning: subregion collision %llx/%llx (%s) "
"vs %llx/%llx (%s)\n",
(unsigned long long)offset,
(unsigned long long)subregion->size,
(unsigned long long)other->offset,
(unsigned long long)other->size);
subregion->name,
(unsigned long long)other->addr,
(unsigned long long)other->size,
other->name);
#endif
}
QTAILQ_FOREACH(other, &mr->subregions, subregions_link) {