hw/arm/virt: fix max-cpus check
mach-virt doesn't yet support hotplug, but command lines specifying -smp <num>,maxcpus=<bigger-num> don't fail. Of course specifying bigger-num as something bigger than the machine supports, e.g. > 8 on a gicv2 machine, should fail though. This fix also makes mach- virt's max-cpus check truly consistent with the one in vl.c:main, as the one there was already correctly checking max-cpus instead of smp-cpus. Reported-by: Shannon Zhao <shannon.zhao@linaro.org> Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Shannon Zhao <shannon.zhao@linaro.org> Message-id: 1454511578-24863-1-git-send-email-drjones@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									97f4ed3b71
								
							
						
					
					
						commit
						7ea686f5dd
					
				@ -1013,7 +1013,7 @@ static void machvirt_init(MachineState *machine)
 | 
				
			|||||||
    MemoryRegion *sysmem = get_system_memory();
 | 
					    MemoryRegion *sysmem = get_system_memory();
 | 
				
			||||||
    MemoryRegion *secure_sysmem = NULL;
 | 
					    MemoryRegion *secure_sysmem = NULL;
 | 
				
			||||||
    int gic_version = vms->gic_version;
 | 
					    int gic_version = vms->gic_version;
 | 
				
			||||||
    int n, max_cpus;
 | 
					    int n, virt_max_cpus;
 | 
				
			||||||
    MemoryRegion *ram = g_new(MemoryRegion, 1);
 | 
					    MemoryRegion *ram = g_new(MemoryRegion, 1);
 | 
				
			||||||
    const char *cpu_model = machine->cpu_model;
 | 
					    const char *cpu_model = machine->cpu_model;
 | 
				
			||||||
    VirtBoardInfo *vbi;
 | 
					    VirtBoardInfo *vbi;
 | 
				
			||||||
@ -1051,15 +1051,15 @@ static void machvirt_init(MachineState *machine)
 | 
				
			|||||||
     * many redistributors we can fit into the memory map.
 | 
					     * many redistributors we can fit into the memory map.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    if (gic_version == 3) {
 | 
					    if (gic_version == 3) {
 | 
				
			||||||
        max_cpus = vbi->memmap[VIRT_GIC_REDIST].size / 0x20000;
 | 
					        virt_max_cpus = vbi->memmap[VIRT_GIC_REDIST].size / 0x20000;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        max_cpus = GIC_NCPU;
 | 
					        virt_max_cpus = GIC_NCPU;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (smp_cpus > max_cpus) {
 | 
					    if (max_cpus > virt_max_cpus) {
 | 
				
			||||||
        error_report("Number of SMP CPUs requested (%d) exceeds max CPUs "
 | 
					        error_report("Number of SMP CPUs requested (%d) exceeds max CPUs "
 | 
				
			||||||
                     "supported by machine 'mach-virt' (%d)",
 | 
					                     "supported by machine 'mach-virt' (%d)",
 | 
				
			||||||
                     smp_cpus, max_cpus);
 | 
					                     max_cpus, virt_max_cpus);
 | 
				
			||||||
        exit(1);
 | 
					        exit(1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user