diff --git a/hw/an5206.c b/hw/an5206.c index 29812631e71700d8802b83ec39ee00d5f7820aef..862d0cf7289fc527d4fbc02431cba880ab962b91 100644 --- a/hw/an5206.c +++ b/hw/an5206.c @@ -92,4 +92,5 @@ QEMUMachine an5206_machine = { .desc = "Arnewsh 5206", .init = an5206_init, .ram_require = 512, + .max_cpus = 1, }; diff --git a/hw/boards.h b/hw/boards.h index 119c2f60cd169a2fc984fec25f6e972dd6e616dd..d30c0fced9485f93740fd7609945051a80a83ceb 100644 --- a/hw/boards.h +++ b/hw/boards.h @@ -18,6 +18,7 @@ typedef struct QEMUMachine { ram_addr_t ram_require; int nodisk_ok; int use_scsi; + int max_cpus; struct QEMUMachine *next; } QEMUMachine; diff --git a/hw/dummy_m68k.c b/hw/dummy_m68k.c index fc06e9cc88f638d56b38ba92bdbe71eafea8616c..f7a80afcf9a9df3acd3464cfc5536a5b120ff33e 100644 --- a/hw/dummy_m68k.c +++ b/hw/dummy_m68k.c @@ -66,4 +66,5 @@ QEMUMachine dummy_m68k_machine = { .name = "dummy", .desc = "Dummy board", .init = dummy_m68k_init, + .max_cpus = 1, }; diff --git a/hw/etraxfs.c b/hw/etraxfs.c index 4d3f694eda5822298b0ac1f13866725e08275070..2987c8f717ee2d7cbc2192289aa03000007d9e13 100644 --- a/hw/etraxfs.c +++ b/hw/etraxfs.c @@ -145,4 +145,5 @@ QEMUMachine bareetraxfs_machine = { .desc = "Bare ETRAX FS board", .init = bareetraxfs_init, .ram_require = 0x8000000, + .max_cpus = 1, }; diff --git a/hw/gumstix.c b/hw/gumstix.c index 29cd69df24fdd941aecd2795c5b8a413ccf08539..f184648e5637f529b242003aa542fb6e25e3458a 100644 --- a/hw/gumstix.c +++ b/hw/gumstix.c @@ -126,6 +126,7 @@ QEMUMachine connex_machine = { .desc = "Gumstix Connex (PXA255)", .init = connex_init, .ram_require = (0x05000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine verdex_machine = { @@ -133,4 +134,5 @@ QEMUMachine verdex_machine = { .desc = "Gumstix Verdex (PXA270)", .init = verdex_init, .ram_require = (0x12000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 779d46b70ed7422ce00958dfe9763141c492ab5c..1ae5d2a8335745864cd5dbd61c976c1d47cbb4d5 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -544,4 +544,5 @@ QEMUMachine integratorcp_machine = { .desc = "ARM Integrator/CP (ARM926EJ-S)", .init = integratorcp_init, .ram_require = 0x100000, + .max_cpus = 1, }; diff --git a/hw/mainstone.c b/hw/mainstone.c index 52485cecd21e7e3ed37aca2356b53afa9730ff8b..f4feb4fe2ae92a01e7612b80c7d8c2ad67d5593d 100644 --- a/hw/mainstone.c +++ b/hw/mainstone.c @@ -149,4 +149,5 @@ QEMUMachine mainstone2_machine = { .init = mainstone_init, .ram_require = (MAINSTONE_RAM + MAINSTONE_ROM + 2 * MAINSTONE_FLASH + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/mcf5208.c b/hw/mcf5208.c index 3e0a8117519d2975c47960a34ab97adcaf200e1e..fe3566ee0f6b0e562cb9801debcd070e4a4d9647 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -309,4 +309,5 @@ QEMUMachine mcf5208evb_machine = { .desc = "MCF5206EVB", .init = mcf5208evb_init, .ram_require = 16384, + .max_cpus = 1, }; diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index b332a4598e2b2e4d499dbf450afc9b8ddde40cf1..68e63ff436b5518cf340e2b029e84844679c5aff 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -278,6 +278,7 @@ QEMUMachine mips_magnum_machine = { .init = mips_magnum_init, .ram_require = MAGNUM_BIOS_SIZE + VGA_RAM_SIZE, .nodisk_ok = 1, + .max_cpus = 1, }; QEMUMachine mips_pica61_machine = { @@ -286,4 +287,5 @@ QEMUMachine mips_pica61_machine = { .init = mips_pica61_init, .ram_require = MAGNUM_BIOS_SIZE + VGA_RAM_SIZE, .nodisk_ok = 1, + .max_cpus = 1, }; diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 629e91470bc425b32fa2f475ca635aa4977a8a24..e1999d52e6af56ed08ff9bdf2228f8d947f9f3f8 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -950,4 +950,5 @@ QEMUMachine mips_malta_machine = { .init = mips_malta_init, .ram_require = VGA_RAM_SIZE + BIOS_SIZE, .nodisk_ok = 1, + .max_cpus = 1, }; diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c index dc62f696a038fc4760ac4c8b1c3e553cd2c414f7..bd5266ad846a0df77d00b9b80f18d4ca3696f7ff 100644 --- a/hw/mips_mipssim.c +++ b/hw/mips_mipssim.c @@ -196,4 +196,5 @@ QEMUMachine mips_mipssim_machine = { .init = mips_mipssim_init, .ram_require = BIOS_SIZE + VGA_RAM_SIZE /* unused */, .nodisk_ok = 1, + .max_cpus = 1, }; diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 6551b02e0bbac934fa96da2b8d69c3c946329dec..399f452a8d6f505833fd08ce6b28a0baa7b6ad06 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -287,4 +287,5 @@ QEMUMachine mips_machine = { .init = mips_r4k_init, .ram_require = VGA_RAM_SIZE + BIOS_SIZE, .nodisk_ok = 1, + .max_cpus = 1, }; diff --git a/hw/musicpal.c b/hw/musicpal.c index ccea19fe24f8f6a0ec9ac732b1d528afa93f905a..cee34680544a6114e158af02b93619d35e5c95ef 100644 --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -1513,4 +1513,5 @@ QEMUMachine musicpal_machine = { .desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)", .init = musicpal_init, .ram_require = MP_RAM_DEFAULT_SIZE + MP_SRAM_SIZE + MP_FLASH_SIZE_MAX + RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/nseries.c b/hw/nseries.c index ec56fad9526f1f729b2eecc4d788b819b3412a89..3fd8099aae11c201fdd4612796a9ac40c6508496 100644 --- a/hw/nseries.c +++ b/hw/nseries.c @@ -1408,6 +1408,7 @@ QEMUMachine n800_machine = { .desc = "Nokia N800 tablet aka. RX-34 (OMAP2420)", .init = n800_init, .ram_require = (0x08000000 + 0x00010000 + OMAP242X_SRAM_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine n810_machine = { @@ -1415,4 +1416,5 @@ QEMUMachine n810_machine = { .desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)", .init = n810_init, .ram_require = (0x08000000 + 0x00010000 + OMAP242X_SRAM_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/palm.c b/hw/palm.c index 79ea3a77fc2538f741c637dcf0bfa1ea3af0964f..b45cdd645251772cd50a03d59dacc7bcdee5a8ba 100644 --- a/hw/palm.c +++ b/hw/palm.c @@ -286,4 +286,5 @@ QEMUMachine palmte_machine = { .desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)", .init = palmte_init, .ram_require = (0x02000000 + 0x00800000 + OMAP15XX_SRAM_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/pc.c b/hw/pc.c index e7cba9a6453b65da8137291573af3a3736cab9b7..34683e7920194fffea41136452c167d4efebd1e7 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1097,6 +1097,7 @@ QEMUMachine pc_machine = { .desc = "Standard PC", .init = pc_init_pci, .ram_require = VGA_RAM_SIZE + PC_MAX_BIOS_SIZE, + .max_cpus = 255, }; QEMUMachine isapc_machine = { @@ -1104,4 +1105,5 @@ QEMUMachine isapc_machine = { .desc = "ISA-only PC", .init = pc_init_isa, .ram_require = VGA_RAM_SIZE + PC_MAX_BIOS_SIZE, + .max_cpus = 1, }; diff --git a/hw/ppc405_boards.c b/hw/ppc405_boards.c index c7a69596c7fc5372085c426ed7d22339e1c1bafd..a83f28e9b9b420bc3ce3cfbf4fe88fc0f0c16deb 100644 --- a/hw/ppc405_boards.c +++ b/hw/ppc405_boards.c @@ -359,6 +359,7 @@ QEMUMachine ref405ep_machine = { .desc = "ref405ep", .init = ref405ep_init, .ram_require = (128 * 1024 * 1024 + 4096 + 512 * 1024 + BIOS_SIZE) | RAMSIZE_FIXED, + .max_cpus = 1, }; /*****************************************************************************/ diff --git a/hw/ppc_chrp.c b/hw/ppc_chrp.c index 140541f0b0158896e9b1db2cf08ed8a4fbe33657..ede2924ed76a2b1f869121b3d5b856b0d0c2fa12 100644 --- a/hw/ppc_chrp.c +++ b/hw/ppc_chrp.c @@ -335,4 +335,5 @@ QEMUMachine core99_machine = { .desc = "Mac99 based PowerMAC", .init = ppc_core99_init, .ram_require = BIOS_SIZE + VGA_RAM_SIZE, + .max_cpus = 1, }; diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index 15e8022488b5aa6826cae4c441cea00c8c1e8e80..75faeb3c44249beb9f716d849d0ccad927cf577f 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -370,4 +370,5 @@ QEMUMachine heathrow_machine = { .desc = "Heathrow based PowerMAC", .init = ppc_heathrow_init, .ram_require = BIOS_SIZE + VGA_RAM_SIZE, + .max_cpus = 1, }; diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index a955909eea9b0b16bae20ca5f85c391afbd5ee70..944935d2988e855c3af17d900a31946f12cd09e2 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -762,4 +762,5 @@ QEMUMachine prep_machine = { .desc = "PowerPC PREP platform", .init = ppc_prep_init, .ram_require = BIOS_SIZE + VGA_RAM_SIZE, + .max_cpus = 1, }; diff --git a/hw/r2d.c b/hw/r2d.c index 855aa414ff50c5460a0da78e333bdce075132168..58c93e89932f4b988808356b95fb0a696159e94e 100644 --- a/hw/r2d.c +++ b/hw/r2d.c @@ -168,4 +168,5 @@ QEMUMachine r2d_machine = { .desc = "r2d-plus board", .init = r2d_init, .ram_require = SDRAM_SIZE | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/realview.c b/hw/realview.c index a9d20edc525520656210432e8c3ce1f3508f8c75..14c001ecdd9bac25ae5367ba77216039df32d081 100644 --- a/hw/realview.c +++ b/hw/realview.c @@ -202,4 +202,5 @@ QEMUMachine realview_machine = { .init = realview_init, .ram_require = 0x1000, .use_scsi = 1, + .max_cpus = 1, }; diff --git a/hw/shix.c b/hw/shix.c index 140efe90a5fe06a028204ae187e8cc9757c6b95d..3cc41fb830f3993ae6e599dcbe593f8bff9301dd 100644 --- a/hw/shix.c +++ b/hw/shix.c @@ -112,4 +112,5 @@ QEMUMachine shix_machine = { .desc = "shix card", .init = shix_init, .ram_require = (0x00004000 + 0x01000000 + 0x01000000) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/spitz.c b/hw/spitz.c index fc7717460ea40a2fd096343315185c052e654b0c..36b490dce8518aa1e17cf6ae1587148a4e58acc8 100644 --- a/hw/spitz.c +++ b/hw/spitz.c @@ -1014,6 +1014,7 @@ QEMUMachine akitapda_machine = { .desc = "Akita PDA (PXA270)", .init = akita_init, .ram_require = SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine spitzpda_machine = { @@ -1021,6 +1022,7 @@ QEMUMachine spitzpda_machine = { .desc = "Spitz PDA (PXA270)", .init = spitz_init, .ram_require = SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine borzoipda_machine = { @@ -1028,6 +1030,7 @@ QEMUMachine borzoipda_machine = { .desc = "Borzoi PDA (PXA270)", .init = borzoi_init, .ram_require = SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine terrierpda_machine = { @@ -1035,4 +1038,5 @@ QEMUMachine terrierpda_machine = { .desc = "Terrier PDA (PXA270)", .init = terrier_init, .ram_require = SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/stellaris.c b/hw/stellaris.c index 5948079e171fe1bdb7a45f03dd382cd626cc363e..4645bd6fb4ff098a6eed5cf5a8d410fa33d2cf81 100644 --- a/hw/stellaris.c +++ b/hw/stellaris.c @@ -1417,6 +1417,7 @@ QEMUMachine lm3s811evb_machine = { .desc = "Stellaris LM3S811EVB", .init = lm3s811evb_init, .ram_require = (64 * 1024 + 8 * 1024) | RAMSIZE_FIXED, + .max_cpus = 1, }; QEMUMachine lm3s6965evb_machine = { @@ -1424,4 +1425,5 @@ QEMUMachine lm3s6965evb_machine = { .desc = "Stellaris LM3S6965EVB", .init = lm3s6965evb_init, .ram_require = (256 * 1024 + 64 * 1024) | RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/sun4m.c b/hw/sun4m.c index 079439a46fc594a61d620d0a06b2c1085aed81c9..dd0433afca3876719f007a3af48797173955f8c1 100644 --- a/hw/sun4m.c +++ b/hw/sun4m.c @@ -1291,6 +1291,7 @@ QEMUMachine ss5_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss10_machine = { @@ -1300,6 +1301,7 @@ QEMUMachine ss10_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss600mp_machine = { @@ -1309,6 +1311,7 @@ QEMUMachine ss600mp_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss20_machine = { @@ -1318,6 +1321,7 @@ QEMUMachine ss20_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss2_machine = { @@ -1327,6 +1331,7 @@ QEMUMachine ss2_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine voyager_machine = { @@ -1336,6 +1341,7 @@ QEMUMachine voyager_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss_lx_machine = { @@ -1345,6 +1351,7 @@ QEMUMachine ss_lx_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss4_machine = { @@ -1354,6 +1361,7 @@ QEMUMachine ss4_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine scls_machine = { @@ -1363,6 +1371,7 @@ QEMUMachine scls_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine sbook_machine = { @@ -1372,6 +1381,7 @@ QEMUMachine sbook_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; static const struct sun4d_hwdef sun4d_hwdefs[] = { @@ -1620,6 +1630,7 @@ QEMUMachine ss1000_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; QEMUMachine ss2000_machine = { @@ -1629,4 +1640,5 @@ QEMUMachine ss2000_machine = { .ram_require = PROM_SIZE_MAX + TCX_SIZE, .nodisk_ok = 1, .use_scsi = 1, + .max_cpus = 16, }; diff --git a/hw/sun4u.c b/hw/sun4u.c index 87669ea0945babd470f9b7ca4a6bfbba27e45e91..a70ad201ab7a7fe2967d707e43295a624e0780ce 100644 --- a/hw/sun4u.c +++ b/hw/sun4u.c @@ -589,6 +589,7 @@ QEMUMachine sun4u_machine = { .init = sun4u_init, .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE, .nodisk_ok = 1, + .max_cpus = 16, }; QEMUMachine sun4v_machine = { @@ -597,6 +598,7 @@ QEMUMachine sun4v_machine = { .init = sun4v_init, .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE, .nodisk_ok = 1, + .max_cpus = 16, }; QEMUMachine niagara_machine = { @@ -605,4 +607,5 @@ QEMUMachine niagara_machine = { .init = niagara_init, .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE, .nodisk_ok = 1, + .max_cpus = 16, }; diff --git a/hw/tosa.c b/hw/tosa.c index 75df52ec7d28941a29be7c17ab778d9f3f6e2675..e7b2be31e45e6971db539fd7edf9195783cc95f6 100644 --- a/hw/tosa.c +++ b/hw/tosa.c @@ -123,4 +123,5 @@ QEMUMachine tosapda_machine = { .desc = "Tosa PDA (PXA255)", .init = tosa_init, .ram_require = TOSA_RAM + TOSA_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED, + .max_cpus = 1, }; diff --git a/hw/versatilepb.c b/hw/versatilepb.c index f9e9988fc6a71ef784ac2270c5dc10c43ca6316b..c4c867d0f6d3052376596afff5afbe6bf1cb294d 100644 --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -320,6 +320,7 @@ QEMUMachine versatilepb_machine = { .desc = "ARM Versatile/PB (ARM926EJ-S)", .init = vpb_init, .use_scsi = 1, + .max_cpus = 1, }; QEMUMachine versatileab_machine = { @@ -327,4 +328,5 @@ QEMUMachine versatileab_machine = { .desc = "ARM Versatile/AB (ARM926EJ-S)", .init = vab_init, .use_scsi = 1, + .max_cpus = 1, }; diff --git a/vl.c b/vl.c index 439d31778431b2d178cc75b769ff4d990a74ec04..5fe288e08612c113911e9ded463ce0692814b2a1 100644 --- a/vl.c +++ b/vl.c @@ -213,13 +213,6 @@ int usb_enabled = 0; static VLANState *first_vlan; int smp_cpus = 1; const char *vnc_display; -#if defined(TARGET_SPARC) -#define MAX_CPUS 16 -#elif defined(TARGET_I386) -#define MAX_CPUS 255 -#else -#define MAX_CPUS 1 -#endif int acpi_enabled = 1; int fd_bootchk = 1; int no_reboot = 0; @@ -9195,7 +9188,7 @@ int main(int argc, char **argv) break; case QEMU_OPTION_smp: smp_cpus = atoi(optarg); - if (smp_cpus < 1 || smp_cpus > MAX_CPUS) { + if (smp_cpus < 1) { fprintf(stderr, "Invalid number of CPUs\n"); exit(1); } @@ -9312,6 +9305,13 @@ int main(int argc, char **argv) } } + if (smp_cpus > machine->max_cpus) { + fprintf(stderr, "Number of SMP cpus requested (%d), exceeds max cpus " + "supported by machine `%s' (%d)\n", smp_cpus, machine->name, + machine->max_cpus); + exit(1); + } + if (nographic) { if (serial_device_index == 0) serial_devices[0] = "stdio";