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:
		
							parent
							
								
									be9c4183c4
								
							
						
					
					
						commit
						860329b251
					
				
							
								
								
									
										13
									
								
								memory.c
								
								
								
								
							
							
						
						
									
										13
									
								
								memory.c
								
								
								
								
							| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue