versatilepb: do not run if user asks for more than 256MB RAM
The versatilepb physical address space layout only has a 256MB region for RAM before the devices. Without a guard on the amount of RAM requested by the user we would happily create a RAM area that overlapped with the devices, resulting in very confusing behaviour (typically a guest crash). Report the problem to the user if they try to request more RAM than the board can handle (as we do already for some other board models). Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Message-id: 20161025093711.17407-1-jcd@tribudubois.net [PMM: tidied up commit message, comments. Use error_report() rather than fprintf(stderr, ...).] Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									e9aff9864a
								
							
						
					
					
						commit
						5c8c2aafcf
					
				| 
						 | 
				
			
			@ -198,6 +198,15 @@ static void versatile_init(MachineState *machine, int board_id)
 | 
			
		|||
    int done_smc = 0;
 | 
			
		||||
    DriveInfo *dinfo;
 | 
			
		||||
 | 
			
		||||
    if (machine->ram_size > 0x10000000) {
 | 
			
		||||
        /* Device starting at address 0x10000000,
 | 
			
		||||
         * and memory cannot overlap with devices.
 | 
			
		||||
         * Refuse to run rather than behaving very confusingly.
 | 
			
		||||
         */
 | 
			
		||||
        error_report("versatilepb: memory size must not exceed 256MB");
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!machine->cpu_model) {
 | 
			
		||||
        machine->cpu_model = "arm926";
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue