qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [5443] machine struct - specify max_cpus at the per machine


From: Anthony Liguori
Subject: [Qemu-devel] [5443] machine struct - specify max_cpus at the per machine level ( Jes Sorensen)
Date: Tue, 07 Oct 2008 20:39:39 +0000

Revision: 5443
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5443
Author:   aliguori
Date:     2008-10-07 20:39:39 +0000 (Tue, 07 Oct 2008)

Log Message:
-----------
machine struct - specify max_cpus at the per machine level (Jes Sorensen)

Introduce a max_cpus per-machine variable, allowing individual boards
to limit it's number of CPUs. Check requested number of CPUs in setup
code and exit if it exceeds the supported number for the machine.
This also renders the static MAX_CPUS check obsolete, so remove this
from vl.c.

Signed-off-by: Jes Sorensen <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>

Modified Paths:
--------------
    trunk/hw/an5206.c
    trunk/hw/boards.h
    trunk/hw/dummy_m68k.c
    trunk/hw/etraxfs.c
    trunk/hw/gumstix.c
    trunk/hw/integratorcp.c
    trunk/hw/mainstone.c
    trunk/hw/mcf5208.c
    trunk/hw/mips_jazz.c
    trunk/hw/mips_malta.c
    trunk/hw/mips_mipssim.c
    trunk/hw/mips_r4k.c
    trunk/hw/musicpal.c
    trunk/hw/nseries.c
    trunk/hw/palm.c
    trunk/hw/pc.c
    trunk/hw/ppc405_boards.c
    trunk/hw/ppc_chrp.c
    trunk/hw/ppc_oldworld.c
    trunk/hw/ppc_prep.c
    trunk/hw/r2d.c
    trunk/hw/realview.c
    trunk/hw/shix.c
    trunk/hw/spitz.c
    trunk/hw/stellaris.c
    trunk/hw/sun4m.c
    trunk/hw/sun4u.c
    trunk/hw/tosa.c
    trunk/hw/versatilepb.c
    trunk/vl.c

Modified: trunk/hw/an5206.c
===================================================================
--- trunk/hw/an5206.c   2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/an5206.c   2008-10-07 20:39:39 UTC (rev 5443)
@@ -92,4 +92,5 @@
     .desc = "Arnewsh 5206",
     .init = an5206_init,
     .ram_require = 512,
+    .max_cpus = 1,
 };

Modified: trunk/hw/boards.h
===================================================================
--- trunk/hw/boards.h   2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/boards.h   2008-10-07 20:39:39 UTC (rev 5443)
@@ -18,6 +18,7 @@
     ram_addr_t ram_require;
     int nodisk_ok;
     int use_scsi;
+    int max_cpus;
     struct QEMUMachine *next;
 } QEMUMachine;
 

Modified: trunk/hw/dummy_m68k.c
===================================================================
--- trunk/hw/dummy_m68k.c       2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/dummy_m68k.c       2008-10-07 20:39:39 UTC (rev 5443)
@@ -66,4 +66,5 @@
     .name = "dummy",
     .desc = "Dummy board",
     .init = dummy_m68k_init,
+    .max_cpus = 1,
 };

Modified: trunk/hw/etraxfs.c
===================================================================
--- trunk/hw/etraxfs.c  2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/etraxfs.c  2008-10-07 20:39:39 UTC (rev 5443)
@@ -145,4 +145,5 @@
     .desc = "Bare ETRAX FS board",
     .init = bareetraxfs_init,
     .ram_require = 0x8000000,
+    .max_cpus = 1,
 };

Modified: trunk/hw/gumstix.c
===================================================================
--- trunk/hw/gumstix.c  2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/gumstix.c  2008-10-07 20:39:39 UTC (rev 5443)
@@ -126,6 +126,7 @@
     .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 @@
     .desc = "Gumstix Verdex (PXA270)",
     .init = verdex_init,
     .ram_require = (0x12000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/integratorcp.c
===================================================================
--- trunk/hw/integratorcp.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/integratorcp.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -544,4 +544,5 @@
     .desc = "ARM Integrator/CP (ARM926EJ-S)",
     .init = integratorcp_init,
     .ram_require = 0x100000,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mainstone.c
===================================================================
--- trunk/hw/mainstone.c        2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mainstone.c        2008-10-07 20:39:39 UTC (rev 5443)
@@ -149,4 +149,5 @@
     .init = mainstone_init,
     .ram_require = (MAINSTONE_RAM + MAINSTONE_ROM + 2 * MAINSTONE_FLASH +
                    PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mcf5208.c
===================================================================
--- trunk/hw/mcf5208.c  2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mcf5208.c  2008-10-07 20:39:39 UTC (rev 5443)
@@ -309,4 +309,5 @@
     .desc = "MCF5206EVB",
     .init = mcf5208evb_init,
     .ram_require = 16384,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mips_jazz.c
===================================================================
--- trunk/hw/mips_jazz.c        2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mips_jazz.c        2008-10-07 20:39:39 UTC (rev 5443)
@@ -278,6 +278,7 @@
     .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 @@
     .init = mips_pica61_init,
     .ram_require = MAGNUM_BIOS_SIZE + VGA_RAM_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mips_malta.c
===================================================================
--- trunk/hw/mips_malta.c       2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mips_malta.c       2008-10-07 20:39:39 UTC (rev 5443)
@@ -950,4 +950,5 @@
     .init = mips_malta_init,
     .ram_require = VGA_RAM_SIZE + BIOS_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mips_mipssim.c
===================================================================
--- trunk/hw/mips_mipssim.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mips_mipssim.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -196,4 +196,5 @@
     .init = mips_mipssim_init,
     .ram_require = BIOS_SIZE + VGA_RAM_SIZE /* unused */,
     .nodisk_ok = 1,
+    .max_cpus = 1,
 };

Modified: trunk/hw/mips_r4k.c
===================================================================
--- trunk/hw/mips_r4k.c 2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/mips_r4k.c 2008-10-07 20:39:39 UTC (rev 5443)
@@ -287,4 +287,5 @@
     .init = mips_r4k_init,
     .ram_require = VGA_RAM_SIZE + BIOS_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 1,
 };

Modified: trunk/hw/musicpal.c
===================================================================
--- trunk/hw/musicpal.c 2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/musicpal.c 2008-10-07 20:39:39 UTC (rev 5443)
@@ -1513,4 +1513,5 @@
     .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,
 };

Modified: trunk/hw/nseries.c
===================================================================
--- trunk/hw/nseries.c  2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/nseries.c  2008-10-07 20:39:39 UTC (rev 5443)
@@ -1408,6 +1408,7 @@
     .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 @@
     .desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)",
     .init = n810_init,
     .ram_require = (0x08000000 + 0x00010000 + OMAP242X_SRAM_SIZE) | 
RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/palm.c
===================================================================
--- trunk/hw/palm.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/palm.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -286,4 +286,5 @@
     .desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)",
     .init = palmte_init,
     .ram_require = (0x02000000 + 0x00800000 + OMAP15XX_SRAM_SIZE) | 
RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/pc.c
===================================================================
--- trunk/hw/pc.c       2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/pc.c       2008-10-07 20:39:39 UTC (rev 5443)
@@ -1097,6 +1097,7 @@
     .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 @@
     .desc = "ISA-only PC",
     .init = pc_init_isa,
     .ram_require = VGA_RAM_SIZE + PC_MAX_BIOS_SIZE,
+    .max_cpus = 1,
 };

Modified: trunk/hw/ppc405_boards.c
===================================================================
--- trunk/hw/ppc405_boards.c    2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/ppc405_boards.c    2008-10-07 20:39:39 UTC (rev 5443)
@@ -359,6 +359,7 @@
     .desc = "ref405ep",
     .init = ref405ep_init,
     .ram_require = (128 * 1024 * 1024 + 4096 + 512 * 1024 + BIOS_SIZE) | 
RAMSIZE_FIXED,
+    .max_cpus = 1,
 };
 
 /*****************************************************************************/

Modified: trunk/hw/ppc_chrp.c
===================================================================
--- trunk/hw/ppc_chrp.c 2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/ppc_chrp.c 2008-10-07 20:39:39 UTC (rev 5443)
@@ -335,4 +335,5 @@
     .desc = "Mac99 based PowerMAC",
     .init = ppc_core99_init,
     .ram_require = BIOS_SIZE + VGA_RAM_SIZE,
+    .max_cpus = 1,
 };

Modified: trunk/hw/ppc_oldworld.c
===================================================================
--- trunk/hw/ppc_oldworld.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/ppc_oldworld.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -370,4 +370,5 @@
     .desc = "Heathrow based PowerMAC",
     .init = ppc_heathrow_init,
     .ram_require = BIOS_SIZE + VGA_RAM_SIZE,
+    .max_cpus = 1,
 };

Modified: trunk/hw/ppc_prep.c
===================================================================
--- trunk/hw/ppc_prep.c 2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/ppc_prep.c 2008-10-07 20:39:39 UTC (rev 5443)
@@ -762,4 +762,5 @@
     .desc = "PowerPC PREP platform",
     .init = ppc_prep_init,
     .ram_require = BIOS_SIZE + VGA_RAM_SIZE,
+    .max_cpus = 1,
 };

Modified: trunk/hw/r2d.c
===================================================================
--- trunk/hw/r2d.c      2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/r2d.c      2008-10-07 20:39:39 UTC (rev 5443)
@@ -168,4 +168,5 @@
     .desc = "r2d-plus board",
     .init = r2d_init,
     .ram_require = SDRAM_SIZE | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/realview.c
===================================================================
--- trunk/hw/realview.c 2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/realview.c 2008-10-07 20:39:39 UTC (rev 5443)
@@ -202,4 +202,5 @@
     .init = realview_init,
     .ram_require = 0x1000,
     .use_scsi = 1,
+    .max_cpus = 1,
 };

Modified: trunk/hw/shix.c
===================================================================
--- trunk/hw/shix.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/shix.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -112,4 +112,5 @@
     .desc = "shix card",
     .init = shix_init,
     .ram_require = (0x00004000 + 0x01000000 + 0x01000000) | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/spitz.c
===================================================================
--- trunk/hw/spitz.c    2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/spitz.c    2008-10-07 20:39:39 UTC (rev 5443)
@@ -1014,6 +1014,7 @@
     .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 @@
     .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 @@
     .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 @@
     .desc = "Terrier PDA (PXA270)",
     .init = terrier_init,
     .ram_require = SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + 
RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/stellaris.c
===================================================================
--- trunk/hw/stellaris.c        2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/stellaris.c        2008-10-07 20:39:39 UTC (rev 5443)
@@ -1417,6 +1417,7 @@
     .desc = "Stellaris LM3S811EVB",
     .init = lm3s811evb_init,
     .ram_require = (64 * 1024 + 8 * 1024) | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };
 
 QEMUMachine lm3s6965evb_machine = {
@@ -1424,4 +1425,5 @@
     .desc = "Stellaris LM3S6965EVB",
     .init = lm3s6965evb_init,
     .ram_require = (256 * 1024 + 64 * 1024) | RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/sun4m.c
===================================================================
--- trunk/hw/sun4m.c    2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/sun4m.c    2008-10-07 20:39:39 UTC (rev 5443)
@@ -1291,6 +1291,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss10_machine = {
@@ -1300,6 +1301,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss600mp_machine = {
@@ -1309,6 +1311,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss20_machine = {
@@ -1318,6 +1321,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss2_machine = {
@@ -1327,6 +1331,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine voyager_machine = {
@@ -1336,6 +1341,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss_lx_machine = {
@@ -1345,6 +1351,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss4_machine = {
@@ -1354,6 +1361,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine scls_machine = {
@@ -1363,6 +1371,7 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine sbook_machine = {
@@ -1372,6 +1381,7 @@
     .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 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine ss2000_machine = {
@@ -1629,4 +1640,5 @@
     .ram_require = PROM_SIZE_MAX + TCX_SIZE,
     .nodisk_ok = 1,
     .use_scsi = 1,
+    .max_cpus = 16,
 };

Modified: trunk/hw/sun4u.c
===================================================================
--- trunk/hw/sun4u.c    2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/sun4u.c    2008-10-07 20:39:39 UTC (rev 5443)
@@ -589,6 +589,7 @@
     .init = sun4u_init,
     .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine sun4v_machine = {
@@ -597,6 +598,7 @@
     .init = sun4v_init,
     .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 16,
 };
 
 QEMUMachine niagara_machine = {
@@ -605,4 +607,5 @@
     .init = niagara_init,
     .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
     .nodisk_ok = 1,
+    .max_cpus = 16,
 };

Modified: trunk/hw/tosa.c
===================================================================
--- trunk/hw/tosa.c     2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/tosa.c     2008-10-07 20:39:39 UTC (rev 5443)
@@ -123,4 +123,5 @@
     .desc = "Tosa PDA (PXA255)",
     .init = tosa_init,
     .ram_require = TOSA_RAM + TOSA_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED,
+    .max_cpus = 1,
 };

Modified: trunk/hw/versatilepb.c
===================================================================
--- trunk/hw/versatilepb.c      2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/hw/versatilepb.c      2008-10-07 20:39:39 UTC (rev 5443)
@@ -320,6 +320,7 @@
     .desc = "ARM Versatile/PB (ARM926EJ-S)",
     .init = vpb_init,
     .use_scsi = 1,
+    .max_cpus = 1,
 };
 
 QEMUMachine versatileab_machine = {
@@ -327,4 +328,5 @@
     .desc = "ARM Versatile/AB (ARM926EJ-S)",
     .init = vab_init,
     .use_scsi = 1,
+    .max_cpus = 1,
 };

Modified: trunk/vl.c
===================================================================
--- trunk/vl.c  2008-10-07 20:34:35 UTC (rev 5442)
+++ trunk/vl.c  2008-10-07 20:39:39 UTC (rev 5443)
@@ -213,13 +213,6 @@
 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 @@
                 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 @@
         }
     }
 
+    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";






reply via email to

[Prev in Thread] Current Thread [Next in Thread]