Merge remote-tracking branch 'bonzini/iommu-for-anthony' into staging
# By Paolo Bonzini (2) and others # Via Paolo Bonzini * bonzini/iommu-for-anthony: exec: fix incorrect assumptions in memory_access_size memory: Return -1 again on reads from unsigned regions memory: actually set the owner exec.c: Pass correct pointer type to qemu_ram_ptr_length Message-id: 1374264478-23913-1-git-send-email-pbonzini@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
						commit
						c9fea5d701
					
				
							
								
								
									
										11
									
								
								exec.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								exec.c
									
									
									
									
									
								
							| @ -1379,7 +1379,7 @@ static void *qemu_safe_ram_ptr(ram_addr_t addr) | |||||||
| 
 | 
 | ||||||
| /* Return a host pointer to guest's ram. Similar to qemu_get_ram_ptr
 | /* Return a host pointer to guest's ram. Similar to qemu_get_ram_ptr
 | ||||||
|  * but takes a size argument */ |  * but takes a size argument */ | ||||||
| static void *qemu_ram_ptr_length(ram_addr_t addr, ram_addr_t *size) | static void *qemu_ram_ptr_length(ram_addr_t addr, hwaddr *size) | ||||||
| { | { | ||||||
|     if (*size == 0) { |     if (*size == 0) { | ||||||
|         return NULL; |         return NULL; | ||||||
| @ -1898,14 +1898,10 @@ static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) | |||||||
| 
 | 
 | ||||||
| static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) | static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) | ||||||
| { | { | ||||||
|     unsigned access_size_min = mr->ops->impl.min_access_size; |     unsigned access_size_max = mr->ops->valid.max_access_size; | ||||||
|     unsigned access_size_max = mr->ops->impl.max_access_size; |  | ||||||
| 
 | 
 | ||||||
|     /* Regions are assumed to support 1-4 byte accesses unless
 |     /* Regions are assumed to support 1-4 byte accesses unless
 | ||||||
|        otherwise specified.  */ |        otherwise specified.  */ | ||||||
|     if (access_size_min == 0) { |  | ||||||
|         access_size_min = 1; |  | ||||||
|     } |  | ||||||
|     if (access_size_max == 0) { |     if (access_size_max == 0) { | ||||||
|         access_size_max = 4; |         access_size_max = 4; | ||||||
|     } |     } | ||||||
| @ -1922,9 +1918,6 @@ static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) | |||||||
|     if (l > access_size_max) { |     if (l > access_size_max) { | ||||||
|         l = access_size_max; |         l = access_size_max; | ||||||
|     } |     } | ||||||
|     /* ??? The users of this function are wrong, not supporting minimums larger
 |  | ||||||
|        than the remaining length.  C.f. memory.c:access_with_adjusted_size.  */ |  | ||||||
|     assert(l >= access_size_min); |  | ||||||
| 
 | 
 | ||||||
|     return l; |     return l; | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								memory.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								memory.c
									
									
									
									
									
								
							| @ -805,7 +805,6 @@ void memory_region_init(MemoryRegion *mr, | |||||||
|     mr->owner = owner; |     mr->owner = owner; | ||||||
|     mr->iommu_ops = NULL; |     mr->iommu_ops = NULL; | ||||||
|     mr->parent = NULL; |     mr->parent = NULL; | ||||||
|     mr->owner = NULL; |  | ||||||
|     mr->size = int128_make64(size); |     mr->size = int128_make64(size); | ||||||
|     if (size == UINT64_MAX) { |     if (size == UINT64_MAX) { | ||||||
|         mr->size = int128_2_64(); |         mr->size = int128_2_64(); | ||||||
| @ -841,7 +840,7 @@ static uint64_t unassigned_mem_read(void *opaque, hwaddr addr, | |||||||
|     if (current_cpu != NULL) { |     if (current_cpu != NULL) { | ||||||
|         cpu_unassigned_access(current_cpu, addr, false, false, 0, size); |         cpu_unassigned_access(current_cpu, addr, false, false, 0, size); | ||||||
|     } |     } | ||||||
|     return 0; |     return -1ULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void unassigned_mem_write(void *opaque, hwaddr addr, | static void unassigned_mem_write(void *opaque, hwaddr addr, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anthony Liguori
						Anthony Liguori